Simulating Transmission and Emission Spectroscopy¶
Simulate exoplanet transmission and/or emission spectroscopy without using the coronagraph routines. This uses the same telesope and detector parameters as the coronagraph model, but does not suppress the star’s light. As a result, stellar photons dominate the noise budget.
For transmission spectroscopy calculations use TransitNoise
,
and for emission spectroscopy use EclipseNoise
. You may also get an
example transmission and emission spectrum of the Earth by calling
get_earth_trans_spectrum()
.
-
class
coronagraph.transits.
EclipseNoise
(tdur=3432.0, telescope=<coronagraph.teleplanstar.Telescope object>, planet=<coronagraph.teleplanstar.Planet object>, star=<coronagraph.teleplanstar.Star object>, ntran=1, nout=1, wantsnr=1000.0, NIR=True, THERMAL=True, GROUND=False, vod=False, IMAGE=False)¶ Simulate exoplanet secondary eclipse emission spectroscopy with a next-generation telescope.
Parameters: - telescope (Telescope) – Initialized object containing
Telescope
parameters - planet (Planet) – Initialized object containing
Planet
parameters - star (Star) – Initialized object containing
Star
parameters - tdur (float) – Transit duration [s]
- ntran (float) – Number of transits/eclipses
- nout (float) – Number of out-of-eclipse transit durations to observe
- wantsnr (float, optional) – Desired signal-to-noise ratio in each pixel
- FIX_OWA (bool, optional) – Set to fix OWA at
OWA*lammin/D
, as would occur if lenslet array is limiting the OWA - COMPUTE_LAM (bool, optional) – Set to compute lo-res wavelength grid, otherwise the grid input as
variable
lam
is used - SILENT (bool, optional) – Set to suppress print statements
- NIR (bool, optional) – Re-adjusts pixel size in NIR, as would occur if a second instrument was designed to handle the NIR
- THERMAL (bool, optional) – Set to compute thermal photon counts due to telescope temperature
- GROUND (bool, optional) – Set to simulate ground-based observations through atmosphere
- vod (bool, optional) – “Valley of Death” red QE parameterization from Robinson et al. (2016)
-
run_count_rates
(lamhr=None, Fphr=None, Fshr=None)¶ Calculate the photon count rates and signal to noise on a secondary eclipse spectrum observation
Parameters: - lamhr (numpy.ndarray) – Wavelength [$mu$m]
- Fphr (numpy.ndarray) – Dayside exoplanet TOA flux spectrum [W/m$^2$/$mu$]
- Fshr (numpy.ndarray) – Stellar flux incident at the planet’s TOA [W/m$^2$/$mu$]
- run_count_rates() creates the following attributes for (Calling) –
- EclipseNoise instance (the) –
Variables: - lamhr (array) – Wavelength [$mu$m]
- Fphr (array) – Dayside exoplanet TOA flux spectrum [W/m$^2$/$mu$]
- Fshr (array) – Stellar flux incident at the planet’s TOA [W/m$^2$/$mu$]
- cs (array) – Stellar photon count rate [photons/s]
- cback (array) – Background photon count rate [photons/s]
- cz (array) – Zodi photon count rate [photons/s]
- cez (array) – Exo-zodi photon count rate [photons/s]
- cth (array) – Thermal photon count rate [photons/s]
- cD (array) – Dark current photon count rate [photons/s]
- cR (array) – Read noise photon count rate [photons/s]
- cmiss (array) – Occulted stellar photon count rate [photons/s]
- SNR1 (array) – S/N for one eclipse
- SNRn (array) – S/N for
ntran
eclipses - tSNR (array) – Exposure time to
wantsnr
[s] - nSNR (array) – Number of eclipses to
wantsnr
- lam (array) – Observed wavelength grid [$mu$m]
- dlam (array) – Observed wavelength grid widths [$mu$m]
- FpFslr (array) – Low-res planet/star flux ratio
- FpFshr (array) – High-res planetr/star flux ratio
-
make_fake_data
()¶ Make a fake dataset by sampling from a Gaussian.
Variables: - SNRn (array) – S/N in
ntran
eclipses - obs (array) – Observed emission specrum with noise
- sig (array) – Observed uncertainties on emission spectrum
- SNRn (array) – S/N in
-
recalc_wantsnr
(wantsnr=None)¶ Recalculate the time and number of eclipses required to achieve a user specified SNR via wantsnr.
Variables: - tSNR (array) – Exposure time to
wantsnr
[s] - nSNR (array) – Number of eclipses to
wantsnr
- tSNR (array) – Exposure time to
-
plot_spectrum
(SNR_threshold=0.0, Nsig=None, ax0=None, err_kws={'alpha': 1, 'c': 'k', 'fmt': '.'}, plot_kws={'alpha': 0.5, 'c': 'C4', 'lw': 1.0}, draw_box=True)¶ Plot noised emission spectrum.
Parameters: - SNR_threshold (float) – Threshold SNR below which do not plot
- Nsig (float) – Number of standard deviations about median observed points to set yaxis limits
- ax0 (matplotlib.axes) – Optional axis to provide
- err_kws (dic) – Keyword arguments for errorbar
- plot_kws (dic) – Keyword arguments for plot
- draw_box (bool) – Draw important quantities in a box?
Returns: - fig (matplotlib.figure.Figure) – Returns a figure if ax0 is None
- ax (matplotlib.axes) – Returns an axis if ax0 is None
Note
Only returns fig and ax is
ax0 is None
-
plot_SNRn
(ax0=None, plot_kws={'ls': 'steps-mid'})¶ Plot the S/N on the Eclipse Depth as a function of wavelength.
Parameters: - ax0 (matplotlib.axes) – Optional axis to provide
- plot_kws (dic) – Keyword arguments for plot
Returns: - fig (matplotlib.figure.Figure) – Returns a figure if ax0 is None
- ax (matplotlib.axes) – Returns an axis if ax0 is None
Note
Only returns fig and ax is
ax0 is None
-
plot_ntran_to_wantsnr
(ax0=None, plot_kws={'alpha': 1.0, 'ls': 'steps-mid'})¶ Plot the number of eclipses to get a SNR on the eclipse depth as a function of wavelength.
Parameters: - ax0 (matplotlib.axes) – Optional axis to provide
- plot_kws (dic) – Keyword arguments for plot
Returns: - fig (matplotlib.figure.Figure) – Returns a figure if ax0 is None
- ax (matplotlib.axes) – Returns an axis if ax0 is None
Note
Only returns fig and ax is
ax0 is None
-
plot_time_to_wantsnr
(ax0=None, plot_kws={'alpha': 1.0, 'ls': 'steps-mid'})¶ Plot the time to get a SNR on the eclipse depth as a function of wavelength.
Parameters: - ax0 (matplotlib.axes) – Optional axis to provide
- plot_kws (dic) – Keyword arguments for plot
Returns: - fig (matplotlib.figure.Figure) – Returns a figure if ax0 is None
- ax (matplotlib.axes) – Returns an axis if ax0 is None
Note
Only returns fig and ax is
ax0 is None
-
plot_count_rates
(ax0=None)¶ Plot the photon count rate for all sources.
Parameters: ax0 (matplotlib.axes) – Optional axis to provide Returns: - fig (matplotlib.figure.Figure) – Returns a figure if ax0 is None
- ax (matplotlib.axes) – Returns an axis if ax0 is None
Note
Only returns fig and ax is
ax0 is None
- telescope (Telescope) – Initialized object containing
-
class
coronagraph.transits.
TransitNoise
(tdur=3432.0, telescope=<coronagraph.teleplanstar.Telescope object>, planet=<coronagraph.teleplanstar.Planet object>, star=<coronagraph.teleplanstar.Star object>, ntran=1, nout=1, wantsnr=1000.0, NIR=True, THERMAL=True, GROUND=False, vod=False, IMAGE=False)¶ Simulate exoplanet transit transmission spectroscopy with a next-generation telescope.
Parameters: - telescope (Telescope) – Initialized object containing
Telescope
parameters - planet (Planet) – Initialized object containing
Planet
parameters - star (Star) – Initialized object containing
Star
parameters - tdur (float) – Transit duration [s]
- ntran (float) – Number of transits
- nout (float) – Number of out-of-transit transit durations to observe
- wantsnr (float, optional) – Desired signal-to-noise ratio in each pixel
- FIX_OWA (bool, optional) – Set to fix OWA at
OWA*lammin/D
, as would occur if lenslet array is limiting the OWA - COMPUTE_LAM (bool, optional) – Set to compute lo-res wavelength grid, otherwise the grid input as
variable
lam
is used - SILENT (bool, optional) – Set to suppress print statements
- NIR (bool, optional) – Re-adjusts pixel size in NIR, as would occur if a second instrument was designed to handle the NIR
- THERMAL (bool, optional) – Set to compute thermal photon counts due to telescope temperature
- GROUND (bool, optional) – Set to simulate ground-based observations through atmosphere
- vod (bool, optional) – “Valley of Death” red QE parameterization from Robinson et al. (2016)
-
run_count_rates
(lamhr=None, tdhr=None, Fshr=None)¶ Calculate the photon count rates and signal to noise on a transmission spectrum observation
Parameters: - lamhr (numpy.ndarray) – Wavelength [$mu$m]
- tdhr (numpy.ndarray) – Transit Depth $(Rp/Rs)^2$
- Fshr (numpy.ndarray) – Flux density incident at the planet’s TOA [W/m$^2$/$mu$]
- run_count_rates() creates the following attributes for (Calling) –
- TransitNoise instance (the) –
Variables: - lamhr (array) – Wavelength [$mu$m]
- tdhr (array) – Transit Depth $(Rp/Rs)^2$
- Fshr (array) – Flux density incident at the planet’s TOA [W/m$^2$/$mu$]
- cs (array) – Stellar photon count rate [photons/s]
- cback (array) – Background photon count rate [photons/s]
- cz (array) – Zodi photon count rate [photons/s]
- cez (array) – Exo-zodi photon count rate [photons/s]
- cth (array) – Thermal photon count rate [photons/s]
- cD (array) – Dark current photon count rate [photons/s]
- cR (array) – Read noise photon count rate [photons/s]
- cmiss (array) – Occulted stellar photon count rate [photons/s]
- SNR1 (array) – S/N for one transit
- SNRn (array) – S/N for
ntran
transits - tSNR (array) – Exposure time to
wantsnr
[s] - nSNR (array) – Number of transits to
wantsnr
- lam (array) – Observed wavelength grid [$mu$m]
- dlam (array) – Observed wavelength grid widths [$mu$m]
- RpRs2 (array) – Low-res transit depth
-
make_fake_data
()¶ Make a fake dataset by sampling from a Gaussian.
Variables: - SNRn (array) – S/N in
ntran
transits - obs (array) – Observed transit depth with noise
- sig (array) – Observed uncertainties on transit depth
- SNRn (array) – S/N in
-
recalc_wantsnr
(wantsnr=None)¶ Recalculate the time and number of transits required to achieve a user specified SNR via wantsnr.
Variables: - tSNR (array) – Exposure time to
wantsnr
[s] - nSNR (array) – Number of transits to
wantsnr
- tSNR (array) – Exposure time to
-
plot_spectrum
(SNR_threshold=1.0, Nsig=6.0, ax0=None, err_kws={'alpha': 1, 'c': 'k', 'fmt': '.'}, plot_kws={'alpha': 0.5, 'c': 'C4', 'lw': 1.0}, draw_box=True)¶ Plot noised transmission spectrum.
Parameters: - SNR_threshold (float) – Threshold SNR below which do not plot
- Nsig (float) – Number of standard deviations about median observed points to set yaxis limits
- ax0 (matplotlib.axes) – Optional axis to provide
- err_kws (dic) – Keyword arguments for errorbar
- plot_kws (dic) – Keyword arguments for plot
- draw_box (bool) – Draw important quantities in a box?
Returns: - fig (matplotlib.figure.Figure) – Returns a figure if ax0 is None
- ax (matplotlib.axes) – Returns an axis if ax0 is None
Note
Only returns fig and ax is
ax0 is None
-
plot_SNRn
(ax0=None, plot_kws={'ls': 'steps-mid'})¶ Plot the S/N on the Transit Depth as a function of wavelength.
Parameters: - ax0 (matplotlib.axes) – Optional axis to provide
- plot_kws (dic) – Keyword arguments for plot
Returns: - fig (matplotlib.figure.Figure) – Returns a figure if ax0 is None
- ax (matplotlib.axes) – Returns an axis if ax0 is None
Note
Only returns fig and ax is
ax0 is None
-
plot_ntran_to_wantsnr
(ax0=None, plot_kws={'alpha': 1.0, 'ls': 'steps-mid'})¶ Plot the number of transits to get a SNR on the transit depth as a function of wavelength.
Parameters: - ax0 (matplotlib.axes) – Optional axis to provide
- plot_kws (dic) – Keyword arguments for plot
Returns: - fig (matplotlib.figure.Figure) – Returns a figure if ax0 is None
- ax (matplotlib.axes) – Returns an axis if ax0 is None
Note
Only returns fig and ax is
ax0 is None
-
plot_time_to_wantsnr
(ax0=None, plot_kws={'alpha': 1.0, 'ls': 'steps-mid'})¶ Plot the time to get a SNR on the transit depth as a function of wavelength.
Parameters: - ax0 (matplotlib.axes) – Optional axis to provide
- plot_kws (dic) – Keyword arguments for plot
Returns: - fig (matplotlib.figure.Figure) – Returns a figure if ax0 is None
- ax (matplotlib.axes) – Returns an axis if ax0 is None
Note
Only returns fig and ax is
ax0 is None
-
plot_count_rates
(ax0=None)¶ Plot the photon count rate for all sources.
Parameters: ax0 (matplotlib.axes) – Optional axis to provide Returns: - fig (matplotlib.figure.Figure) – Returns a figure if ax0 is None
- ax (matplotlib.axes) – Returns an axis if ax0 is None
Note
Only returns fig and ax is
ax0 is None
- telescope (Telescope) – Initialized object containing
-
coronagraph.transits.
get_earth_trans_spectrum
()¶ Get the transmission spectrum of the Earth around the Sun.
Returns: - lam (numpy.ndarray) – Wavelength grid [um]
- tdepth (numpy.ndarray) – Transit depth (Rp/Rs)^2
- fplan (numpy.ndarray) – TOA planet flux [W/m^2/um]
- fstar (numpy.ndarray) – Stellar flux at planet [W/m^2/um]