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]