Noise Routines¶
Routines for simulating coronagraph model noise terms are listed below. These
functions are used within the coronagraph.CoronagraphNoise and
coronagraph.count_rates() functions, but are provided here for
independent use.
The most important functions are the individual photon count rate terms due to
different photon sources. This including photons from the planet cplan(),
from zodiacal light czodi() and exo-zodiacal light cezodi(), from
coronagraph speckles cspeck(), from dark current cdark() and read
noise cread(), from thermal emission from the telescope mirror
ctherm(), and from clock-induced charge ccic().
Optional ground-based telescope noise modeling includes extra terms for the
emission from Earth’s atmosphere incident on the telescope,
ctherm_earth() (also see get_sky_flux()), and an additional
throughput term due to atmospheric extinction set_atmos_throughput().
Finally, there are some extra convenience functions:
Calculate the fraction of Airy power contained in square or circular aperture
using f_airy();
Construct a wavelength grid by specifying either a spectral resolving power or
a fixed wavelength bandwidth using construct_lam();
Calculate the Lambertian Phase Function of a planet from the phase angle using
lambertPhaseFunction();
Calculate the Planck blackbody radiance given temperature and wavelength
using planck().
-
coronagraph.noise_routines.Fstar(lam, Teff, Rs, d, AU=False)¶ Stellar flux function
- Parameters
lam (float or array-like) – Wavelength [um]
Teff (float) – Stellar effective temperature [K]
Rs – Stellar radius [solar radii]
d – Distance to star [pc]
AU (bool, optional) – Flag that indicates d is in AU
- Returns
Fstar – Stellar flux [W/m**2/um]
- Return type
float or array-like
-
coronagraph.noise_routines.Fplan(A, Phi, Fstar, Rp, d, AU=False)¶ Planetary flux function
- Parameters
A (float or array-like) – Planetary geometric albedo
Phi (float) – Planetary phase function
Fstar (float or array-like) – Stellar flux [W/m**2/um]
Rp (float) – Planetary radius [Earth radii]
d (float) – Distance to star [pc]
AU (bool, optional) – Flag that indicates d is in AU
- Returns
Fplan – Planetary flux [W/m**2/um]
- Return type
float or array-like
-
coronagraph.noise_routines.FpFs(A, Phi, Rp, r)¶ Planet-star flux ratio (Equation 11 from Robinson et al. 2016).
\(\frac{{F}_{p,\lambda }}{{F}_{{\rm{s}},\lambda }}=A{\rm{\Phi }}(\alpha ){\left(\displaystyle \frac{{R}_{{\rm{p}}}}{r}\right)}^{2}\)
- Parameters
A (float or array-like) – Planetary geometric albedo
Phi (float) – Planetary phase function
Rp (float) – Planetary radius [Earth radii]
r (float) – Planetary orbital semi-major axis [AU]
- Returns
FpFs – Planet-star flux ratio
- Return type
float or array-like
-
coronagraph.noise_routines.cstar(q, fpa, T, lam, dlam, Fstar, D)¶ Stellar photon count rate (not used with coronagraph)
- Parameters
q (float or array-like) – Quantum efficiency
fpa (float) – Fraction of planetary light that falls within photometric aperture
T (float) – Telescope and system throughput
lam (float or array-like) – Wavelength [um]
dlam (float or array-like) – Spectral element width [um]
Fplan (float or array-like) – Planetary flux [W/m**2/um]
D (float) – Telescope diameter [m]
- Returns
cs – Stellar photon count rate [1/s]
- Return type
float or array-like
-
coronagraph.noise_routines.cplan(q, fpa, T, lam, dlam, Fplan, D)¶ Exoplanetary photon count rate (Equation 12 from Robinson et al. 2016)
\({c}_{{\rm{p}}}=\pi {{qf}}_{\mathrm{pa}}{ \mathcal T }\displaystyle \frac{\lambda }{{hc}}{F}_{{\rm{p}},\lambda }(d)\Delta \lambda {\left(\displaystyle \frac{D}{2}\right)}^{2}\)
- Parameters
q (float or array-like) – Quantum efficiency
fpa (float) – Fraction of planetary light that falls within photometric aperture
T (float) – Telescope and system throughput
lam (float or array-like) – Wavelength [um]
dlam (float or array-like) – Spectral element width [um]
Fplan (float or array-like) – Planetary flux [W/m**2/um]
D (float) – Telescope diameter [m]
- Returns
cplan – Exoplanetary photon count rate [1/s]
- Return type
float or array-like
-
coronagraph.noise_routines.czodi(q, X, T, lam, dlam, D, Mzv, SUN=False, CIRC=False)¶ Zodiacal light count rate (Equation 15 from Robinson et al. 2016)
\({c}_{{\rm{z}}}=\pi q{ \mathcal T }{\rm{\Omega }}\Delta \lambda \displaystyle \frac{\lambda }{{hc}}{\left(\displaystyle \frac{D}{2}\right)}^{2}\displaystyle \frac{{F}_{\odot ,\lambda }(1\;{\rm{AU}})}{{F}_{\odot ,V}(1\;{\rm{AU}})}\;{F}_{0,V}{10}^{-{M}_{{\rm{z}},V}/2.5}\)
- Parameters
q (float or array-like) – Quantum efficiency
X (float) – Size of photometric aperture (lambda/D)
T (float) – Telescope and system throughput
lam (float or array-like) – Wavelength [um]
dlam (float or array-like) – Spectral element width [um]
D (float) – Telescope diameter [m]
MzV (float) – Zodiacal light surface brightness [mag/arcsec**2]
SUN (bool, optional) – Set to use solar spectrum (Not Implemented)
CIRC (bool, optional) – Set to use a circular aperture
- Returns
czodi – Zodiacal light photon count rate [1/s]
- Return type
float or array-like
-
coronagraph.noise_routines.cezodi(q, X, T, lam, dlam, D, r, Fstar, Nez, Mezv, SUN=False, CIRC=False)¶ Exozodiacal light count rate (Equation 18 from Robinson et al. 2016)
\({c}_{\mathrm{ez}} = \pi q{ \mathcal T }{X}^{2}\displaystyle \frac{{\lambda }^{4}}{4{hc}{ \mathcal R }}{\left(\displaystyle \frac{1{\rm{AU}}}{r}\right)}^{2}\displaystyle \frac{{F}_{{\rm{s}},\lambda }(1\;{\rm{AU}})}{{F}_{{\rm{s}},V}(1\;{\rm{AU}})}\\ \times \displaystyle \frac{{F}_{{\rm{s}},V}(1\;{\rm{AU}})}{{F}_{\odot ,V}(1\;{\rm{AU}})}{N}_{\mathrm{ez}}{F}_{0,V}{10}^{-{M}_{\mathrm{ez},V}/2.5}\)
- Parameters
q (float or array-like) – Quantum efficiency
X (float) – Size of photometric aperture (lambda/D)
T (float) – System throughput
lam (float or array-like) – Wavelength [um]
dlam (float or array-like) – Spectral element width [um]
D (float) – Telescope diameter [m]
r (float) – Planetary orbital semi-major axis [AU]
Fstar (array-like) – Host star spectrum at 1 au (W/m**2/um)
Nez (float) – Number of exozodis in exoplanetary disk
MezV (float) – Exozodiacal light surface brightness [mag/arcsec**2]
SUN (bool, optional) – Set to use solar spectrum (Not Implemented)
CIRC (bool, optional) – Set to use a circular aperture
- Returns
cezodi – Exozodiacal light photon count rate [1/s]
- Return type
float or array-like
-
coronagraph.noise_routines.cspeck(q, T, C, lam, dlam, Fstar, D)¶ Speckle count rate (Equation 19 from Robinson et al. 2016)
\({c}_{\mathrm{sp}} = \pi q{ \mathcal T }C\Delta \lambda {F}_{{\rm{s}},\lambda }(d)\displaystyle \frac{\lambda }{{hc}}{\left(\displaystyle \frac{D}{2}\right)}^{2}\)
- Parameters
q (float or array-like) – Quantum efficiency
T (float) – System throughput
C (float, optional) – Coronagraph design contrast
lam (float or array-like) – Wavelength [um]
dlam (float or array-like) – Spectral element width [um]
D (float) – Telescope diameter [m]
Fstar (float or array-like) – Host star spectrum at distance of planet (TOA) [W/m**2/um]
- Returns
cspeck – Speckle photon count rate [1/s]
- Return type
float or array-like
-
coronagraph.noise_routines.cdark(De, X, lam, D, theta, DNhpix, IMAGE=False, CIRC=False)¶ Dark current photon count rate
- Parameters
De (float, optional) – Dark current [counts/s]
X (float, optional) – Width of photometric aperture ( * lambda / diam)
lam (float or array-like) – Wavelength [um]
D (float) – Telescope diameter [m]
theta – Angular size of lenslet or pixel [arcsec**2]
DNHpix (float, optional) – Number of horizontal/spatial pixels for dispersed spectrum
IMAGE (bool, optional) – Set to indicate imaging mode (not IFS)
CIRC (bool, optional) – Set to use a circular aperture
- Returns
Dark current photon count rate (s**-1)
- Return type
cdark
-
coronagraph.noise_routines.cread(Re, X, lam, D, theta, DNhpix, Dtmax, IMAGE=False, CIRC=False)¶ Read noise count rate (assuming detector has a maximum exposure time)
- Parameters
Re (float or array-like) – Read noise counts per pixel
X (float, optional) – Width of photometric aperture ( * lambda / diam)
lam (float or array-like) – Wavelength [um]
D (float) – Telescope diameter [m]
theta – Angular size of lenslet or pixel [arcsec**2]
Dtmax (float, optional) – Detector maximum exposure time [hours]
IMAGE (bool, optional) – Set to indicate imaging mode (not IFS)
CIRC (bool, optional) – Set to use a circular aperture
- Returns
cread – Read noise photon count rate (s**-1)
- Return type
float or array-like
-
coronagraph.noise_routines.ccic(Rc, cscene, X, lam, D, theta, DNhpix, Dtmax, IMAGE=False, CIRC=False)¶ Clock induced charge count rate
- Parameters
Rc (float or array-like) – Clock induced charge counts/pixel/photon
cscene (float or array-like) – Photon count rate of brightest pixel in the scene [counts/s]
X (float, optional) – Width of photometric aperture ( * lambda / diam)
lam (float or array-like) – Wavelength [um]
D (float) – Telescope diameter [m]
theta – Angular size of lenslet or pixel [arcsec**2]
Dtmax (float, optional) – Detector maximum exposure time [hours]
IMAGE (bool, optional) – Set to indicate imaging mode (not IFS)
CIRC (bool, optional) – Set to use a circular aperture
- Returns
Clock induced charge count rate [1/s]
- Return type
ccic
-
coronagraph.noise_routines.f_airy(X, CIRC=False)¶ Fraction of Airy power contained in square or circular aperture
- Parameters
X (float, optional) – Width of photometric aperture ( * lambda / diam)
CIRC (bool, optional) – Set to use a circular aperture
- Returns
f_airy – Fraction of planetary light that falls within photometric aperture X*lambda/D
- Return type
float
-
coronagraph.noise_routines.ctherm(q, X, T, lam, dlam, D, Tsys, emis, CIRC=False)¶ Telescope thermal count rate
- Parameters
q (float or array-like) – Quantum efficiency
X (float, optional) – Width of photometric aperture ( * lambda / diam)
T (float) – System throughput
lam (float or array-like) – Wavelength [um]
dlam (float or array-like) – Spectral element width [um]
D (float) – Telescope diameter [m]
Tsys (float) – Telescope mirror temperature [K]
emis (float) – Effective emissivity for the observing system (of order unity)
CIRC (bool, optional) – Set to use a circular aperture
- Returns
ctherm – Telescope thermal photon count rate [1/s]
- Return type
float or array-like
-
coronagraph.noise_routines.ctherm_earth(q, X, T, lam, dlam, D, Itherm, CIRC=False)¶ Earth atmosphere thermal count rate
- Parameters
q (float or array-like) – Quantum efficiency
X (float, optional) – Width of photometric aperture ( * lambda / diam)
T (float) – System throughput
lam (float or array-like) – Wavelength [um]
dlam (float or array-like) – Spectral element width [um]
D (float) – Telescope diameter [m]
Itherm (float or array-like) – Earth thermal intensity [W/m**2/um/sr]
CIRC (bool, optional) – Set to use a circular aperture
- Returns
cthe – Earth atmosphere thermal photon count rate [1/s]
- Return type
float or array-like
-
coronagraph.noise_routines.lambertPhaseFunction(alpha)¶ Calculate the Lambertian Phase Function from the phase angle,
\({{\rm{\Phi }}}_{{\rm{L}}}(\alpha )=\displaystyle \frac{\mathrm{sin}\alpha +(\pi -\alpha )\mathrm{cos}\alpha }{\pi }\)
- Parameters
alpha (float) – Planet phase angle [deg]
- Returns
Phi – Lambertian phase function
- Return type
float
-
coronagraph.noise_routines.construct_lam(lammin, lammax, Res=None, dlam=None)¶ Construct a wavelength grid by specifying either a resolving power (Res) or a bandwidth (dlam)
- Parameters
lammin (float) – Minimum wavelength [microns]
lammax (float) – Maximum wavelength [microns]
Res (float, optional) – Resolving power (lambda / delta-lambda)
dlam (float, optional) – Spectral element width for evenly spaced grid [microns]
- Returns
lam (float or array-like) – Wavelength [um]
dlam (float or array-like) – Spectral element width [um]
-
coronagraph.noise_routines.set_quantum_efficiency(lam, qe, NIR=False, qe_nir=0.9, vod=False)¶ Set instrumental quantum efficiency
- Parameters
lam (float or array-like) – Wavelength [um]
qe (float) – Detector quantum efficiency
NIR (bool, optional) – Use near-IR detector proporties
q_nir (float, optional) – NIR quantum efficiency
vod (bool, optional) – “Valley of Death” red QE parameterization from Robinson et al. (2016)
- Returns
q – Wavelength-dependent instrumental quantum efficiency
- Return type
numpy.array
-
coronagraph.noise_routines.set_dark_current(lam, De, lammax, Tdet, NIR=False, De_nir=0.001)¶ Set dark current grid as a function of wavelength
- Parameters
lam (array-like) – Wavelength grid [microns]
De (float) – Dark current count rate per pixel (s**-1)
lammax (float) – Maximum wavelength
Tdet (float) – Detector Temperature [K]
NIR (bool, optional) – Use near-IR detector proporties
De_nir (float, optional) – NIR minimum dark current count rate per pixel
- Returns
De – Dark current as a function of wavelength
- Return type
numpy.array
-
coronagraph.noise_routines.set_read_noise(lam, Re, NIR=False, Re_nir=2.0)¶ Set read noise grid as a function of wavelength
- Parameters
lam (array-like) – Wavelength grid [microns]
Re (float) – Read noise counts per pixel (s**-1)
NIR (bool, optional) – Use near-IR detector proporties
Re_nir (float, optional) – NIR read noise counts per pixel
- Returns
Re – Read noise as a function of wavelength
- Return type
numpy.array
-
coronagraph.noise_routines.set_lenslet(lam, lammin, diam, X, NIR=True, lammin_nir=1.0)¶ Set the angular size of the lenslet
- Parameters
lam (ndarray) – Wavelength grid
lammin (float) – Minimum wavelength
diam (float) – Telescope Diameter [m]
X (float) – Width of photometric aperture (
*lambda/diam)NIR (bool (optional)) – Use near-IR detector proporties
lammin_nir (float (optional)) – Wavelength min to use for NIR lenslet size
- Returns
theta – Angular size of lenslet
- Return type
numpy.array
-
coronagraph.noise_routines.set_throughput(lam, Tput, diam, sep, IWA, OWA, lammin, FIX_OWA=False, SILENT=False)¶ Set wavelength-dependent telescope throughput such that it is zero inside the IWA and outside the OWA.
- Parameters
lam (ndarray) – Wavelength grid
Tput (float) – Throughput
diam (float) – Telescope diameter [m]
sep (float) – Planet-star separation in radians
IWA (float) – Inner working angle
OWA (float) – Outer working angle
lammin (float) – Minimum wavelength
SILENT (bool, optional) – Suppress printing
- Returns
T – Wavelength-dependent throughput
- Return type
numpy.array
-
coronagraph.noise_routines.set_atmos_throughput(lam, dlam, convolve, plot=False)¶ Use pre-computed Earth atmospheric transmission to set throughput term for radiation through the atmosphere
- Parameters
lam (ndarray) – Wavelength grid
dlam (ndarray) – Wavelength bin width grid
convolve (func) – Function used to degrade/downbin spectrum
- Returns
Tatmos – Atmospheric throughput as a function of wavelength
- Return type
numpy.array
-
coronagraph.noise_routines.get_sky_flux()¶ Get the spectral flux density from the sky viewed at a ground-based telescope an an average night. This calculation comes from ESO SKYCALC and includes contributions from molecular emission of lower atmosphere, emission lines of upper atmosphere, and airglow/residual continuum, but neglects scattered moonlight, starlight, and zodi.
- Returns
lam_sky (numpy.array) – Wavelength grid [microns]
flux_sky (numpy.array) – Flux from the sky [W/m^2/um]
-
coronagraph.noise_routines.exptime_element(lam, cp, cn, wantsnr)¶ Calculate the exposure time (in hours) to get a specified signal-to-noise
- Parameters
lam (ndarray) – Wavelength grid
cp (ndarray) – Planetary photon count rate [s**-1]
cn (ndarray) – Noise photon count rate [s**-1]
wantsnr (float) – Signal-to-noise required in each spectral element
- Returns
DtSNR – Exposure time necessary to get specified SNR [hours]
- Return type
ndarray
-
coronagraph.noise_routines.planck(temp, wav)¶ Planck blackbody function
- Parameters
temp (float or array-like) – Temperature [K]
wav (float or array-like) – Wavelength [microns]
- Returns
- Return type
B_lambda [W/m^2/um/sr]