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]