From 5c5a146e0cd6466d99989c80c0e86f81cae06286 Mon Sep 17 00:00:00 2001 From: tcjansen Date: Thu, 8 Aug 2019 14:01:01 -0700 Subject: [PATCH 1/4] Initial commit --- .../synphot-measured-spec/requirements.txt | 5 + .../synphot-measured-spec.ipynb | 508 ++++++++++++++++++ 2 files changed, 513 insertions(+) create mode 100644 tutorials/notebooks/synphot-measured-spec/requirements.txt create mode 100644 tutorials/notebooks/synphot-measured-spec/synphot-measured-spec.ipynb diff --git a/tutorials/notebooks/synphot-measured-spec/requirements.txt b/tutorials/notebooks/synphot-measured-spec/requirements.txt new file mode 100644 index 000000000..54e7c0ce5 --- /dev/null +++ b/tutorials/notebooks/synphot-measured-spec/requirements.txt @@ -0,0 +1,5 @@ +synphot +astropy +astroquery +numpy +matplotlib \ No newline at end of file diff --git a/tutorials/notebooks/synphot-measured-spec/synphot-measured-spec.ipynb b/tutorials/notebooks/synphot-measured-spec/synphot-measured-spec.ipynb new file mode 100644 index 000000000..deb0b9bb8 --- /dev/null +++ b/tutorials/notebooks/synphot-measured-spec/synphot-measured-spec.ipynb @@ -0,0 +1,508 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# synphot: Predicting photometric fluxes of an object observed by SDSS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Authors\n", + "Tiffany Jansen, Brett Morris, Pey Lian Lim, & Erik Tollerud" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Objectives\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Keywords\n", + "synphot, synthetic photometry, astropy, astroquery, astronomy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "`synphot` is an astropy-affiliated package for creating synthetic photometry in Python. In this tutorial we will show how to use `synphot` to predict the photometric fluxes of a galaxy observed by SDSS. In particular, we will:\n", + "
    \n", + "
  1. Get the observed spectrum of our target from SDSS
  2. \n", + "
  3. Construct a source spectrum object
  4. \n", + "
  5. Create the bandpasses of observation
  6. \n", + "
  7. Combine the spectrum with the bandpass throughput and \"observe\"
  8. \n", + "
  9. Compare predicted flux to observed flux
  10. \n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "import astropy.units as u\n", + "from astropy.coordinates import SkyCoord\n", + "from astropy.utils.data import download_file\n", + "\n", + "from astroquery.sdss import SDSS\n", + "\n", + "from synphot import units\n", + "from synphot.spectrum import SourceSpectrum, SpectralElement\n", + "from synphot.models import Empirical1D\n", + "from synphot.observation import Observation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### 1. Download an observed spectrum from SDSS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example we choose the galaxy IRAS F15163+4255 NW which has a strong H-alpha emission line." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To download the spectrum, first set the coordinates for the object using `astropy.coordinates.SkyCoord`:" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "ra = 229.525575754 * u.degree\n", + "dec = 42.745853761 * u.degree\n", + "coords = SkyCoord(ra, dec)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then use these coordinates with `astroquery.sdss` to get a .fits file of the spectrum observed by SDSS:" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/tiffanyjansen/anaconda3/lib/python3.7/site-packages/astroquery/sdss/core.py:856: VisibleDeprecationWarning: Reading unicode strings without specifying the encoding argument is deprecated. Set the encoding, use None for the system default.\n", + " comments='#'))\n" + ] + } + ], + "source": [ + "spectrum_fits = SDSS.get_spectra(coordinates=coords)\n", + "data = spectrum_fits[0][1].data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can access the data by the keywords given in the .fits header. The wavelengths of the SDSS spectrum are given in a log scale in units of Angstroms, while the flux data from SDSS are scaled by 10-17 and given in units of ergs/s/cm2/Angstroms:" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "wavelengths = 10 ** data['loglam'] * u.angstrom\n", + "flux = data['flux'] * 1e-17 * units.FLAM # FLAM = ergs/s/cm^2/AA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### 2. Construct a `synphot` source spectrum object from the observed spectrum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To do synthetic photometry with `synphot`, you must first make an object out of your target's spectrum with `synphot.spectrum.SourceSpectrum`. Since we are constructing the source spectrum from arrays of data, we specify that the model type is Empirical1D and pass in the arrays (e.g. points=wavelengths and lookup_table=flux):" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "spectrum = SourceSpectrum(Empirical1D,\n", + " points=wavelengths, lookup_table=flux)\n", + "\n", + "spectrum.plot(flux_unit='FLAM') # flux units can also be in Jy, PHOTLAM, etc" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### 3. Model the bandpasses" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we want to model the effect of observing this object through the SDSS bandpasses. Similar to how we made the spectral data into a synphot object, we will also need to construct bandpass objects so that the two can be easily convolved using `synphot`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To obtain the filter transmission functions of the SDSS bandpasses, we use `astropy.utils.data.download_file` to download the transmission file from the Spanish Virtual Observatory filter database. These transmission functions include the effect of the CCD's quantum efficiency on the spectrum." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To construct a bandpass from a file, use `synphot.spectrum`'s SpectralElement with its from_file method:" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "# we leave out the u and z bands because they don't\n", + "# overlap with the spectrum provided\n", + "sdss_bands = ['g', 'r', 'i']\n", + "svo_link = ('http://svo2.cab.inta-csic.es/' +\n", + " 'theory/fps3/fps.php?ID=SLOAN/SDSS.')\n", + "\n", + "# since we are working with multiple filters I choose to organize\n", + "# using a dictionary, but you can do it however works for you\n", + "bandpasses = {}\n", + "for band in sdss_bands:\n", + " path_to_filt_file = download_file(svo_link + band)\n", + " bp = SpectralElement.from_file(path_to_filt_file)\n", + " bandpasses[band] = bp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can see how the spectrum overlaps with the bandpasses by plotting the bandpass objects like so:" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0, 0.5)" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# this is only done in a separate for-loop for example's sake\n", + "for band in sdss_bands:\n", + " waveset_band = bandpasses[band].waveset\n", + " plt.plot(waveset_band, bandpasses[band](waveset_band),\n", + " label=band)\n", + "\n", + "waveset_spec = spectrum.waveset\n", + "# just so the spectrum overlaps nicely:\n", + "scale_down = np.median(spectrum(waveset_spec)) * 20\n", + "\n", + "plt.plot(waveset_spec, spectrum(waveset_spec) / scale_down)\n", + "plt.legend(loc='upper right')\n", + "plt.ylim(0, 0.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### 4. Model the observation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then model the observation by convolving the object's spectrum with the filter transmission functions using `synphot.observation`:" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Source spectrum will be extrapolated (at constant value for empirical model). [synphot.observation]\n" + ] + } + ], + "source": [ + "obs_obj = {}\n", + "for band in sdss_bands:\n", + " obs_obj[band] = Observation(spectrum, bandpasses[band], force='extrap')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then use the `synphot.observation` method `effstim` to calculate the total flux obtained in each band. In order to compare our synthetic fluxes to those measured by SDSS, we need to convert the flux to units compatable with SDSS data. SDSS uses nanomaggies as a flux unit, which we can convert to with the `astropy.units` methods `to` and `zero_point_flux` given the zero point of this magnitude scale (3631.1 Jy):" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "g = 144 nmgy\n", + "r = 256 nmgy\n", + "i = 397 nmgy\n" + ] + } + ], + "source": [ + "zero_point_star_equiv = u.zero_point_flux(3631.1 * u.Jy)\n", + "\n", + "fluxes = {}\n", + "for band in sdss_bands:\n", + " flux = obs_obj[band].effstim('Jy')\n", + " fluxes[band] = flux.to(u.nanomaggy, zero_point_star_equiv)\n", + " print(band + ' =', str(int(fluxes[band].value)) + ' nmgy')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### 5. How well does `synphot` do?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To compare the g,r,i empirical fluxes to what we predict with `synphot`, we first get the fluxes measured by the SDSS fibers by using `astroquery.sdss.query_crossid` and setting the photoObj to \"fiberFlux_band\". For a full list of photoObj fields, see here." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/tiffanyjansen/anaconda3/lib/python3.7/site-packages/astroquery/sdss/core.py:856: VisibleDeprecationWarning: Reading unicode strings without specifying the encoding argument is deprecated. Set the encoding, use None for the system default.\n", + " comments='#'))\n" + ] + } + ], + "source": [ + "model_flux = ['fiberFlux_' + band for band in sdss_bands]\n", + "flux_table = SDSS.query_crossid(coordinates = coords, photoobj_fields=model_flux)\n", + "sdss_fluxes = {}\n", + "for band in sdss_bands:\n", + " # sdss fluxes are given in units of \"nanomaggies\"\n", + " sdss_fluxes[band] = flux_table['fiberFlux_' + band] * u.nanomaggy" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'g': ,\n", + " 'r': ,\n", + " 'i': }" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sdss_fluxes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compare the `synphot` fluxes to the observed fluxes by plotting on a 1-1 line:" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.rcParams.update({'font.size': 14})\n", + "fig = plt.figure(figsize=(9, 7))\n", + "\n", + "for band in sdss_bands:\n", + " plt.scatter(sdss_fluxes[band], fluxes[band],\n", + " s=100, label=band)\n", + "\n", + "# one-to-one line\n", + "fluxrange = np.linspace(75, 425, 10)\n", + "plt.plot(fluxrange, fluxrange, color='black')\n", + "plt.plot(fluxrange, fluxrange * 0.7, color='black', ls='--', label='30% error')\n", + "plt.plot(fluxrange, fluxrange * 1.3, color='black', ls='--')\n", + "\n", + "plt.ylabel('synphot flux (nmaggy)', size='14')\n", + "plt.xlabel('observed flux (nmaggy)', size='14')\n", + "\n", + "plt.xlim(75, 425)\n", + "plt.ylim(75, 425)\n", + "\n", + "plt.legend(prop={'size': 18})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "All in all, not a bad prediction!" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 5a44ec3930dbf5f890e0882d577bccdd55630358 Mon Sep 17 00:00:00 2001 From: tcjansen Date: Fri, 9 Aug 2019 11:06:57 -0700 Subject: [PATCH 2/4] Added another tutorial, "synphot-model-spec" --- .../synphot-measured-spec.ipynb | 67 +- .../notebooks/synphot-model-spec/ccd_QE.csv | 69 ++ .../synphot-model-spec/requirements.txt | 5 + .../notebooks/synphot-model-spec/skymodel.py | 202 ++++ .../synphot-model-spec.ipynb | 998 ++++++++++++++++++ 5 files changed, 1303 insertions(+), 38 deletions(-) create mode 100644 tutorials/notebooks/synphot-model-spec/ccd_QE.csv create mode 100644 tutorials/notebooks/synphot-model-spec/requirements.txt create mode 100644 tutorials/notebooks/synphot-model-spec/skymodel.py create mode 100644 tutorials/notebooks/synphot-model-spec/synphot-model-spec.ipynb diff --git a/tutorials/notebooks/synphot-measured-spec/synphot-measured-spec.ipynb b/tutorials/notebooks/synphot-measured-spec/synphot-measured-spec.ipynb index deb0b9bb8..39d897dcc 100644 --- a/tutorials/notebooks/synphot-measured-spec/synphot-measured-spec.ipynb +++ b/tutorials/notebooks/synphot-measured-spec/synphot-measured-spec.ipynb @@ -42,7 +42,7 @@ "metadata": {}, "source": [ "## Summary\n", - "`synphot` is an astropy-affiliated package for creating synthetic photometry in Python. In this tutorial we will show how to use `synphot` to predict the photometric fluxes of a galaxy observed by SDSS. In particular, we will:\n", + "synphot is an astropy-affiliated package for creating synthetic photometry in Python. In this tutorial we will show how to use synphot to predict the photometric fluxes of a galaxy observed by SDSS. In particular, we will:\n", "
    \n", "
  1. Get the observed spectrum of our target from SDSS
  2. \n", "
  3. Construct a source spectrum object
  4. \n", @@ -54,7 +54,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -93,12 +93,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To download the spectrum, first set the coordinates for the object using `astropy.coordinates.SkyCoord`:" + "To download the spectrum, first set the coordinates for the object using astropy.coordinates.SkyCoord:" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -111,23 +111,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Then use these coordinates with `astroquery.sdss` to get a .fits file of the spectrum observed by SDSS:" + "Then use these coordinates with astroquery.sdss to get a .fits file of the spectrum observed by SDSS:" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 18, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/tiffanyjansen/anaconda3/lib/python3.7/site-packages/astroquery/sdss/core.py:856: VisibleDeprecationWarning: Reading unicode strings without specifying the encoding argument is deprecated. Set the encoding, use None for the system default.\n", - " comments='#'))\n" - ] - } - ], + "outputs": [], "source": [ "spectrum_fits = SDSS.get_spectra(coordinates=coords)\n", "data = spectrum_fits[0][1].data" @@ -142,7 +133,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -162,12 +153,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To do synthetic photometry with `synphot`, you must first make an object out of your target's spectrum with `synphot.spectrum.SourceSpectrum`. Since we are constructing the source spectrum from arrays of data, we specify that the model type is Empirical1D and pass in the arrays (e.g. points=wavelengths and lookup_table=flux):" + "To do synthetic photometry with synphot, you must first make an object out of your target's spectrum with synphot.spectrum.SourceSpectrum. Since we are constructing the source spectrum from arrays of data, we specify that the model type is Empirical1D and pass in the arrays (e.g. points=wavelengths and lookup_table=flux):" ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -202,26 +193,26 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next we want to model the effect of observing this object through the SDSS bandpasses. Similar to how we made the spectral data into a synphot object, we will also need to construct bandpass objects so that the two can be easily convolved using `synphot`." + "Next we want to model the effect of observing this object through the SDSS bandpasses. Similar to how we made the spectral data into a synphot object, we will also need to construct bandpass objects so that the two can be easily convolved using synphot." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "To obtain the filter transmission functions of the SDSS bandpasses, we use `astropy.utils.data.download_file` to download the transmission file from the Spanish Virtual Observatory filter database. These transmission functions include the effect of the CCD's quantum efficiency on the spectrum." + "To obtain the filter transmission functions of the SDSS bandpasses, we use astropy.utils.data.download_file to download the transmission file from the Spanish Virtual Observatory filter database. These transmission functions include the effect of the CCD's quantum efficiency on the spectrum." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "To construct a bandpass from a file, use `synphot.spectrum`'s SpectralElement with its from_file method:" + "To construct a bandpass from a file, use synphot.spectrum's SpectralElement with its from_file method:" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -249,7 +240,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -258,7 +249,7 @@ "(0, 0.5)" ] }, - "execution_count": 36, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, @@ -303,12 +294,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can then model the observation by convolving the object's spectrum with the filter transmission functions using `synphot.observation`:" + "We can then model the observation by convolving the object's spectrum with the filter transmission functions using synphot.observation:" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -329,12 +320,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can then use the `synphot.observation` method `effstim` to calculate the total flux obtained in each band. In order to compare our synthetic fluxes to those measured by SDSS, we need to convert the flux to units compatable with SDSS data. SDSS uses nanomaggies as a flux unit, which we can convert to with the `astropy.units` methods `to` and `zero_point_flux` given the zero point of this magnitude scale (3631.1 Jy):" + "We can then use the synphot.observation method effstim to calculate the total flux obtained in each band. In order to compare our synthetic fluxes to those measured by SDSS, we need to convert the flux to units compatable with SDSS data. SDSS uses nanomaggies as a flux unit, which we can convert to with the astropy.units methods to and zero_point_flux given the zero point of this magnitude scale (3631.1 Jy):" ] }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -362,19 +353,19 @@ "metadata": {}, "source": [ "\n", - "### 5. How well does `synphot` do?" + "### 5. How well does synphot do?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "To compare the g,r,i empirical fluxes to what we predict with `synphot`, we first get the fluxes measured by the SDSS fibers by using `astroquery.sdss.query_crossid` and setting the photoObj to \"fiberFlux_band\". For a full list of photoObj fields, see here." + "To compare the g,r,i empirical fluxes to what we predict with synphot, we first get the fluxes measured by the SDSS fibers by using astroquery.sdss.query_crossid and setting the photoObj to \"fiberFlux_band\". For a full list of photoObj fields, see here." ] }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -397,7 +388,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -408,7 +399,7 @@ " 'i': }" ] }, - "execution_count": 40, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -421,21 +412,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Compare the `synphot` fluxes to the observed fluxes by plotting on a 1-1 line:" + "Compare the synphot fluxes to the observed fluxes by plotting on a 1-1 line:" ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 41, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, diff --git a/tutorials/notebooks/synphot-model-spec/ccd_QE.csv b/tutorials/notebooks/synphot-model-spec/ccd_QE.csv new file mode 100644 index 000000000..287d20910 --- /dev/null +++ b/tutorials/notebooks/synphot-model-spec/ccd_QE.csv @@ -0,0 +1,69 @@ +100, 0.0, 0, 0 +309.4560021465238, 70.30747424892068, 16, 40 +319.539015188068, 73.11442326755378, 14, 30.35714285714286 +329.9917387078021, 75.26541144025542, 15, 35.46666666666667 +339.70504127115635, 76.58538173145493, 14, 30.35714285714286 +349.7880543127005, 74.70200948669466, 10, 16.1 +379.53294278525584, 77.10351031374742, 12, 23.66666666666667 +390.00376402070555, 81.79762370567437, 13, 26.153846153846164 +399.57293120532483, 84.52897199856781, 16, 41.1875 +409.3114413012829, 87.18136275806562, 15, 35.46666666666667 +419.59611460365807, 89.04058920481614, 15, 36.26666666666667 +429.14136694965316, 91.16038905508852, 10, 17.700000000000003 +439.5268703824437, 92.49142617037583, 12, 23 +449.97959390217784, 93.66048522401442, 15, 35.46666666666667 +459.69289646553193, 94.87582372383835, 14, 30.35714285714285 +469.6078592897171, 95.64295584810637, 12, 23.58333333333333 +479.8589225486203, 96.56602958452065, 14, 30.35714285714285 +489.5638226011066, 97.20551595368505, 16, 41.1875 +499.5983596184127, 98.01709917645256, 13, 28.615384615384617 +509.9916192150812, 98.32588678561568, 13, 26.153846153846157 +519.5607863997005, 98.26189461661147, 16, 41.1875 +529.3044672715774, 98.79719418907516, 13, 26.92307692307692 +539.8528501458082, 99.10133837554409, 14, 32.85714285714285 +549.5997627526343, 99.09379281366604, 12, 22.916666666666668 +559.5147255768194, 99.35788747939766, 12, 22 +569.9467659928786, 99.30100555139393, 13, 28.000000000000014 +579.6807516599077, 99.14661174681237, 12, 22 +589.5957144840928, 98.81209183688566, 12, 23.58333333333333 +599.9631202011678, 98.74843825078625, 13, 26.153846153846157 +609.5600803063503, 98.30855134089073, 15, 35.46666666666667 +619.6526962174579, 98.04495971261765, 14, 32.57142857142856 +630.0958168676286, 97.9845952175933, 16, 40 +639.6746792570956, 97.24513015354478, 16, 40 +649.5056169726012, 96.85779131047175, 12, 22.91666666666666 +659.840705340184, 96.40002722320364, 16, 40 +669.7685951041659, 96.0343576860368, 13, 28.000000000000014 +679.5025807711951, 95.87183789174043, 12, 23 +689.9637068017972, 95.09275862783217, 16, 41.1875 +699.7849493124552, 94.89671912596216, 13, 26.15384615384616 +709.5355553306517, 94.49854562993605, 14, 30.357142857142854 +719.8346329373718, 94.12126753603376, 14, 30.35714285714285 +729.728589484387, 93.52139536672911, 16, 41.1875 +739.8843165622885, 92.57268606752402, 13, 26.153846153846164 +749.9673296038327, 91.77633907547178, 13, 26.153846153846157 +759.6625344514713, 90.30410093890463, 17, 45.88235294117648 +769.5904242154533, 88.68846298384065, 13, 29.692307692307693 +780.3785430640984, 86.74856762101211, 11, 20.36363636363637 +789.5964794185556, 84.85909033073233, 16, 41.1875 +799.6067784237425, 82.8540023686008, 13, 26.153846153846164 +810.0775996591923, 80.76562301189239, 16, 40 +819.6564620486593, 78.18504084960068, 14, 30.35714285714286 +829.5234105250274, 75.90628116243079, 14, 30.357142857142854 +839.8224881317476, 72.63150730735885, 16, 40 +849.6894366081158, 68.93418198711632, 14, 30.357142857142854 +859.77244964966, 65.34249453316644, 14, 30.357142857142854 +870.0715272563801, 61.79608045048484, 14, 30.35714285714286 +879.7176097327907, 58.137992052008144, 15, 36.533333333333346 +889.8109643261723, 54.49429826388342, 13, 28.61538461538462 +899.9424533919547, 49.879751854580746, 16, 41.1875 +909.7313785531205, 45.18326838232029, 12, 24.583333333333332 +919.6943557251225, 41.57397461732164, 14, 32.857142857142854 +930.065454853568, 36.82027063415269, 16, 40 +939.644317243035, 32.80603171503223, 12, 22 +949.7273302845791, 28.791792795911775, 12, 22 +959.9586229296754, 25.094467475669248, 17, 45.882352941176464 +969.6772918024916, 21.397142155426735, 14, 30.357142857142854 +979.7603048440358, 18.43928189923271, 14, 30.357142857142854 +990.0593824507558, 14.892867816551103, 14, 30.35714285714286 +1100.0, 0.0, 0, 0 diff --git a/tutorials/notebooks/synphot-model-spec/requirements.txt b/tutorials/notebooks/synphot-model-spec/requirements.txt new file mode 100644 index 000000000..fa2c29e3b --- /dev/null +++ b/tutorials/notebooks/synphot-model-spec/requirements.txt @@ -0,0 +1,5 @@ +synphot +matplotlib +numpy +astropy +astroquery \ No newline at end of file diff --git a/tutorials/notebooks/synphot-model-spec/skymodel.py b/tutorials/notebooks/synphot-model-spec/skymodel.py new file mode 100644 index 000000000..b2bd5723e --- /dev/null +++ b/tutorials/notebooks/synphot-model-spec/skymodel.py @@ -0,0 +1,202 @@ +import os +import json +import requests + +import astropy.units as u +from astropy.io import fits + + +def get_atmospheric_transmittance(airmass=1.0, pwv_mode='pwv', season=0, + time=0, pwv=3.5, msolflux=130.0, + incl_moon='Y', moon_sun_sep=90.0, + moon_target_sep=45.0, moon_alt=45.0, + moon_earth_dist=1.0, incl_starlight='Y', + incl_zodiacal='Y', + ecl_lon=135.0, ecl_lat=90.0, + incl_loweratm='Y', incl_upperatm='Y', + incl_airglow='Y', incl_therm='N', + therm_t1=0.0, therm_e1=0.0, + therm_t2=0.0, therm_e2=0.0, therm_t3=0.0, + therm_e3=0.0, vacair='vac', wmin=300.0, + wmax=2000.0, + wgrid_mode='fixed_wavelength_step', + wdelta=0.1, wres=20000, lsf_type='none', + lsf_gauss_fwhm=5.0, lsf_boxcar_fwhm=5.0, + observatory='paranal'): + """ + Returns the model atmospheric transmittance curve queried from the SkyCalc + Sky Model Calculator. The default parameters used here are the default + parameters provided by SkyCalc: + http://www.eso.org/observing/etc/doc/skycalc/skycalc_defaults.txt + + Parameters + ---------- + airmass: float (range [1.0,3.0]) + Airmass. Alt and airmass are coupled through the plane parallel + approximation airmass=sec(z), z being the zenith distance + z=90°−Alt + pwv_mode: str + options: ['pwv','season'] (default is 'pwv') + season: int + Time of year if not in pwv mode. + options: [0,1,2,3,4,5,6] (default is 0) + (0 = all year, 1 = dec/jan, 2 = feb/mar...) + time: int + Period of night. options: [0,1,2,3] (default is 0) + (0 = all year, 1, 2, 3 = third of night) + pwv: float + Precipitable Water Vapor (default is 3.5). + options: [-1.0,0.5,1.0,1.5,2.5,3.5,5.0,7.5,10.0,20.0] + msolflux: float + Monthly Averaged Solar Flux, s.f.u float > 0 (default is 130.0) + incl_moon: str + Flag for inclusion of scattered moonlight. options = ['Y', 'N'] + (default is 'Y') + Moon coordinate constraints: |z – zmoon| ≤ ρ ≤ |z + zmoon| where + ρ=moon/target separation, z=90°−target altitude and + zmoon=90°−moon altitude. + moon_sun_sep: float + Degrees of separation between Sun and Moon as seen from Earth + (i.e. the "moon phase"). + options: [0.0,360.0] (default is 90.0) + moon_target_sep: float + Moon-Target Separation ( ρ ) + Degrees in range [0.0,180.0] (defualt is 45.0) + # degrees float range [-90.0,90.0] Moon Altitude over Horizon + moon_alt: float + Moon Altitude over Horizon. Degrees in range [-90.0,90.0] + (default is 45.0) + moon_earth_dist: float + Moon-Earth Distance (mean=1) in range [0.91,1.08] + (default is 1.0) + incl_starlight: str + Flag for inclusion of scattered starlight. + options: ['Y', 'N'] (default is 'Y') + incl_zodiacal: str + Flag for inclusion of zodiacal light. + options: ['Y', 'N'] (default is 'Y') + ecl_lon: float + Heliocentric ecliptic in degree range [-180.0,180.0]. + (default is 135.0) + ecl_lat: float + Ecliptic latitude in degree range [-90.0,90.0]. + (default is 90.0) + + incl_loweratm: str + Flag for inclusion of molecular emission of lower atmosphere. + options: ['Y', 'N'] (default is 'Y') + incl_upperatm: str + Flag for inclusion of molecular emission of upper atmosphere. + options: ['Y', 'N'] (default is 'Y') + incl_airglow: str + Flag for inclusion of airglow continuum (residual continuum) + options: ['Y', 'N'] (default is 'Y') + + incl_therm: str + Flag for inclusion of instrumental thermal radiation. + options: ['Y', 'N'] (default is 'N') + Note: This radiance component represents an instrumental effect. + The emission is provided relative to the other model components. + To obtain the correct absolute flux, an instrumental response curve + must be applied to the resulting model spectrum. + See section 6.2.4 in the SkyCalc documentation at + http://localhost/observing/etc/doc/skycalc/ + The_Cerro_Paranal_Advanced_Sky_Model.pdf + therm_t1, therm_t2, therm_t3 : float + Temperature in K (default is 0.0) + therm_e1, therm_e2, therm_e3: float + In range [0,1] (default is 0.0) + + vacair: str + In regards to the wavelength grid. + options: ['vac', 'air] (default is 'vac') + wmin: float + Minimum wavelength (nm) in the wavelength grid. + Must be in range [300.0,30000.0] and < wmax + (default is 300.0) + wmax: float + Maximum wavelength (nm) in the wavelength grid. + Must be in range [300.0,30000.0] and > wmin + (default is 2000.0) + wgrid_mode: str + Mode of the wavelength grid. + options: ['fixed_spectral_resolution','fixed_wavelength_step', 'user'] + (default is 'fixed_wavelength_step') + wdelta: float + Wavelength sampling step dlam in range [0,30000.0] (nm/step) + (default is 0.1) + wres: int + lam/dlam where dlam is wavelength step. + In range [0,1.0e6] (default is 20000) + wgrid_user: list of floats + default is [500.0, 510.0, 520.0, 530.0, 540.0, 550.0] + + lsf_type: str + Line spread function type for convolution. + options: ['none','Gaussian','Boxcar'] (default is 'none') + lsf_gauss_fwhm: float + Gaussian full-width half-max for line spread function wavelength bins. + Range > 0.0 (default is 5.0) + lsf_boxcar_fwhm: float + Boxcar full-width half-max for line spread function wavelength bins. + Range > 0.0 (default is 5.0) + + observatory: str + Observatory where observation takes place. + Options are 'paranal', 'lasilla', 'armazones' (default is 'paranal') + + Returns + ------- + trans_waves, transmission: tuple of arrays of floats + 'trans_waves' is an array of wavelengths in angstroms (float), + 'transmission' is an array of fractional atmospheric + transmittance (float). + + """ + + params = locals() + + if params['observatory'] == 'lasilla': + params['observatory'] = '2400' + elif params['observatory'] == 'paranal': + params['observatory'] = '2640' + elif (params['observatory'] == '3060m' or + params['observatory'] == 'armazones'): + params['observatory'] = '3060' + else: + raise ValueError('Wrong Observatory name, please refer to the ' + 'skycalc_cli documentation.') + + # Use the bit from skycalc_cli which queries from the SkyCalc Sky Model + server = 'http://etimecalret-001.eso.org' + url = server + '/observing/etc/api/skycalc' + response = requests.post(url, data=json.dumps(params)) + results = json.loads(response.text) + + status = results['status'] + tmpdir = results['tmpdir'] + tmpurl = server + '/observing/etc/tmp/' + tmpdir + '/skytable.fits' + + if status == 'success': + try: + response = requests.get(tmpurl, stream=True) + data = response.content + except requests.exceptions.RequestException as e: + print(e, 'could not retrieve FITS data from server') + else: + print('HTML request failed', results) + + # Create a temporary file to write the binary results to + tmp_data_file = './tmp_skycalc_data.fits' + + with open(tmp_data_file, 'wb') as f: + f.write(data) + + hdu = fits.open(tmp_data_file) + trans_waves = hdu[1].data["LAM"] * u.um # wavelengths + transmission = hdu[1].data["TRANS"] + + # Delete the file after reading from it + os.remove(tmp_data_file) + + return trans_waves.to(u.angstrom), transmission diff --git a/tutorials/notebooks/synphot-model-spec/synphot-model-spec.ipynb b/tutorials/notebooks/synphot-model-spec/synphot-model-spec.ipynb new file mode 100644 index 000000000..7a275b2f4 --- /dev/null +++ b/tutorials/notebooks/synphot-model-spec/synphot-model-spec.ipynb @@ -0,0 +1,998 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# synphot: Predicting count rates with ground-based and space-based telescopes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Authors\n", + "Tiffany Jansen, Brett Morris, Pey Lian Lim, & Erik Tollerud" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Objectives\n", + "
      \n", + "
    • Query data directly from other websites using astropy.coordinates.Skycoord, astroquery.Gaia, astropy.io, and astropy.utils
    • \n", + "
    • Construct a source spectrum from a model spectrum using synphot.SourceSpectrum
    • \n", + "
    • Simulate bandpass throughput with synphot.SpectralElement
    • \n", + "
    • Model effects on the source spectrum such as atmospheric transmission and quantum efficiency with synphot.SpectralElement
    • \n", + "
    • Combine all of these effects into a simulated observation with synphot.Observation
    • \n", + "
    • Compute the expected count rate from this observation with synphot's countrate() function\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Keywords\n", + "synphot, synthetic photometry, astropy, astroquery, astronomy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "synphot is an astropy-affiliated package for creating synthetic photometry in Python. In this tutorial we will show how to predict the total counts expected to be measured by both a ground-based telescope and a space-based telescope using model spectra. Specifically, we will:\n", + "
      \n", + "
    1. Query the properties of a target star
    2. \n", + "
    3. Download model spectra from PHOENIX
    4. \n", + "
    5. Construct a source spectrum
    6. \n", + "
    7. Create the bandpass of observation
    8. \n", + "
    9. Model attenuation by the atmosphere
    10. \n", + "
    11. Model the effect of the CCD's quantum efficiency
    12. \n", + "
    13. Combine all of the effects and \"observe\"
    14. \n", + "
    15. Compute the count rate and total counts
    16. \n", + "
    17. Look at another example, this time with TRAPPIST-1
    18. \n", + "
    19. Simulate observations with a space-based telescope
    20. \n", + "
    21. Compare synphot counts to observed counts
    22. \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "import astropy.units as u\n", + "from astropy.coordinates import SkyCoord\n", + "from astropy.io import fits\n", + "from astropy.utils.data import download_file\n", + "\n", + "from astroquery.gaia import Gaia\n", + "\n", + "from synphot import units\n", + "from synphot.spectrum import SourceSpectrum, SpectralElement\n", + "from synphot.models import Empirical1D\n", + "from synphot.observation import Observation\n", + "\n", + "# LOCAL\n", + "import skymodel\n", + "\n", + "# the following is just to silence nonintegral warnings\n", + "import warnings\n", + "\n", + "def fxn():\n", + " warnings.warn(\"deprecated\", DeprecationWarning)\n", + " warnings.filterwarnings(\"ignore\", module='astropy.io.votable.tree')\n", + "\n", + "with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " fxn()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1. Query the properties of HAT-P-11" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this tutorial we will use a couple of example stars, the first being HAT-P-11. In order to model its spectrum with PHOENIX, we will need to get some of HAT-P-11's parameters, which we can do using astroquery's Gaia query and astropy's SkyCoord: " + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Query finished.\n" + ] + } + ], + "source": [ + "ID = 'HAT-P-11'\n", + "\n", + "coord = SkyCoord.from_name(ID)\n", + "# width / height of search:\n", + "width = u.Quantity(1, u.arcmin)\n", + "height = u.Quantity(1, u.arcmin)\n", + "\n", + "search_results = Gaia.query_object_async(coordinate=coord, width=width, height=height)\n", + "# the queried star should be the one nearest to the given coordinates\n", + "search_results.add_index('dist', unique=True)\n", + "hatp11_info = search_results.loc['dist', min(search_results['dist'])]\n", + "\n", + "stellar_radius = hatp11_info['radius_val'] * u.R_sun\n", + "# divide 1 AU by parallax (arcseconds) to get distance in parsecs.\n", + "# parallax is given in milliarcseconds, so multiply by 1000: \n", + "distance = (1 / (hatp11_info['parallax']) * 1000) * u.pc\n", + "T_eff = hatp11_info['teff_val'] * u.K" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temperature of HAT-P-11 = 4757.26708984375 K\n", + "Distance to HAT-P-11 = 37.80607118315159 pc\n" + ] + } + ], + "source": [ + "print(\"Temperature of HAT-P-11 =\", T_eff)\n", + "print(\"Distance to HAT-P-11 =\", distance)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 2. Download a PHOENIX model spectrum for HAT-P-11" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will model the spectrum of HAT-P-11 with a PHOENIX stellar atmosphere model, which we can obtain by specifying a stellar temperature and querying from the Gottingen Spectral Library:" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": {}, + "outputs": [], + "source": [ + "T_eff = round(T_eff.value, -2) # round to nearest 100 K\n", + "\n", + "flux_url = ('ftp://phoenix.astro.physik.uni-goettingen.de/v2.0/HiResFITS/'\n", + " 'PHOENIX-ACES-AGSS-COND-2011/Z-0.0/lte{T_eff:05d}-{log_g:1.2f}-0.0.PHOENIX-'\n", + " 'ACES-AGSS-COND-2011-HiRes.fits').format(T_eff=int(T_eff), log_g=4.5)\n", + "wavelength_url = ('ftp://phoenix.astro.physik.uni-goettingen.de/v2.0/HiResFITS/'\n", + " 'WAVE_PHOENIX-ACES-AGSS-COND-2011.fits')\n", + "\n", + "flux = fits.getdata(flux_url)\n", + "wavelengths = fits.getdata(wavelength_url)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is good practice (and for some packages, essential) to attach units to quantities so that you can be sure the final results are scaled correctly. The units we use here are specified by the PHOENIX models." + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": {}, + "outputs": [], + "source": [ + "flux = flux * (u.erg / u.s / u.cm ** 2 / u.cm) \n", + "wavelengths = wavelengths * u.Angstrom" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3. Construct a synphot source spectrum object" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To do synthetic photometry with synphot, you must first make an object out of your target's spectrum with synphot.spectrum.SourceSpectrum. Since we are constructing the source spectrum from arrays of data, we specify that the model type is Empirical1D and pass in the arrays (e.g. points=wavelengths and lookup_table=flux): " + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": {}, + "outputs": [], + "source": [ + "photlam_hatp11 = SourceSpectrum(Empirical1D,\n", + " points=wavelengths, lookup_table=flux)\n", + "\n", + "# Scale the flux to get the value at Earth\n", + "photlam_hatp11 = photlam_hatp11 * float(stellar_radius / distance) ** 2 / np.pi" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "SourceSpectrum objects come with a useful plotting method for easy viewing of the spectrum: " + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "photlam_hatp11.plot(flux_unit='Jy', left=0, right=60000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(for other methods of constructing source spectra with synphot, see the first bulleted list here) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Now we will simulate the observation with a specific instrument" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

    Let's observe HAT-P-11 with the ARCTIC instrument on APO's 3.5m telescope, which has the following specs:" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "metadata": {}, + "outputs": [], + "source": [ + "aperture_radius = 3.5 / 2 * u.m # radius of 3.5m ARC telescope at APO\n", + "aperture_area = np.pi * aperture_radius ** 2\n", + "gain = 1.9 # the gain of this detector in e-/ADU" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Create the bandpass" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we want to model the effect of observing this object through a couple of bandpasses, specifically the r' and z' filters from the Sloan Digital Sky Survey (SDSS). Similar to how we made the spectral data into a synphot object, we will also need to construct bandpass objects so that the two can be easily convolved." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To obtain the filter transmission functions of the SDSS bandpasses, we use astropy.utils.data.download_file to download the transmission file from the Spanish Virtual Observatory filter database. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To construct a bandpass from a file, use synphot.spectrum's SpectralElement with its from_file method:" + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "sdss = ['rprime', 'zprime'] # only want r' and z' bands for now\n", + "svo_link = ('http://svo2.cab.inta-csic.es/' +\n", + " 'theory/fps3/fps.php?ID=')\n", + "\n", + "bandpasses = {}\n", + "for band in sdss:\n", + " filt_path = download_file(svo_link + 'SLOAN/SDSS.' + band + '_filter')\n", + " bandpasses[band] = SpectralElement.from_file(filt_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Like SourceSpectrum objects, SpectralElement objects also have a handy plotting method:" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "

    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "for band in sdss:\n", + " waves = bandpasses[band].waveset\n", + " plt.plot(waves, bandpasses[band](waves), label=band)\n", + " \n", + "plt.legend(loc='lower right')\n", + "plt.xlim(3000, 14000)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For other methods of building bandpasses (either from a model or from one of synphot's given bandpasses), see here." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 5. Model the attenuation by the atmosphere" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "SpectralElement can also be used to model other effects on the observation, such as atmospheric transmittance or a CCD's response function. Here we will model the atmospheric transmittance using the local script skymodel.py, which queries results from the SkyCalc Sky Model Calculator (the default location is the Paranal Observatory, which is similar in climate to APO):" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "trans_waves, transmission = skymodel.get_atmospheric_transmittance(airmass=1.5)\n", + "\n", + "atmosphere = SpectralElement(Empirical1D,\n", + " points=trans_waves,\n", + " lookup_table=transmission)\n", + "atmosphere.plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 6. Model the effect of the CCD's quantum efficiency" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this we use the values in the table found in section 3.5 on this page of the instrument's website, which we've saved into the local file ccd_QE.csv. Because the wavelength units are not the same as synphot's default unit of Angstroms, we have to specify the units with the wave_unit keyword." + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "quantum_efficiency = SpectralElement.from_file('ccd_QE.csv', wave_unit=\"nm\")\n", + "quantum_efficiency = quantum_efficiency / 100 # convert percentages to fractions\n", + "\n", + "quantum_efficiency.plot(left=3000, right=14000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 7. Combine all of the effects and \"observe\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once we have all of the effects on the source spectrum set, we can combine them (i.e. convolve them) by simply multiplying the SpectralElement objects together:" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "bp_atmos_qe = {} # for the combined bandpass, atmosphere, and quantum efficiency element\n", + "for band in sdss:\n", + " bp_atmos_qe[band] = bandpasses[band] * atmosphere * quantum_efficiency\n", + " \n", + "bp_atmos_qe['rprime'].plot(left=3000, right=14000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we convolve the source spectrum with all of these effects using synphot.observation's Observation:" + ] + }, + { + "cell_type": "code", + "execution_count": 184, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "band = 'rprime' # only want to know about the r' band for this star\n", + "\n", + "observation = Observation(photlam_hatp11, bp_atmos_qe[band])\n", + "observation.plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 8. Compute the count rate and total counts" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To get the expected count rate for a specific collecting area, use the countrate() method on the observation object. If you wish to compare synphot counts to measured counts (as we will do at the end of the tutorial), you may have to divide the predicted count rate by your instrument's gain depending on how the instruments defines its counts." + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$3835363.9 \\; \\mathrm{\\frac{ct}{s}}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 185, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "countrate = observation.countrate(area=aperture_area) / gain\n", + "countrate" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How many counts can we expect in a 10s exposure?" + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "HAT-P-11 counts in the r-band, 10 s exposure:\n", + "38353638 cts\n" + ] + } + ], + "source": [ + "exptime = 10 * u.s\n", + "apo_counts_hatp11 = countrate * exptime\n", + "\n", + "print(\"HAT-P-11 counts in the r-band, 10 s exposure:\")\n", + "print(int(apo_counts_hatp11.value), \"cts\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 9. Another example, this time observing TRAPPIST-1" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "(using the same instrument and telescope)" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "metadata": {}, + "outputs": [], + "source": [ + "T_eff = 2600 # approx temperature of trappist-1 [K], Gillon 2017\n", + "\n", + "flux_url = ('ftp://phoenix.astro.physik.uni-goettingen.de/v2.0/HiResFITS/'\n", + " 'PHOENIX-ACES-AGSS-COND-2011/Z-0.0/lte{T_eff:05d}-{log_g:1.2f}-0.0.PHOENIX-'\n", + " 'ACES-AGSS-COND-2011-HiRes.fits').format(T_eff=T_eff, log_g=4.5)\n", + "wavelength_url = ('ftp://phoenix.astro.physik.uni-goettingen.de/v2.0/HiResFITS/'\n", + " 'WAVE_PHOENIX-ACES-AGSS-COND-2011.fits')\n", + "\n", + "flux = fits.getdata(flux_url) * (u.erg / u.s / u.cm ** 2 / u.cm)\n", + "wavelengths = fits.getdata(wavelength_url) * u.Angstrom" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unfortunately Gaia does not have all the parameters we need for TRAPPIST-1, so we use the values cited in Gillon 2017:" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "photlam_trappist1 = SourceSpectrum(Empirical1D,\n", + " points=wavelengths, lookup_table=flux)\n", + "\n", + "# Scale the flux to get the value at Earth\n", + "stellar_radius = 0.117 * u.R_sun # radius of trappist-1 in solar units\n", + "distance = 12.1 * u.pc # distance to trappist-1 in parsecs\n", + "photlam_trappist1 = photlam_trappist1 * float(stellar_radius / distance) ** 2 / np.pi\n", + "\n", + "photlam_trappist1.plot(flux_unit='Jy', left=0, right=60000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This time I just want to know about observations in the SDSS z'-band. Since we have already constructed the SpectralElement for the combined effects of the bandpass, atmosphere, and CCD of this instrument (bp_atmos_qe), simulating the observation is as simple as referencing that SpectralElement for the band of interest:" + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "metadata": {}, + "outputs": [], + "source": [ + "band = 'zprime'\n", + "\n", + "observation = Observation(photlam_trappist1, bp_atmos_qe[band])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How many counts can we expect to measure in a 10s exposure of TRAPPIST-1 with APO's ARCTIC?" + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TRAPPIST-1 counts in the z-band, 10 s exposure:\n", + "\t 306750 cts\n" + ] + } + ], + "source": [ + "countrate = observation.countrate(area=aperture_area) / gain\n", + "apo_counts_trappist1 = countrate * 10 * u.s\n", + "\n", + "print(\"TRAPPIST-1 counts in the z-band, 10 s exposure:\")\n", + "print('\\t', int(apo_counts_trappist1.value), \"cts\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 10. Predicting photon counts of the same stars, this time observed by a space-based telescope" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example we will use Kepler as our space telescope.\n", + "\n", + "First we will need to know Kepler's response function, which we can obtain from SVO (this response function includes both the bandpass and the quantum efficiency of the CCD):" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "filt_path = download_file(svo_link + 'Kepler/Kepler.K')\n", + "kepler_response = SpectralElement.from_file(filt_path)\n", + "\n", + "kepler_response.plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create the observation object. Since Kepler is a space-based telescope, we do not need to convolve with an atmospheric transmission function:" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": {}, + "outputs": [], + "source": [ + "# here I choose to organize the observations in a dictionary,\n", + "# but you can do whatever works best for you\n", + "kepler_stars = {'hatp11': {'spectrum': photlam_hatp11},\n", + " 'trappist1': {'spectrum': photlam_trappist1}\n", + " }\n", + "\n", + "for star in kepler_stars:\n", + " kepler_stars[star]['observation'] = Observation(stars[star]['spectrum'], kepler_response)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compute the counts in a 10 second exposure for the two stars:" + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "counts predicted by synphot in 10s exposure:\n", + "\t HAT-P-11: 24.7 million\n", + "\t TRAPPIST-1 65.0 thousand\n" + ] + } + ], + "source": [ + "kepler_area = np.pi * (1.4 * u.m / 2) ** 2 # area of Kepler's primary mirror\n", + "\n", + "for star in kepler_stars:\n", + " countrate = kepler_stars[star]['observation'].countrate(area=kepler_area)\n", + " kepler_stars[star]['counts'] = countrate * 10 * u.s\n", + " \n", + "print('counts predicted by synphot in 10s exposure:')\n", + "print('\\t HAT-P-11:', round(kepler_stars['hatp11']['counts'].value / 1e6, 1), 'million')\n", + "print('\\t TRAPPIST-1', round(kepler_stars['trappist1']['counts'].value / 1e3, 1), 'thousand')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 11. How well does synphot do?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's compare the synphot counts to some measured counts to see how well synphot can perform. We know from real observations (taken with ARCTIC on APO's 3.5m telescope and with Kepler) that the actual count values for these stars are:" + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "metadata": {}, + "outputs": [], + "source": [ + "hatp11_r_apo_meas = 34000000\n", + "hatp11_kepler_meas = 28000000\n", + "trappist1_z_apo_meas = 203000\n", + "trappist1_kepler_meas = 57000" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An easy way to compare is to plot the synphot values to the observed values on a 1-1 line:" + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 195, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAIhCAYAAAC7TDtSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3XdcleXjxvHP7SBNk9KsTHJkS0VBw0pNQRAcoTlLTc0caa6yrMyWORrfLL85skzNygTDNCdOBPLbcGfOcpWzHOUeCPfvD4SfA+QoHB44XO/Xixee+zznnOsQ1eV97ue5jbUWERERkdwqn9MBRERERDJDZUZERERyNZUZERERydVUZkRERCRXU5kRERGRXE1lRkRERHI1lRkRERHJ1VRmREREJFdTmREREZFcrYDTAbLSzTffbMuVK+d0DBEREckCq1atOmitLZnRcR5VZsqVK8fKlSudjiEiIiJZwBjzhyvH6WMmERERydVUZkRERCRXU5kRERGRXM2j1sykJSEhgd27d3P69Gmno0gOUqhQIXx8fChYsKDTUUREJJM8vszs3r2bG264gXLlymGMcTqO5ADWWg4dOsTu3bspX76803FERCSTPP5jptOnT1OiRAkVGUlljKFEiRKarRMR8RAeX2YAFRm5jH4nREQ8R54oM67atg169oRixSBfvuTvPXsmj4uIiEjOpDJzXnQ0VK0K48fDsWNgbfL38eOTx6Ojr/25ixYtetHtSZMm0bt374vG/Pz8aNu2bertXr164e/vT6VKlShcuDD+/v74+/szbdq0y54/f/78+Pv74+vrS+vWrTl58uRlx2zevJmaNWty3XXXMXz48Ivu69y5M7fccgu+vr7X/iazWadOndL8WYiISN6jMkPyzEurVnDyJCQkXHxfQkLyeKtW7puh2bRpE0lJScTHx3PixAkAxowZw9q1a5k3bx4VKlRg7dq1rF27llatWl32+MKFC7N27VrWr1+Pl5cXn3zyyWXHFC9enJEjR9K/f//L7uvUqRPz58/P0vdkrSUpKSlLn1NERCQtKjPABx9cXmIulZAAI0a45/WnTJlChw4dCAsLY9asWZl6rjp16rB169bLxm+55RZq1KiR5qnIdevWpXjx4i6/xoEDBwgNDaV69ep0796dsmXLcvDgQXbu3EnFihXp2bMn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a5OYmEinTp3w9fWlSpUqjBgxAoCgoCCee+45atWqha+vL8uXLweSN6asVasW1apVo1atWmzZsiX1efr370+VKlWoWrUqo0aNApKvaBwYGMj9999PgwYN2Ldv31W9HxGR3OSXX36hXr165MuXj9jYWHx9fZ2OlGOozFwoZVbm7Nnk22fPZsnsTEYSExNZsmQJTZs2TR2LiIigbdu21KlThy1btvD3339f9rhDhw7x008/XbY7dnrjvXr1okuXLtSrV49hw4axd+9e97yh89auXcuePXtYv349v/7660V7g5w4cYIffviBjz/+mM6dOwPJ+zvFx8ezZs0aBg8ezMCBAwEYN24cO3bsYM2aNaxbt44nnniChIQE+vTpw7Rp01i1ahWdO3fm1Vdfdev7ERFxysqVK6lXrx6FChUiLi4uzf3w8jKVmQtdOCuTwo2zM6dOncLf358SJUpw+PDh1F2yASIjI2nTpg358uWjRYsWREVFpd73/fffU61aNcLCwhgwYEBqaUlvPEWDBg3Yvn073bp1Y/PmzVSrVo0DBw645b0B3HnnnWzfvp0+ffowf/58ihUrlnpf27ZtgeQNJo8ePcq///7LkSNHaN26Nb6+vvTr148NGzYAsHjxYnr06EGBAskn3xUvXpwtW7awfv16QkND8ff3Z+jQoezevdtt70VExCk//fQTISEheHt7Ex8fz9133+10pBxHZSbFpbMyKdw4O1O4cGHWrl3LH3/8wdmzZ1PXzKxbt47ff/+d0NBQypUrR2Rk5EUfNaWsjVm1ahU9evTIcPxCxYsXp127dnz11VfUqFGD+Pj4dPO9+uqrqYuDr8VNN93EL7/8QlBQEGPGjKFr166p9xljLjrWGMPrr79OvXr1WL9+PbNnz+b06dMAWGsvO95aS+XKlVPX+/z6668sXLjwmnKKiORUy5YtIzQ0lJIlSxIXF0f58uWdjpQjqcykSGtWJoWb1854e3szcuRIhg8fTkJCAhEREQwaNIidO3eyc+dO9u7dy549e/jjjz8y9ToxMTGcPHkSSN4eftu2bZQpUybd44cNG5ZaFjKS1pTnwYMHSUpKomXLlgwZMoTVq1en3jd16lQg+V9Ub29vvL29OXLkCKVLlwZg0qRJqceGhYXxySefcO7cOSB5I7V7772XAwcO8OOPPwKQkJCQOpMjIuIJli5dSoMGDShd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JATKDFAGJk2apN69e6tp06Z6+eWXdfTRR/uOBAAJgzIDHKFx48bphhtuUKtWrbRw4UJVr17ddyQASCiUGeAIjBkzRrfccovatWun+fPnq1q1ar4jAUDCocwApfTggw9q8ODB6tSpk1544QVVrVrVdyQASEiUGaCEnHO69957NWzYMF1zzTWaOXOmKleu7DsWACSsSr4DAPHEOafhw4frn//8p3r16qXJkyerYsWKvmMBQEKjzADF5JzTnXfeqUceeUT9+vXThAkTVKECGzcBwDdeiYFicM7ptttu0yOPPKKbbrqJIgMAMYRXY+AwcnNzNWDAAD3xxBO644479MQTT1BkACCG8IoMFOHgwYPq27evJk2apL/97W8aPXq0zMx3LABAHhwzAxTiwIEDuu666zRjxgzdc889uueeeygyABCDKDNAAXJycnTttdfqhRde0AMPPKBhw4b5jgQAKARlBshn//796tq1qxYsWKDRo0dr8ODBviMBAIpAmQHy2Ldvnzp27KjFixdr7NixuuWWW3xHAgAcBmUGiNizZ4/at2+vFStWaOLEierfv7/vSACAYqDMAJJ2796t1NRUZWRkaMqUKerdu7fvSACAYqLMIOH98ssvat26tV5//XU9++yz6t69u+9IAIASoMwgof38889KSUnRunXrNHPmTF199dW+IwEASogyg4T1448/qnnz5tqwYYPmzp2r9u3b+44EACgFygwS0rZt29SsWTN9+OGHevHFF9W6dWvfkQAApRSzX2dgZklm9oqZTTCzJN95EBzffvutmjRpok2bNmnRokUUGQCIc1EtM2Y2xcy+N7P3801PMbNNZrbZzIZGJjtJuyRVk7QlmjkRXFu3blVSUpI+++wzvfzyy2revLnvSACAIxTtLTPTJKXknWBmFSWNl9RSUj1J3cysnqRXnHMtJQ2RdG+UcyKAvvzySzVu3Fhbt27V0qVLFQqFfEcCAJSBqJYZ51yWpB/zTb5c0mbn3KfOuWxJsyS1c87lRub/JKlqFGMigD777DM1btxY27dv14oVK3TVVVf5jgQAKCOxcADw6ZK+ynN9i6QrzKyDpBaSjpM0rrAbm1l/Sf0lqXbt2uUYE/Fq8+bNCoVC2rVrl1auXKkGDRr4jgQAKEOxUGasgGnOOTdf0vzD3dg5N0nSJElq0KCBK+NsiHMfffSRQqGQcnJytHr1al1yySW+IwEAylgslJktks7Mc/0MSV97yoIAef/995WcnCwz05o1a3ThhRf6jgQAKAexcGr2m5LONbM6ZlZFUldJCz1nQpx79913lZSUpIoVKyojI4MiAwABFu1Ts2dK+rek88xsi5n1dc4dkHSzpGWSPpQ0xzm3MZq5ECzr1q1TKBRS9erVlZWVpfPPP993JABAOYrqbibnXLdCpi+WtLi06zWzVEmp55xzTmlXgYB444031KJFC51wwglavXq16tSp4zsSAKCcxcJupiPmnFvknOtfs2ZN31Hg0SuvvKJmzZrp5JNPVmZmJkUGABJEIMoMsHr1aqWkpOj0009XVlYWp+kDQAKhzCDuLVu2TK1bt1adOnWUmZmp0047zXckAEAUUWYQ19LT09W2bVudd955WrNmjWrVquU7EgAgygJRZsws1cwm7dixw3cURNGLL76oDh066I9//KNWr16tk08+2XckAIAHgSgzHACceObMmaPOnTvr0ksv1cqVK3XCCSf4jgQA8CQQZQaJJS0tTd26ddOVV16p5cuX67jjjvMdCQDgEWUGcWXq1Knq2bOnGjdurKVLl+qYY47xHQkA4BllBnFj4sSJ6tOnj5o2bar09HTVqFHDdyQAQAygzMCfb76R6taVvv32sIs+8cQTGjBggFq3bq2FCxeqevXqUQgIAIgHlBn4M3Kk9Pnn4Z9FGD16tG699Va1b99e8+fPV7Vq1aKTDwAQFwJRZjg1Ow598400daqUmxv+WcjWmQceeEB33nmnrr76as2ZM0dVqlSJclAAQKwLRJnh1Ow4NHJkuMhI0sGDv9k645zTPffco+HDh+vaa6/V888/r8qVK3sICgCIdYEoM4gzh7bKZGeHr2dn/2rrjHNOw4YN03333adevXpp+vTpqlQpql/wDgCII5QZRF/erTKHRLbOOOc0ePBgPfTQQ7rhhhv0zDPPqGLFin5yAgDiAn/uIrryb5U5JDtbuVOm6Na9ezV+6lTdcsstevzxx2VmfnICAOIGW2YQXQVtlZGUK2lAdrbGT52qwYMHU2QAAMVGmUH0FLJV5qCkPpKezs3VsEqV9K/BgykyAIBiC0SZ4dTsOFHAVpkDknpKmi7pXkn3m8nuv99DOABAvApEmeHU7DixcOGvtsrkSOomaYakByWNkGQ5OdJLL/nJBwCIS4EoM4gTW7ZIzknOaf++ferUtq3mShozZoyGRqbLufByAAAUE2czIer27dunDh06aMmSJRo3bpxuuukm35EAAHGMMoOo2rNnj9q1a6dVq1Zp4sSJ6t+/v+9IAIA4R5lB1OzatUupqanKzMzUlClT1KtXL9+RAAABQJlBVPzyyy9q1aqV3njjDaWlpemaa67xHQkAEBCUGZS7n376SSkpKXr77bc1c+ZMde7c2XckAECAUGZQrn744Qc1b95c7733nubOnat27dr5jgQACJhAnJrNh+bFpu+//16hUEgbN27UggULKDIAgHIRiDLDh+bFnm+++UZNmjTRxx9/rEWLFqlVq1a+IwEAAordTChzW7duVSgU0tatW7V48WIlJSX5jgQACDDKDMrUF198oVAopG3btmnZsmVq2LCh70gAgICjzKDMfPrppwqFQvr555+1YsUKXXHFFb4jAQASAGUGZeLjjz9WKBTSnj17tGrVKl166aW+IwEAEgRlBkfsww8/VCgU0oEDB7R69WpdfPHFviMBABJIIM5mgj/vvfeeGjduLOecMjIyKDIAgKijzKDU3nnnHTVp0kSVK1dWZmamLrjgAt+RAAAJiDKDUnnzzTcVCoVUvXp1ZWZm6rzzzvMdCQCQoCgzKLHXX39dTZs21fHHH6+srCydc845viMBABJYIMoMX2cQPVlZWWrevLlq1aqlzMxMnX322b4jAQASXCDKDF9nEB2rVq1SSkqKzjzzTGVkZOjMM8/0HQkAgGCUGZS/ZcuWqU2bNqpbt64yMjJ02mmn+Y4EAIAkygyKYdGiRWrbtq3OP/98rVmzRrVq1fIdCQCA/6HMoEjz589Xhw4ddNFFF2nVqlU66aSTfEcCAOBXKDMo1KxZs3T11Vfrsssu08qVK3XCCSf4jgQAwG9QZlCg5557Ttdee63+8pe/aNmyZeLgagBArKLM4DemTJmi6667TklJSVqyZImOOeYY35EAACgUZQa/8tRTT6lv375q3ry50tPTVaNGDd+RAAAoEmUG//P4449r4MCBatOmjRYsWKCjjjrKdyQAAA6LMgNJ0r/+9S8NGjRIf/3rXzVv3jxVq1bNdyQAAIqFMgPdf//9uuuuu9SlSxfNnj1bVapU8R0JAIBio8wkMOecRowYobvvvls9evRQWlqaKleu7DsWAAAlUsl3APjhnNPQoUM1atQo9enTR5MmTVLFihV9xwIAoMQCsWWGb80uGeecbr/9do0aNUoDBgzQ008/TZEBAMStQJQZvjW7+HJzc3XTTTfp8ccf16233qonn3xSFSoE4r8BACBB8S6WQHJzc3XDDTfoqaee0p133qnHHntMZuY7FgAAR4QykyAOHjyo3r17a/LkyRo+fLgefvhhigwAIBA4ADgB5OTkqGfPnpo1a5buu+8+3X333b4jAQBQZigzAZedna1u3bpp/vz5euihhzRkyBDfkQAAKFOUmQDbv3+/OnfurEWLFmnMmDG6/fbbfUcCAKDMUWYCau/everQoYOWLl2q8ePHa+DAgb4jAQBQLigzAbR79261a9dOq1ev1tNPP63rr7/edyQAAMoNZSZgdu7cqTZt2ujVV1/VtGnT1LNnT9+RAAAoV5SZANmxY4datmyptWvXKi0tTd26dfMdCQCAckeZCYiffvpJLVq00DvvvKPZs2erY8eOviMBABAVlJkA2L59u5o3b66NGzdq3rx5atu2re9IAABEDWUmzn3//fdq2rSp/vvf/+qll15SSkqK70gAAEQVZSaOffPNN0pOTtbnn3+u9PR0NW3a1HckAACijjITp7Zs2aJQKKSvv/5aS5YsUePGjX1HAgDAC8pMHPriiy8UCoW0bds2LVu2TA0bNvQdCQAAbygzceaTTz5RKBTSL7/8opUrV+ryyy/3HQkAAK8oM3Fk06ZNSk5O1t69e7Vq1SrVr1/fdyQAALyr4DtAWTCzVDObtGPHDt9Rys0HH3ygpKQkZWdna82aNRQZAAAiAlFmnHOLnHP9a9as6TtKudiwYYOSkpIkSRkZGbrooov8BgIAIIYEoswE2dtvv60mTZqoSpUqyszMVL169XxHAgAgplBmYtjatWuVnJyso48+WpmZmfr973/vOxIAADGHMhOjXnvtNTVt2lTHH3+8srKyVLduXd+RAACISZSZGJSZmakWLVrolFNOUVZWls466yzfkQAAiFmUmRizcuVKtWzZUrVr11ZmZqbOOOMM35EAAIhplJkYsmTJErVp00bnnHOOMjIydOqpp/qOBABAzKPMxIiFCxeqffv2qlevntasWaPf/e53viMBABAXKDMxYN68eerYsaMuvvhirVq1SieeeKLvSAAAxA3KjGczZ85Uly5ddPnll2vFihU6/vjjfUcCACCuUGY8mj59urp3766GDRtq6dKlCuonGAMAUJ4oM55MnjxZvXv3VpMmTbR48WIdc8wxviMBABCXKDMejB8/Xv369VOLFi20aNEi1ahRw3ckAADiFmUmyh599FHdfPPNSk1N1YIFC3TUUUf5jgQAQFyjzETRww8/rDvuuEMdO3bU3LlzVbVqVd+RAACIe5SZKBk5cqSGDh2qrl27atasWapSpYrvSAAABAJlppw55zR8+HCNGDFCPXr0UFpamipVquQ7FgAAgcG7ajlyzumuu+7S6NGj1bdvX02cOFEVK1b0HQsAgEChzJQT55wGDRqksWPH6sYbb9S4ceNUoQIbwgAAKGu8u5aD3NxcDRw4UGPHjtWgQYM0fvx4igwAAOWEd9gydvDgQfXr108TJkzQkCFDNGbMGJmZ71gAAAQWZaYMHThwQL169dKUKVN0991368EHH6TIAABQzjhmpozk5OSoR48emj17tkaOHKnhw4f7jgQAQEKgzJSB7Oxsde3aVS+++KJGjRqlO++803ckAAASBmXmCO3bt0+dO3dWenq6HnvsMd12222+IwEAkFAoM0dg7969at++vZYvX64nn3xSN954o+9IAAAkHMpMKe3evVupqanKyMjQ5MmT1bdvX9+RAABISJSZUti5c6dat26t1157TdOnT1ePHj18RwIAIGFRZkpox44datmypdauXasZM2aoS5cuviMBAJDQKDMl8OOPP6pFixZav3695syZow4dOviOBABAwovpD80zsxpm9paZtfGdZfv27UpOTtaGDRs0b948igwAADEiqmXGzKaY2fdm9n6+6SlmtsnMNpvZ0DyzhkiaE82MBfnuu+/UpEkTffTRR3rppZeUmprqOxIAAIiI9paZaZJS8k4ws4qSxktqKamepG5mVs/Mmkr6QNJ3Uc74K3v37lWTJk30ySefKD09XSkpKYe/EQAAiJqoHjPjnMsys7PzTb5c0mbn3KeSZGazJLWTdLSkGgoXnL1mttg5l5t/nWbWX1J/Sapdu3aZZz7qqKPUv39/1a9fX40aNSrz9QMAgCMTCwcAny7pqzzXt0i6wjl3sySZWS9J2wsqMpLknJskaZIkNWjQwJVHwEGDBpXHagEAQBmIhTJT0NdK/6+UOOemRS8KAACIN7FwNtMWSWfmuX6GpK89ZQEAAHEmFsrMm5LONbM6ZlZFUldJCz1nAgAAcSLap2bP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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(9, 9))\n", + "\n", + "plt.scatter(hatp11_r_apo_meas, apo_counts_hatp11,\n", + " color='b', s=100, label=\"HAT-P-11, ground\")\n", + "plt.scatter(hatp11_kepler_meas, kepler_stars['hatp11']['counts'],\n", + " color='b', marker= '^', s=100, label=\"HAT-P-11, space\")\n", + "plt.scatter(trappist1_z_apo_meas, apo_counts_trappist1,\n", + " color='r', s=100, label='TRAPPIST-1, ground')\n", + "plt.scatter(trappist1_kepler_meas, kepler_stars['trappist1']['counts'],\n", + " color='r', marker= '^', s=100, label='TRAPPIST-1, space')\n", + "\n", + "# one-to-one line\n", + "countrange = np.linspace(1e4, 1e8, 20)\n", + "plt.plot(countrange, countrange, color='black')\n", + "\n", + "plt.xscale('log')\n", + "plt.yscale('log')\n", + "\n", + "plt.ylabel('synphot counts', size='14')\n", + "plt.xlabel('observed counts', size='14')\n", + "\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What are the % errors?" + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ground-based:\n", + "\t HAT-P-11 in r-band: 12 %\n", + "\t TRAPPIST-1 in z-band: 51 %\n", + "Space-based:\n", + "\t HAT-P-11: 11 %\n", + "\t TRAPPIST-1 14 %\n" + ] + } + ], + "source": [ + "print('Ground-based:')\n", + "print('\\t HAT-P-11 in r-band:',\n", + " int(abs(apo_counts_hatp11.value - hatp11_r_apo_meas) /\n", + " hatp11_r_apo_meas * 100), \"%\")\n", + "print('\\t TRAPPIST-1 in z-band:',\n", + " int(abs(apo_counts_trappist1.value - trappist1_z_apo_meas) /\n", + " trappist1_z_apo_meas * 100), \"%\")\n", + "print('Space-based:')\n", + "print('\\t HAT-P-11:',\n", + " int(abs(kepler_stars['hatp11']['counts'].value\n", + " - hatp11_kepler_meas) /\n", + " hatp11_kepler_meas * 100), \"%\")\n", + "print('\\t TRAPPIST-1',\n", + " int(abs(kepler_stars['trappist1']['counts'].value\n", + " - trappist1_kepler_meas) /\n", + " trappist1_kepler_meas * 100), \"%\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Not too bad!" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 58c83f1021021ca36b5034abdf0f46b0e4bb06f1 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 4 Oct 2021 09:44:33 -0400 Subject: [PATCH 3/4] move synphot tutorials --- .../{notebooks/synphot-measured-spec => synphot}/requirements.txt | 0 .../synphot-measured-spec => synphot}/synphot-measured-spec.ipynb | 0 .../synphot-model-spec => synphot}/synphot-model-spec.ipynb | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename tutorials/{notebooks/synphot-measured-spec => synphot}/requirements.txt (100%) rename tutorials/{notebooks/synphot-measured-spec => synphot}/synphot-measured-spec.ipynb (100%) rename tutorials/{notebooks/synphot-model-spec => synphot}/synphot-model-spec.ipynb (100%) diff --git a/tutorials/notebooks/synphot-measured-spec/requirements.txt b/tutorials/synphot/requirements.txt similarity index 100% rename from tutorials/notebooks/synphot-measured-spec/requirements.txt rename to tutorials/synphot/requirements.txt diff --git a/tutorials/notebooks/synphot-measured-spec/synphot-measured-spec.ipynb b/tutorials/synphot/synphot-measured-spec.ipynb similarity index 100% rename from tutorials/notebooks/synphot-measured-spec/synphot-measured-spec.ipynb rename to tutorials/synphot/synphot-measured-spec.ipynb diff --git a/tutorials/notebooks/synphot-model-spec/synphot-model-spec.ipynb b/tutorials/synphot/synphot-model-spec.ipynb similarity index 100% rename from tutorials/notebooks/synphot-model-spec/synphot-model-spec.ipynb rename to tutorials/synphot/synphot-model-spec.ipynb From df51b09dda0976998e818725e29b3c8593ce55f5 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 4 Oct 2021 09:45:46 -0400 Subject: [PATCH 4/4] move remaining files --- tutorials/notebooks/synphot-model-spec/requirements.txt | 5 ----- .../{notebooks/synphot-model-spec => synphot}/ccd_QE.csv | 0 .../{notebooks/synphot-model-spec => synphot}/skymodel.py | 0 3 files changed, 5 deletions(-) delete mode 100644 tutorials/notebooks/synphot-model-spec/requirements.txt rename tutorials/{notebooks/synphot-model-spec => synphot}/ccd_QE.csv (100%) rename tutorials/{notebooks/synphot-model-spec => synphot}/skymodel.py (100%) diff --git a/tutorials/notebooks/synphot-model-spec/requirements.txt b/tutorials/notebooks/synphot-model-spec/requirements.txt deleted file mode 100644 index fa2c29e3b..000000000 --- a/tutorials/notebooks/synphot-model-spec/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -synphot -matplotlib -numpy -astropy -astroquery \ No newline at end of file diff --git a/tutorials/notebooks/synphot-model-spec/ccd_QE.csv b/tutorials/synphot/ccd_QE.csv similarity index 100% rename from tutorials/notebooks/synphot-model-spec/ccd_QE.csv rename to tutorials/synphot/ccd_QE.csv diff --git a/tutorials/notebooks/synphot-model-spec/skymodel.py b/tutorials/synphot/skymodel.py similarity index 100% rename from tutorials/notebooks/synphot-model-spec/skymodel.py rename to tutorials/synphot/skymodel.py