diff --git a/README.rst b/README.rst deleted file mode 100644 index a1f1dd2..0000000 --- a/README.rst +++ /dev/null @@ -1 +0,0 @@ -Browse the branches to see the different notebooks I've been working on! \ No newline at end of file diff --git a/ccd_QE.csv b/ccd_QE.csv new file mode 100644 index 0000000..287d209 --- /dev/null +++ b/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/observing_examples.ipynb b/observing_examples.ipynb new file mode 100644 index 0000000..1d945d4 --- /dev/null +++ b/observing_examples.ipynb @@ -0,0 +1,1137 @@ +{ + "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", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Keywords\n", + "synphot, synthetic photometry, astropy, astroquery, astronomy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "In this tutorial we will:\n", + "
    \n", + "
  1. Query the properties of our target star (HAT-P-11 to start)
  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 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. Estimate the expected signal to noise ratio
  18. \n", + "
  19. Look at another example, this time with TRAPPIST-1
  20. \n", + "
  21. Simulate observations with a space-based telescope
  22. \n", + "
  23. Compare simulated counts to observed counts
  24. \n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "import astropy.units as u\n", + "from synphot import units" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 1. Query the properties of HAT-P-11" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we get the star's parameters using astroquery's Gaia query and astropy's SkyCoord: " + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Query finished.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: W35: None:5:0: W35: 'value' attribute required for INFO elements [astropy.io.votable.tree]\n", + "WARNING: W35: None:6:0: W35: 'value' attribute required for INFO elements [astropy.io.votable.tree]\n", + "WARNING: W35: None:7:0: W35: 'value' attribute required for INFO elements [astropy.io.votable.tree]\n", + "WARNING: W35: None:8:0: W35: 'value' attribute required for INFO elements [astropy.io.votable.tree]\n", + "WARNING: W35: None:10:0: W35: 'value' attribute required for INFO elements [astropy.io.votable.tree]\n", + "WARNING: W27: None:11:0: W27: COOSYS deprecated in VOTable 1.2 [astropy.io.votable.tree]\n", + "WARNING: W06: None:48:0: W06: Invalid UCD 'arith.ratio': Secondary word 'arith.ratio' is not valid as a primary word [astropy.io.votable.tree]\n", + "WARNING: W50: None:51:0: W50: Invalid unit string 'mas.yr**-1' [astropy.io.votable.tree]\n", + "WARNING: W50: None:54:0: W50: Invalid unit string 'mas.yr**-1' [astropy.io.votable.tree]\n", + "WARNING: W50: None:57:0: W50: Invalid unit string 'mas.yr**-1' [astropy.io.votable.tree]\n", + "WARNING: W50: None:60:0: W50: Invalid unit string 'mas.yr**-1' [astropy.io.votable.tree]\n", + "WARNING: W50: None:123:0: W50: Invalid unit string 'mas**-2' [astropy.io.votable.tree]\n", + "WARNING: W50: None:126:0: W50: Invalid unit string 'um**-1' [astropy.io.votable.tree]\n", + "WARNING: W06: None:129:0: W06: Invalid UCD 'em.wavenumber;stat.error': Primary word 'stat.error' is not valid as a secondary word [astropy.io.votable.tree]\n", + "WARNING: W50: None:129:0: W50: Invalid unit string 'um**-1' [astropy.io.votable.tree]\n", + "WARNING: W06: None:141:0: W06: Invalid UCD 'pos.errorEllipse;stat.max': Secondary word 'pos.errorEllipse' is not valid as a primary word [astropy.io.votable.tree]\n", + "WARNING: W50: None:156:0: W50: Invalid unit string ''electron'.s**-1' [astropy.io.votable.tree]\n", + "WARNING: W50: None:159:0: W50: Invalid unit string ''electron'.s**-1' [astropy.io.votable.tree]\n", + "WARNING: W06: None:162:0: W06: Invalid UCD 'arith.ratio': Secondary word 'arith.ratio' is not valid as a primary word [astropy.io.votable.tree]\n", + "WARNING: W50: None:171:0: W50: Invalid unit string ''electron'.s**-1' (suppressing further warnings of this type...) [astropy.io.votable.tree]\n", + "WARNING: W06: None:177:0: W06: Invalid UCD 'arith.ratio': Secondary word 'arith.ratio' is not valid as a primary word [astropy.io.votable.tree]\n", + "WARNING: W06: None:192:0: W06: Invalid UCD 'arith.ratio': Secondary word 'arith.ratio' is not valid as a primary word [astropy.io.votable.tree]\n", + "WARNING: W06: None:204:0: W06: Invalid UCD 'phot.color': Unknown word 'phot.color' [astropy.io.votable.tree]\n", + "WARNING: W06: None:207:0: W06: Invalid UCD 'phot.color': Unknown word 'phot.color' [astropy.io.votable.tree]\n", + "WARNING: W06: None:210:0: W06: Invalid UCD 'phot.color': Unknown word 'phot.color' [astropy.io.votable.tree]\n", + "WARNING: W06: None:282:0: W06: Invalid UCD 'phys.size.radius;stat.error': Primary word 'stat.error' is not valid as a secondary word (suppressing further warnings of this type...) [astropy.io.votable.tree]\n" + ] + } + ], + "source": [ + "from astropy.coordinates import SkyCoord\n", + "from astroquery.gaia import Gaia\n", + "\n", + "ID = 'HAT-P-11'\n", + "\n", + "coord = SkyCoord.from_name(ID)\n", + "width = u.Quantity(1, u.arcmin) # width / height of search\n", + "height = u.Quantity(1, u.arcmin)\n", + "search_results = Gaia.query_object_async(coordinate=coord, width=width, height=height)\n", + "\n", + "# the queried star will 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", + "# now get the parameters\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']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 2. Download a model spectrum for HAT-P-11 from PHOENIX:" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from astropy.io import fits\n", + "\n", + "T_eff = round(T_eff, -2) # round to nearest 100 K\n", + "\n", + "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", + "# Unit from PHOENIX model file:\n", + "flux = fits.getdata(url) * (u.erg / u.s / u.cm ** 2 / u.cm)\n", + "\n", + "wavelength_url = ('ftp://phoenix.astro.physik.uni-goettingen.de/v2.0/HiResFITS/'\n", + " 'WAVE_PHOENIX-ACES-AGSS-COND-2011.fits')\n", + "wavelengths = fits.getdata(wavelength_url) * u.Angstrom" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3. Construct a `synphot` source spectrum object from the above arrays:" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from synphot.spectrum import SourceSpectrum\n", + "from synphot.models import Empirical1D\n", + "\n", + "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\n", + "\n", + "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." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "collapsed": true + }, + "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": [ + "The bandpasses we will use are the SDSS r- and z- filters, whose transmission functions we query from SVO using the tynt package. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To construct a bandpass from an array with `synphot`, use SpectralElement with the Empirical1D model:" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: W42: /var/folders/bn/d7v8bk_16cjg8qcm1gj03m6h0000gp/T/tmp46vg3hd6:2:0: W42: No XML namespace specified [astropy.io.votable.tree]\n", + "WARNING: W42: /var/folders/bn/d7v8bk_16cjg8qcm1gj03m6h0000gp/T/tmphlz0oi7e:2:0: W42: No XML namespace specified [astropy.io.votable.tree]\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAD8CAYAAACVZ8iyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl0XOV98PHvb0YzGu3W5lW2JbAh\nXiAGhCEvJDFbatJgp7xtgb4ppFkIpeRNIOfNIU1KgHKapqFJSaGhnJaGBMISmqZuYkqahaYhCdhm\n8wK2ZfAi2ViyNlvL7M/7x70zGskyEng09z4zv885OjNz52rmubqj5ze/Z7tijEEppVRpC3hdAKWU\nUt7TYKCUUkqDgVJKKQ0GSiml0GCglFIKDQZKKaXQYKCUUgoNBkoppdBgoJRSCijz6o2bmppMa2ur\nV2+vlFJW2rJlyxFjTHO+X9ezYNDa2srmzZu9enullLKSiOybidfVZiKllFJTBwMReVBEukVk2wme\nFxH5poh0iMgrInJ2/ouplFJqJk0nM/g2sPYtnr8cWOr+XA986+SLpZRSqpCmDAbGmF8CfW+xy3rg\nO8bxW2CWiMzLVwGVUkrNvHz0GSwADuQ87nS3KaWUskRBO5BF5HoR2Swim3t6egr51koppd5CPoJB\nF7Aw53GLu+04xpgHjDHtxpj25ua8D5NVSin1DuVjnsEG4CYReQw4Dxg0xhzKw+sqpSZKJSB2zLmN\nDzn3A2WQikF8BKIDzm0wBIkRSMUhXO3cjg5AMAwm5TwOhp3fDYbc+yEIlrm34RPfD1dCRT2U13j9\n11B5NGUwEJFHgTVAk4h0Al8GQgDGmPuBjcAHgQ5gBPiTmSqsKjxjDC8eGGBObYQFsyrGPbdpbx99\nw3EuOn024TKdsjItiVEYPgLH3oTB/TDU41TgqTj07wMMxIacCnqwE6KDTqUfPQqBoFPB+0Wo0gkO\nEoBwFZSVQ6TO+alqhrKIs62+FWYthopZUN8GNfMgoJ8Xv5kyGBhjrpnieQP8Wd5KpDxljOHXe3qJ\nhILMrYvwpX/byi929hAJBfjOx85jdVsDAF/9z9f41jN7AFg2r5bHP3U+tZGQl0X3F2NgYB90vwYH\nfgv9e+HoQejaAunkJL8gUDsfJAiRWkjGoH4xNC6BUIVTwYJzW17jBItQlfMtPZ10KuayyFhlnIw5\nFXQw7GQPwRBUNjgZRSDofMtPJ5zHqcQU9+OQSo7djw/DSK8TyNIJSKecIJWMwWi/k4H07HL2TcYg\nNjjhUAMQmeWUp3oulFc75a+eA3Ut0NAGTac7x1nVrIGjQDxbjkJ5599f6uLun+xkfl0Ff/nhlZw2\nZyzd/+bPOvjGT3dlH5eXBfjspUvZ8PJBPvHQJn5w4wVs3tvHt57Zw9XnLuQ9pzZy8+Mvcc9Pd/MX\nH1ruxeH4S+wYvPQovPKYU/GDU/HWzncqu/NvdCr5ykaoWwSzFjqVtwScCntGeDzS+9hhOHYQRvrG\ngmJ0wAkoxw7D0S6naWuoG+LHxv9ueR3MOxOqZ0PtAifLaGiDuoVOU1VlI4h4cVRFR5wv9oXX3t5u\ndG2iwtvfO8LFf/sMS2ZX030sRqQswNM3v4+aSIjDR6O8/2u/4MIlTXz4rAW80TPMh949n7amKg70\njfB7//Asx6JJ4qk0713azIPXtVMWDPDpR1/kl7t6eOEvLiMYKNF/zJE++PXfw+YHnYqucQmcfS3M\nPwual0G1DpiYluFe6HsdejucwNq9HQ7vgOEeJ2ik4uP3D1XCrEVOM1T9YiezqFsINXPdJqm5RRcs\nRGSLMaY936+rmUGJefDZNwiI8NDHVnNwYJQrv/Vr7n56J3esX8k9P9tNKm247UMrWNRYOe73FjZU\n8i8fXc1fbXyVFfNr+exlp1EWdNL3i05v5j9ePsiuw8dYNq/Wi8Py1oHn4QefdNr83/W7cOHNsOCc\noquECqKq0flZeO7xz6XTTobR9wYcO+QE4IF9MLDf+dvv/w3Ejo7/nXA1NJ4KjUuhaakTpDO34arC\nHJMlNBgUKWMM39/cycoFdSyfP1ZB/6rjCBcsaWRObYQ5tRGue08rD/1mL+9eOIvHNx3gI+ctOi4Q\nZJzRUsej159/3PZVC2cBsLVrsPSCwfYfOoGgei589MfQeoHXJSpegYD7zb/lxPtEB52O92OHnKBx\nZDf07nYC9rZ/BXJaQmrmQ9OSnECx1AkcsxY5/SolRoNBkfrNnl4+/6+v0FQd5vk/v5RAQOgbjtPR\nPcSVZ49NEP/cB07jqW2HuOWJl6kuL+PTlyx92++1sKGSYEDY1zucz0Pwv/3PwQ+uh7lnwDWPa1OQ\nH2Q60OesOP65xCj07nGaoHp3wxH3duuT4zu5g+XQcMpYoGhc4vzMXuZ07hcpDQZF6qltbwJwZCjO\nTrf5Zsu+fgDObW3I7lcTCXH/R87hkef284ftC2mqLn/b7xUKBlhYX8HeIz4a9jjTRvrgXz/hjHb5\n/Qc1ENggVAFzVzo/uYxxhvv27h7LJI50OCPBdj41fvRX3SKnQ3veKpj3bud+zdzCHscM0WBQhNJp\nw3/tOMyZLXW80jnIb/b0smxeLZv39hEOBjhjQd24/c9aVM9Zi+pP6j0X1FdwaHD0pF7DGuk0/PgW\np/36Yz9xRrgoe4k4wby6GRb/r/HPpRJOn8SRXdD9Kry5FQ69DK/9aGyf6jkw90y3b2IJzF4O81dZ\n1yehwaCIDI4k2NV9jLKA8ObRKJ9fezp/+5NdbN7Xx8cubGPT3j7ObKkjEsp/e2hjVTkv9Q3k/XV9\n6YVvw/Z/g0u+DC3neF0aNZOCIbeSPxVOv3xse/QoHN7mBIZDLztBYu//QDLqPC8BqG2BhaudZsSF\nq6H5Xc7cCp/SYFBEPvXwZn77urPaeCgoXPKuOfxyVw/P7uklmkixtWuQj194yoy8d1N1Ob1DsRl5\nbV9JxuC/vwaL3uOMGlKlKVLrZBG5mUQqAUOH4eCL8OY2Z1jsgedg25Nj+8xa7Hx2zv9TJ3vwEQ0G\nReLgwGg2EABcumwOdZUh2lsb+OFLB/n3l7pIpAzntp5cc9CJNFaHGY6nGI2nqAgX8UiM137sNA+t\n+3sdOqrGC4bGRjstu2Js+/AR6HoBunc4gWLXU7DkUg0GambsPOzM3HzkE+fR1T/KZcvnAGSXj7j3\nFx2IQHvrzKSpTdVhAHqHY7SEJx+aWhRefNiZ1HTqRV6XRNmiqglO+4DzA85s64D/ql7/lUi9I3u6\nhwBnnaALljRlty9prqauIsSBvlHOWFBHXcXMLHmQWZfoWHSydXeKxGAn7Pk5vP/zJTkOXeWJT78s\n6QpQRWJPzxD1lSEaqsLjtgcCwhXvdtamuXr1wsl+NS9qSiEYvPwoYGDVH3ldEqXyTjODIrGne5gl\ns6snfe6OdSv54/NbOW3O5M/nQ3XE+SgdiyZm7D0898oT0PpeHUqqipJmBkWio2eIU5snr+yDAeH0\nuTXIDHZ41rjBYChWpJlB/15nrPm7ftfrkig1IzQYFIG+4Th9w/ETZgaFUFPuBIOjxdpM1PEz53bJ\npd6WQ6kZosGgCLze43QenygzKIRMn8FQMQeDWYucGaZKFSENBkWgo9v7YBAJBSgLSHH2GSTj8MZ/\nO1mBzi1QRUqDQRHYdXiIilCQlvqKqXeeISJCdaSsOEcTHXjOuQ6xNhGpIqbBoAjs7j7GktnVBDy+\nylhVuIzhYuxA7vipM0mo7X1el0SpGaPBwHKptOGVzkGW++CiMhXhINFkyuti5N+B52D+2c4F2pUq\nUhoMLLdx6yEGRxO897SmqXeeYRWhINFE2uti5Fc65axKueBsr0ui1IzSYGCxwdEEX96wnXe31LF2\nhfcX2IiEAozGiywzOLILEiNOZqBUEdNgYLEfvthF33Ccuz58Rvbi9F6KhIKMJoosGBx80bn12QqT\nSuWb9zWIesde3N/P3NoIZ7TUTb1zATjNREUWDA69AqFKnV+gip4GA4vtOHSUFfO97zjOiBRjMHhz\nq3NxdV2lVBU5DQYWOzQQZWGDf5bDrSi2ZiJjnGAw90yvS6LUjNNgYKlEKs2xWPK4Jau9VBEOFlcH\n8sB+iA3C3JVel0SpGafBwFL9I3EA6itn5mI170Sk2IaWHtnt3Da/y9tyKFUAGgwsNTDirAE0q9I/\nmUEkFCCeSpNKG6+Lkh+9Hc6tdh6rEqDBwFL9w5nMwD/BoCLkdLIWTSdy3x4I10BVs9clUWrGTSsY\niMhaEdkpIh0icuskzy8SkV+IyIsi8oqIfDD/RVW5+rOZgX+aiSrCTjAomk7k3g5oPFVXKlUlYcpg\nICJB4D7gcmA5cI2ILJ+w25eAJ4wxZwFXA/+Q74Kq8QYyfQY+6kAuL3M+TrFkkfQb9O5xgoFSJWA6\nmcFqoMMY87oxJg48BqyfsI8BMgPe64CD+SuimkwmM2jwUTNR2A0G8WIIBskYDB7Q/gJVMsqmsc8C\n4EDO407gvAn73A78REQ+DVQBuvD7DOsfiVNeFsg2zfhBOOiUpSiCQf9eMGlo0MxAlYZ8dSBfA3zb\nGNMCfBD4rogc99oicr2IbBaRzT09PXl669LUPxz3VecxFFlm0LvHudVmIlUiphMMuoCFOY9b3G25\nPg48AWCM+Q0QAY5bU9kY84Axpt0Y097crCM0Tkb/SMJXnceQEwxSRdCBnBlW2nCKt+VQqkCmEww2\nAUtFpE1EwjgdxBsm7LMfuARARJbhBAP96j+DBkZ8mBkEi6gDuW8PVDRAZYPXJVGqIKYMBsaYJHAT\n8DTwKs6ooe0icqeIrHN3+xzwSRF5GXgU+KgxpkhmHvlT/0ic+iqfZgbFEAwGDkD9Yq9LoVTBTKcD\nGWPMRmDjhG235dzfAVyQ36KptzIwkvBdZlBeTMHgaJeOJFIlRWcgWyidNk5m4LNgMNZnYHkwMAYG\nO6GuxeuSKFUwGgwsdCyaJG38NfsYxvoMrM8MooMQH4LaBV6XRKmC0WBgobEVS32aGdgeDI66g+Xq\nNBio0qHBwELZYOCzDuRQsEiaiQbdYFCrzUSqdGgwsJAfl6+GYsoMOp1b7TNQJUSDgYUymYGf1iWC\nIlqobrALJAg1c70uiVIFo8HAQn0+vJYBFFEH8tEuqJkHAf+s+6TUTNNgYKGBkQQBgZrItKaJFEwg\nIJQFpAj6DDq181iVHA0GFuofiTOrMkwg4L+LroTLAsWRGeiwUlViNBhYaMCHi9RlWB8MjHH6DDQz\nUCVGg4GF/Dj7OCMctDwYDB+BVEyHlaqSo8HAQn0+vJZBRrgsQMLmPgMdVqpKlAYDCzmL1Pm3mShm\nczAY1NnHqjRpMLDQwGjcv30GtjcTHXUv360dyKrEaDCwTDSRIppI+272cUa57R3Iw90gAahs9Lok\nShWUBgPLHB11lqKoq/BpZmB9MDjiBAKdcKZKjAYDywyMZtYl8nEwsLnPYLgHqvT63Kr0aDCwTGaR\nOt9mBrb3GQwfgaomr0uhVMFpMLDMYCYzqPBnn0EoaPnQUs0MVInSYGCZAXfFUm0mmiHDRzQYqJKk\nwcAymcygVpuJ8i8Zg9igNhOpkqTBwDLZFUvL/bViaYbVM5CHjzi3lRoMVOnRYGCZwdEEdRUhX65Y\nCk6fgbWZwXCPc6vNRKoEaTCwzIAbDPzKyQyM18V4ZzKZgQYDVYI0GFhmYCROnU9nH0OxZAbaTKRK\njwYDyxz1e2YQdK50ZoyF2cGIZgaqdGkwsIwNzUSAnU1Fwz0QLIfyGq9LolTBaTCwzFA06btrH+cK\nBTPBwMKmoswcA/Fn57xSM0mDgWWGYkmqfTqsFMYyAyv7DYZ7tL9AlSwNBhZJptLEkmmqwv4NBnZn\nBroUhSpdGgwsMhxPAVBV7t/llTOZQczKzEAXqVOla1rBQETWishOEekQkVtPsM8fisgOEdkuIt/L\nbzEVwHAsCeDvZiJbMwNjtJlIlbQpaxURCQL3AZcBncAmEdlgjNmRs89S4AvABcaYfhGZPVMFLmWZ\nYFDl52Bg62ii+BAko9pMpErWdDKD1UCHMeZ1Y0wceAxYP2GfTwL3GWP6AYwx3fktpgKn8xj83UyU\n6TOwrgNZl6JQJW46wWABcCDncae7LddpwGki8qyI/FZE1uargGrMSKbPwMcdyNnRRLY1E+lSFKrE\n5atWKQOWAmuAFuCXInKGMWYgdycRuR64HmDRokV5euvSMWRBM1Eo6IzRtzcz0D4DVZqmkxl0AQtz\nHre423J1AhuMMQljzBvALpzgMI4x5gFjTLsxpr25Wb+BvV02dCCXl1nagTzS69xWNnpbDqU8Mp1g\nsAlYKiJtIhIGrgY2TNjnhzhZASLShNNs9Hoey6mwowPZ2j6D0X7ntqLB23Io5ZEpg4ExJgncBDwN\nvAo8YYzZLiJ3isg6d7engV4R2QH8Avh/xpjemSp0qcrMM/BzZhC2NTMY7YdACMJVXpdEKU9Mq1Yx\nxmwENk7YdlvOfQPc4v6oGTIcSxIQiIT8O1cwmxnYFgxG+qCiXtclUiXLv7WKOs5IPEVluAzxcYUV\ntrmZqFKbiFTp0mBgkVgy5eusACweWjra72QGSpUof9csapxYIk15mX8nnEHOQnU2ZgYaDFQJ02Bg\nkVgynR266Vd2ZwbaTKRKl79rFjVOLJnKVrZ+lZl0Zt3aRCN9UDHL61Io5Rl/1yxqnFgyTXnI381E\nmQ5kq5awToxCclQ7kFVJ02BgkWgi5ftmIhEhFBS75hmMuqumaJ+BKmH+rlnUODb0GYCTHVjVgTza\n59xqMFAlzP81i8qyYTQRQKgsYFcHsi5FoZQGA5vEkinKfT7PANzMwKZgMKKZgVL+r1lUli3NRKFg\nwK4O5ExmoB3IqoT5v2ZRWU4w8H8zUXlZwK6hpdlmIs0MVOnSYGCRmAWjicDJDOLJlNfFmL7RPgiG\nIVTpdUmU8oz/axaV5cwz8P8pC5WJfZmBrliqSpz/axYFgDHGmmaicDBg16qluhSFUhoMbJEZqmlN\nM5FNo4lGB7S/QJU8/9csChhb3iHi8+UowFmszq7MYEDXJVIlT4OBJaIJp0PWhszAunkGuny1UhoM\nbBFL2NNMZF9moMFAKf/XLAoYayby+6ql4PQZWJMZJGOQGNZmIlXyNBhYIpa0qJnIpsxAVyxVCtBg\nYI1sZmBBMHBGE1kyz0BnHysFaDCwxlifgf+biZzlKGzJDDQYKAUaDKyRbSayYQZyUOxpJoq6zUQR\n7TNQpc3/NYsC7GomCmtmoJR1/F+zKCA3GPi/mSgUDJBMG9JpC/oNNBgoBWgwsEbMpklnbhmtWJJi\ntB8kAOW1XpdEKU/5v2ZRQO48A/+fsnDQsmAQmQUB//9dlZpJ+h9gCduaiQASNnQi6+xjpQANBtaw\nam0i25qJNBgopcHAFjaNJhrLDCzpQNalKJTSYGCLWNK55KVYcDWusczAgktf6rUMlAKmGQxEZK2I\n7BSRDhG59S32+98iYkSkPX9FVODMQLYhKwAIB52AFbcmM9BgoNSUtYuIBIH7gMuB5cA1IrJ8kv1q\ngM8Az+W7kCpz/WP/dx6DRX0G6RREBzUYKMX0MoPVQIcx5nVjTBx4DFg/yX5/CXwViOaxfMqVaSay\nQbbPwO/BIDoIGA0GSjG9YLAAOJDzuNPdliUiZwMLjTE/fqsXEpHrRWSziGzu6el524UtZbGkTc1E\nlgwt1dnHSmWddO0iIgHg68DnptrXGPOAMabdGNPe3Nx8sm9dUpw+AzuaiUJu0Ir5PTPQaxkolTWd\nYNAFLMx53OJuy6gBVgLPiMhe4Hxgg3Yi51csmbJi9jFoZqCUjaZTu2wClopIm4iEgauBDZknjTGD\nxpgmY0yrMaYV+C2wzhizeUZKXKKsaiaypQNZl69WKmvK2sUYkwRuAp4GXgWeMMZsF5E7RWTdTBdQ\nOZxgYEczUdiWDmTNDJTKKpvOTsaYjcDGCdtuO8G+a06+WGqiWCJFeU2518WYlkyfge8vcJMNBpoZ\nKGVHu4Oya55BdtVSn086G+2HcA0EQ16XRCnPaTCwRCxhzzyDbDCwITPQJiKlAA0G1rCpAzlU5ixH\nYUWfgTYRKQVoMLCGjR3ImhkoZQ8NBpawaZ5BMCCIaGaglE3sqF1KXCptSKQMEUsyAxEhHAxYkBno\n8tVKZWgwsEDcousfZ4SDAX9POjNGm4mUymFP7VLCbLrkZUa4zOeZQXwY0gkNBkq57KldStjYJS/t\naCYCZxlrX/cZ6OxjpcbRYGCBWNLOzCDh50lnGgyUGsee2qWEZTKDiCUzkAFCQfF3M5EGA6XG0WBg\ngVgi00xkz+kKlwX93YGcCQa6YqlSgAYDK2SbiawaTeTzzCCqF7ZRKpc9tUsJiybs60B2+gx8HAy0\nmUipcTQYWMDGDuSQ3yedjfZDsBxCFV6XRClfsKd2KWExCyedWTG0tKIeRLwuiVK+YE/tUsIymYEt\ny1GA00wU83tmoE1ESmVpMLBAdjSRRZlB2PeZga5LpFQue2qXEja2HIVdmYHvh5ZqMFAqS4OBBcaW\no7DndIWCQiLp8xnIuny1Uln21C4lzMZg4P/MQJuJlMplT+1SwmLJFGUBoSxoz+kKBQMk/NqBnIxB\nYlgzA6Vy2FO7lLBYwp7rH2eEywLE/JoZjOrsY6UmsquGKVHRZIpyixapAyh3J50Z48N+A519rNRx\nNBhYwMbMIBJ2gpcv5xpoMFDqOHbVMCUqlrQvGFS4mcxoPOVxSSahwUCp49hVw5SoWDJl1bUMACrd\nzGAk4cdg0Ofc6vLVSmVpMLCAjZlBJJsZJD0uySRGep3bqiZvy6GUj9hVw5SoaCJl1exjgMpwGQCj\ncR/2GYz0QTAM4WqvS6KUb2gwsEAsmbZqXSLIaSbya2ZQ2agrliqVw64apkRZOZoo5OM+g5E+Jxgo\npbKmVcOIyFoR2SkiHSJy6yTP3yIiO0TkFRH5mYgszn9RS1fMwnkGmcwg6sfRRCO9UNngdSmU8pUp\ng4GIBIH7gMuB5cA1IrJ8wm4vAu3GmDOBJ4G/yXdBS5mNHciZoaUjvg0GmhkolWs6NcxqoMMY87ox\nJg48BqzP3cEY8wtjzIj78LdAS36LWdqiibSFHcjuaCJfNhNpMFBqoukEgwXAgZzHne62E/k48NTJ\nFEqNF0ukiFjWgVwR9umks3TKmXSmwUCpccry+WIi8hGgHXj/CZ6/HrgeYNGiRfl866JljGEkkcp+\n07aFb5uJRgcAo8FAqQmm83WzC1iY87jF3TaOiFwKfBFYZ4yJTfZCxpgHjDHtxpj25ubmd1LekhNP\npUmlTbZytUVZMEA4GPBfM1FmwpkGA6XGmU4w2AQsFZE2EQkDVwMbcncQkbOAf8QJBN35L2bpirqT\ntirCeU3iCqIiHPTfDORsMNDRRErlmjIYGGOSwE3A08CrwBPGmO0icqeIrHN3+xpQDXxfRF4SkQ0n\neDn1No0knMrUtmYicJqKfNdMpJmBUpOa1tdNY8xGYOOEbbfl3L80z+VSrkwHrG3NROAEMG0mUsoO\ndg1RKUGZb9YVNmYGYR9nBhXaTKRULg0GPpf5Zm1jZlATKeNYNOF1McYb6YVQJYQrvS6JUr6iwcDn\nMs1ENvYZ1ERCHIv6rAP52JtQPcfrUijlOxoMfM7mZiInM/BZMBg6rMFAqUloMPC5qMXNRLWREEf9\n1kw01A01GgyUmkiDgc+NZJuJ7JtnUBspYyiWJJ02XhdlzJA2Eyk1GQ0GPpe5OIyNmUFNJIQxMOSX\niWeJKEQHoXq21yVRynfs+7pZYrLNRJb2GQAciyapjYQ8Lg1OfwFA9Vxvy6GOk0gk6OzsJBqNel0U\n34hEIrS0tBAKFeZ/R4OBz43EU5QFhLBl1zMAqK1wPsTO8NIKbwsDTn8BaDORD3V2dlJTU0Nrayui\nlyPFGENvby+dnZ20tbUV5D3tq2FKzEg8ZWUTEYzPDHwhmxloM5HfRKNRGhsbNRC4RITGxsaCZkoa\nDHwumkhZ2UQETp8BwNFRn4woGnrTudXMwJc0EIxX6L+HBgOfG4nbGwxq3czAN8NLjx0GCUCVLp+u\n8uf+++/nO9/5jtfFOGnaZ+BzQ7Ek1eV2nqbGqnIAeofiHpfENXgAauZB0M6/pyocYwzGGAKBt/6+\nnEwmueGGGwpUqpmlmYHPDUWT2bZ329RWlBEKCr3DfgkGnVC3cOr9VEnau3cvp59+Otdeey0rV64k\nGAxy8803s2LFCi655BJ6enoAWLNmDZ/97Gdpb2/nnnvu4fbbb+fuu+/OPnfzzTfT3t7OsmXL2LRp\nE1deeSVLly7lS1/6Uva9Hn74YVavXs2qVav41Kc+RSrl/YKOdtYyJeRYLMmCWT4YifMOiAiNVeUc\nOTbphe8Kb2A/tJzrdSnUFO74j+3sOHg0r6+5fH4tX75ixZT77d69m4ceeojzzz8fEaG9vZ1vfOMb\n3Hnnndxxxx3ce++9AMTjcTZv3gzA7bffPu41wuEwmzdv5p577mH9+vVs2bKFhoYGTj31VG6++Wa6\nu7t5/PHHefbZZwmFQtx444088sgjXHvttXk95rdLg4HPDcUS1ERqvC7GO9ZYHebIkA+CQToFR7tg\n1pVel0T52OLFizn//PMBCAQCXHXVVQB85CMf4corxz47me2TWbfOuebXGWecwYoVK5g3bx4Ap5xy\nCgcOHOBXv/oVW7Zs4dxznS8mo6OjzJ7t/Qg3DQY+d8ziZiKApupyfzQTHXsT0kltJrLAdL7Bz5Sq\nqqoTPpc7uuet9isvd/rKAoFA9n7mcTKZxBjDddddx1e+8pU8lDh/tM/Ax4wxDEXt7UAGNzPwQzPR\n4AHndtYib8uhrJFOp3nyyScB+N73vseFF16Yl9e95JJLePLJJ+nudiZB9vX1sW/fvry89snQYOBj\nsWSaZNpQbXFm0FxdzpHhOMZ4vFjdwH7ntq7F23Ioa1RVVfH888+zcuVKfv7zn3PbbbdN/UvTsHz5\ncu666y4+8IEPcOaZZ3LZZZdx6NChvLz2ybC3likBmZm7NX5Y1+cdaq4pJ55MMzCSoL4q7F1BejsA\ngfrCTO1X9mltbWXbtm3jtn39618/br9nnnlm3OPcDuTc59asWcOaNWsmfe6qq656y34HL2hm4GOZ\nS0bWWNxMtLDBubzkgf4Rbwv4UXhEAAAKO0lEQVRyZLfTRBSKeFsOpXxKg4GPDcWczMDmPoNFbjDY\n3+dxMOjdDU2neVsGZZWhoSGvi1BQGgx8bGDEyQwyq3/aKJsZ9I16V4h0Gnr3QNNS78qglM9pMPCx\n/hFnSGaDl23tJ6m6vIyGqrC3mcHRTkiMQOMS78qglM9pMPCxPnd8fqPFwQCgramKPd0eptwHX3Ru\n563yrgxK+ZwGAx/rG44TEKizuJkIYMX8WrYfHPTuWshdL0AgBHNXevP+SllAg4GP9Q3Hqa8MEwjY\nvc77ivm1DMdT7POqqejgCzBnBZSVT72vUm+TLmGtZlzfcNzbsfl5csaCWQC8sK+ftqYTT+OfEYko\nHHgezvmTwr6vKgm6hLUqiIODUebW2j8u/l1za2iqDvPL3T2Ff/P9v4ZkFE69uPDvraxx//33s2rV\nKlatWkVbWxsXXXQR1dXVuoS18oeu/lEuXeb9aoYnKxAQ3re0mZ/v7CaeTBMuK+B3kNc2QrAcWi8o\n3Huqk/PUrfDm1vy+5twz4PK/PuHTN9xwAzfccAOJRIKLL76YW265hXXr1ukS1sp70USKI0Mxa69l\nMNH6sxbwgxe72Lj1EB8+a0Fh3jQRha3fh2VXQLjAzVPKSp/5zGe4+OKLueKKK3QJ68mIyFrgHiAI\n/JMx5q8nPF8OfAc4B+gFrjLG7M1vUUtLhzsUs625OCqx9y5pYsnsav7up7tYu3IukVABruu86Z8g\nOgDt2l9glbf4Bj+Tvv3tb7Nv377st/+JSn4JaxEJAvcBlwPLgWtEZPmE3T4O9BtjlgDfAL6a74KW\nmlc6BwE4Y0GdxyXJj0BAuGPdCvb2jvB/H32RYXepjRnT/So88xU49RJozc/Sw6p4bdmyhbvvvpuH\nH344e93jUlvCejqZwWqgwxjzOoCIPAasB3bk7LMeuN29/yRwr4iI8XzdYjsZY/jx1oMsmFWRXdun\nGFywpIkvX7GcO3+0g0v+9r/5w/YWVrc1srixkjm1kZPvSzDGuc7xaz9yAkGoEtZP/i1PqVz33nsv\nfX19XHTRRQC0t7dnl7C+6667mD17No8//nhe3it3Cet0Ok0oFOK+++5j8eLFeXn9d0qmqq9F5PeB\ntcaYT7iP/xg4zxhzU84+29x9Ot3He9x9jpzoddvb202mA0aN+c9tb3LHf2zn0GCUL35wGZ983yle\nFynvNu3t45s/283/7B7/8fj+De/h3NaGt/+C3/09OLwDRnoh7aznxOIL4MP/APWtJ19gNeNeffVV\nli1b5nUxxqmurvZ8sbrJ/i4issUY057v9ypoB7KIXA9cD7BokV5xajKza8s5e3E97z+tmT84pzgv\nxHJuawPf/fh5DI4k2No1SNfACIePxlj8TrOg5mXORWsqG6FmvtMsNHsZiN2T9ZQqpOkEgy4g98Kx\nLe62yfbpFJEyoA6nI3kcY8wDwAPgZAbvpMDF7uxF9Zz9R/VeF6Mg6ipDXLi06eRfaO1fnfxrKDWB\n11lBoU2nkXYTsFRE2kQkDFwNbJiwzwbgOvf+7wM/1/4CpZSyx5SZgTEmKSI3AU/jDC190BizXUTu\nBDYbYzYA/wx8V0Q6gD6cgKGUUtNmjBk3fLPUFfr79LT6DIwxG4GNE7bdlnM/CvxBfoumlCoVkUiE\n3t5eGhsbNSDgBILe3l4ikcItR6MzkJVSnmtpaaGzszO7/o9yAmRLS+EGkWgwUEp5LhQK0dbW5nUx\nSpquWqqUUkqDgVJKKQ0GSimlmMZyFDP2xiI9gFerMzUBJ1wqowiV2vGCHnOpKMVjPt0YU5PvF/Ws\nA9kY0+zVe4vI5plY28OvSu14QY+5VJTqMc/E62ozkVJKKQ0GSimlSjcYPOB1AQqs1I4X9JhLhR5z\nnnjWgayUUso/SjUzUEoplaNogoGIBEXkRRH5kfu4TUSeE5EOEXncXX4bESl3H3e4z7fmvMYX3O07\nReR3vDmS6RORWSLypIi8JiKvish7RKRBRP5LRHa7t/XuviIi33SP7xUROTvnda5z998tIted+B29\nJSI3i8h2EdkmIo+KSKQYz7OIPCgi3e4VBDPb8nZeReQcEdnq/s43xeOV4U5wvF9zP9eviMi/icis\nnOcmPX8istbd1iEit+Zsn/Qz4qXJjjnnuc+JiBGRJvdxYc6xMaYofoBbgO8BP3IfPwFc7d6/H/hT\n9/6NwP3u/auBx937y4GXgXKgDdgDBL0+rimO+SHgE+79MDAL+BvgVnfbrcBX3fsfBJ4CBDgfeM7d\n3gC87t7Wu/frvT62SY51AfAGUJFzfj9ajOcZeB9wNrAtZ1vezivwvLuvuL97uQ+P9wNAmXv/qznH\nO+n5c3/2AKe4/wsvA8tzPivHfUb8dszu9oU4lwvYBzQV8hx7/sHP0x+2BfgZcDHwI/cPcCTnw/Qe\n4Gn3/tPAe9z7Ze5+AnwB+ELOa2b38+MPztXk3sDt98nZvhOY596fB+x07/8jcM3E/YBrgH/M2T5u\nP7/84ASDA+4Hv8w9z79TrOcZaJ1QOeblvLrPvZazfdx+fjneCc/9HvCIe3/S85d77nP3e6u6wOuf\nyY4ZeBJ4N7CXsWBQkHNcLM1Efwd8Hki7jxuBAWNM0n3ciVOZwFilgvv8oLt/dvskv+NHbUAP8C/i\nNI/9k4hUAXOMMYfcfd4E5rj3T3R8Vhy3MaYLuBvYDxzCOW9bKP7znJGv87rAvT9xu599DOfbLbz9\n432rusBXRGQ90GWMeXnCUwU5x9YHAxH5ENBtjNnidVkKrAwnzfyWMeYsYBin+SDLOF8LimK4mNtG\nvh4nCM4HqoC1nhbKI8V0XqciIl8EksAjXpdlJolIJfDnwG1T7TtTrA8GwAXAOhHZCzyG01R0DzBL\nRDLLbbQAXe79Lpx2Odzn64De3O2T/I4fdQKdxpjn3MdP4gSHwyIyD8C97XafP9Hx2XLclwJvGGN6\njDEJ4Ac4577Yz3NGvs5rl3t/4nbfEZGPAh8C/o8bAOHtH28vJ/6M+MmpOF90XnbrshbgBRGZS6HO\nsdftZnlug1vDWAfy9xnfaXSje//PGN+x+IR7fwXjO6Zex2cdi5Mc7//gLFoFcDvwNfcnt6Pxb9z7\nv8v4Tqjn3e0NOH0P9e7PG0CD18c2ybGeB2wHKt1jeAj4dLGeZ47vM8jbeeX4zsUP+vB41wI7gOYJ\n+016/nAy5dfdbZkO5BXu70z6GfH6Z+IxT3huL2N9BgU5x57/QfL8x13DWDA4xf2DdLgfhnJ3e8R9\n3OE+f0rO738RZ0TCTjweYTHN410FbAZeAX7ofiAacTrTdwM/zflwCHCfe3xbgfac1/mY+/foAP7E\n6+N6i+O9A3gN2AZ8160Qiu48A4/i9IskcDLAj+fzvALt7t9wD3AvEwYh+OR4O3Daw19yf+6f6vzh\njLrZ5T73xZztk35G/HbME57fy1gwKMg51hnISimliqLPQCml1EnSYKCUUkqDgVJKKQ0GSiml0GCg\nlFIKDQZKKaXQYKCUUgoNBkoppYD/D3mifiztap2yAAAAAElFTkSuQmCC\n", + "text/plain": [ + "

" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import tynt\n", + "from synphot.spectrum import SpectralElement\n", + "\n", + "sdss = ['rprime', 'zprime'] # only want r' and z' bands for now\n", + "\n", + "f = tynt.FilterGenerator()\n", + "\n", + "bandpasses = {}\n", + "for band in sdss:\n", + " filt = f.download_true_transmittance('SLOAN/SDSS.' + band + '_filter')\n", + " bp = SpectralElement(Empirical1D,\n", + " points=filt.wavelength,\n", + " lookup_table=filt.transmittance)\n", + " bandpasses[band] = bp\n", + " \n", + " plt.plot(bp.waveset, bp(bp.waveset), label=band)\n", + "plt.legend(loc='lower right')\n", + "plt.xlim(3000, 14000)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also construct a bandpass from a file using synphot's SpectralElement.from_file()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 5. Model the attenuation by the atmosphere" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Model the atmospheric transmittance using the local script `skymodel.py`, which queries results from the SkyCalc Sky Model Calculator:" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import skymodel\n", + "\n", + "trans_waves, transmission = skymodel.get_atmospheric_transmittance(airmass=1.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use `synphot` to convolve the atmospheric effects with other parts of the observation:" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "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 on the spectrum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this we use the values in the table found in section 3.5 on this page." + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEKCAYAAADTgGjXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl8VdW5//HPk4EkQAYggYSQEGYE\nZTIyqlVrFXFApVUQK7ZUra2dtPZae3/e1t57q7eDrdWqqHUei9pS1DprFZQhzCBgmGdCmAkh0/r9\nsTd6iAwh5GSf4ft+vc4re6+9ss+z2eE8Z6+191rmnENERKQxEoIOQEREopeSiIiINJqSiIiINJqS\niIiINJqSiIiINJqSiIiINJqSiIiINJqSiIiINJqSiIiINFpS0AEcr+zsbFdUVBR0GCIiUaWkpGSb\ncy6nqfcbdUmkqKiI2bNnBx2GiEhUMbM14divmrNERKTRlERERKTRlERERKTRwpZEzOyvZrbVzBYd\nYbuZ2b1mVmpmC8xsULhiERGR8AjnlcjjwMijbL8A6OG/rgceCGMsIiISBmFLIs65fwPbj1JlNPCk\n83wCZJlZXrjiERGRphdkn0g+sC5kfb1fJiIiUSIqnhMxs+vxmrwoLCwMOJrosmNfFUs372H5lj3s\nqKgiNTmRtOREWqUk0SEjhdyMVDpmpdEqJSr+FEQkwgT5ybEBKAhZ7+SXfYlzbhIwCaC4uFiTwoeo\nqqnj38vLKFm7gyUbd7Nk027K9hzADBLMqK079j+XGfTqkM7Awix652bQKiWJtORE2rRMZlDnNqQm\nJzbDkYhINAoyiUwBbjKz54EhwC7n3KYA44lY1bV1lG7dy+KNu9m1v5pWLRJJTU5k1urtvLpwEzsr\nqklKMHp0SOfMHjnkZ6XiAOcgMy2Znrnp9M5NJ7t1CpXVtVRW17KnsoYtuyvZsucAK7buZe66nUxd\nsInnZq475L3TkhMZ0T2br/TKoU9eBj07tCY9NTmYfwgRiThhSyJm9hxwFpBtZuuB/wKSAZxzDwKv\nAaOAUqAC+Fa4YolWM1dt50/vLGfW6h1U1dR9aXtqcgLn983l0oH5DO/WjpSkY18xtEpJolVKEu1a\np1CU3eqQbXV1jvJ9VVRW11JRVcvGXft5b+lW3vl0K29/uuXzetmtU2id4iWyjNRkxpyaz+WDOpGc\n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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "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 decimals\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 together by simply multiplying the SpectralElement objects:" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bp_atmos_qe = {} # setting up a dictionary for the different SDSS bands\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's Observation:" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from synphot.observation import Observation\n", + "\n", + "band = 'rprime' # only want to know about the r' band\n", + "\n", + "observation = Observation(photlam_hatp11, bp_atmos_qe[band])" + ] + }, + { + "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: " + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "countrate = observation.countrate(area=aperture_area) / gain" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How many counts can we expect in a 10s exposure?" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "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", + "counts_hatp11 = countrate * exptime\n", + "\n", + "print(\"HAT-P-11 counts in the r-band, 10 s exposure:\")\n", + "print(int(counts_hatp11.value), \"cts\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 9. Signal to noise ratio" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To estimate the signal to noise ratio of this observation, input the total counts into `synphot`'s `howell_snr` function:" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SNR of HAT-P-11 in 10 s exposure:\n" + ] + }, + { + "data": { + "text/latex": [ + "$6193.0315 \\; \\mathrm{ct^{1/2}}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from synphot.observation import howell_snr\n", + "\n", + "print(\"SNR of HAT-P-11 in 10 s exposure:\")\n", + "howell_snr(counts_hatp11)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also use `synphot` to calculate the exposure time needed to obtain a certain SNR:" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exposure time needed to obtain SNR > 100:\n" + ] + }, + { + "data": { + "text/latex": [ + "$0.0026073145 \\; \\mathrm{s}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from synphot.observation import exptime_from_howell_snr\n", + "\n", + "desired_snr = 100 * np.sqrt(1 * u.ct)\n", + "\n", + "print(\"Exposure time needed to obtain SNR > 100:\")\n", + "exptime_from_howell_snr(desired_snr, countrate)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 10. Another example, this time with TRAPPIST-1" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "(using the same instrument and telescope)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "T_eff = 2600 # approx temperature of trappist-1 [K], Gillon 2017\n", + "\n", + "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", + "# Unit from PHOENIX model file:\n", + "flux = fits.getdata(url) * (u.erg / u.s / u.cm ** 2 / u.cm)\n", + "\n", + "wavelength_url = ('ftp://phoenix.astro.physik.uni-goettingen.de/v2.0/HiResFITS/'\n", + " 'WAVE_PHOENIX-ACES-AGSS-COND-2011.fits')\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": 60, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\nAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "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 z-band:" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TRAPPIST-1 counts in the z-band, 10 s exposure:\n", + "306750 cts\n" + ] + } + ], + "source": [ + "band = 'zprime'\n", + "\n", + "observation = Observation(photlam_trappist1, bp_atmos_qe[band])\n", + "\n", + "countrate = observation.countrate(area=aperture_area) / gain\n", + "counts_trappist1 = countrate * 10 * u.s\n", + "\n", + "print(\"TRAPPIST-1 counts in the z-band, 10 s exposure:\")\n", + "print(int(counts_trappist1.value), \"cts\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compute the signal to noise ratio:" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SNR of TRAPPIST-1 in 10 s exposure:\n" + ] + }, + { + "data": { + "text/latex": [ + "$553.85044 \\; \\mathrm{ct^{1/2}}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(\"SNR of TRAPPIST-1 in 10 s exposure:\")\n", + "howell_snr(counts_trappist1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can get a more detailed estimate of the signal to noise ratio if you include additional noise sources, such as the readnoise of the detector or the level of background noise to expect:" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SNR of TRAPPIST-1 in 10 s:\n" + ] + }, + { + "data": { + "text/latex": [ + "$495.79257 \\; \\mathrm{ct^{1/2}}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "npix = 50 * u.pixel # number of pixels the object fills\n", + "n_background = 100 * u.pixel # number of pixels in background aperture\n", + "background = 1000 * u.ct / u.pixel # background noise\n", + "readnoise = 3.7 * u.ct / u.pixel # readnoise of ARCTIC from website\n", + "\n", + "print(\"SNR of TRAPPIST-1 in 10 s:\")\n", + "howell_snr(counts_trappist1, npix=npix,\n", + " n_background=n_background,\n", + " background=background,\n", + " readnoise=readnoise)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These specifications can also be made to estimate the exposure time needed to obtain a given SNR (note that you must give the rate of the backround noise):" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exposure time needed to obtain SNR > 100:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "//anaconda/lib/python3.5/site-packages/astropy/units/quantity.py:464: RuntimeWarning: invalid value encountered in sqrt\n", + " result = super().__array_ufunc__(function, method, *arrays, **kwargs)\n", + "//anaconda/lib/python3.5/site-packages/scipy/optimize/minpack.py:162: RuntimeWarning: The iteration is not making good progress, as measured by the \n", + " improvement from the last ten iterations.\n", + " warnings.warn(msg, RuntimeWarning)\n" + ] + }, + { + "data": { + "text/latex": [ + "$0.39743843 \\; \\mathrm{s}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from synphot.observation import exptime_from_howell_snr\n", + "\n", + "background_rate = background / exptime\n", + "\n", + "print(\"Exposure time needed to obtain SNR > 100:\")\n", + "exptime_from_howell_snr(desired_snr, countrate,\n", + " npix=npix,\n", + " n_background=n_background,\n", + " background_rate=background_rate,\n", + " readnoise=readnoise)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 11. Predicting photon counts of the same stars, this time observed by a space-based telescope" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The space telescope we will use as the example is Kepler.\n", + "\n", + "First query Kepler's response function, which includes both the bandpass and the quantum efficiency:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: W42: /var/folders/bn/d7v8bk_16cjg8qcm1gj03m6h0000gp/T/tmp40avx65c:2:0: W42: No XML namespace specified [astropy.io.votable.tree]\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "f = tynt.FilterGenerator()\n", + "filt = f.download_true_transmittance('Kepler/Kepler.K')\n", + "\n", + "kepler_response = SpectralElement(Empirical1D,\n", + " points=filt.wavelength,\n", + " lookup_table=filt.transmittance)\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 the atmospheric transmission function:" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "stars = {'hatp11': {'spectrum': photlam_hatp11},\n", + " 'trappist1': {'spectrum': photlam_trappist1}\n", + " }\n", + "\n", + "for star in stars:\n", + " stars[star]['observation'] = Observation(stars[star]['spectrum'], kepler_response)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compute the counts in a for the two stars:" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "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 stars:\n", + " countrate = stars[star]['observation'].countrate(area=kepler_area)\n", + " stars[star]['counts'] = countrate * 10 * u.s\n", + " \n", + "print('counts predicted by synphot in 10s exposure:')\n", + "print('\\t HAT-P-11:', round(stars['hatp11']['counts'].value / 1e6, 1), 'million')\n", + "print('\\t TRAPPIST-1', round(stars['trappist1']['counts'].value / 1e3, 1), 'thousand')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 12. Comparing simulated counts to observed counts" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We know from real observations (with ARCTIC on APO's 3.5m telescope and with Kepler) that the actual count values for these stars taken on certain dates are:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "hatp11_r_apo = 34000000\n", + "hatp11_kepler = 28000000\n", + "trappist1_z_apo = 203000\n", + "trappist1_kepler = 57000" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ground-based counts at Apache Point Observatory:\n", + "\t HAT-P-11 in r-band: 34 million\n", + "\t TRAPPIST-1 in z-band: 203 thousand\n", + "Space-based count rates with Kepler:\n", + "\t HAT-P-11: 28.0 million\n", + "\t TRAPPIST-1 57.0 thousand\n" + ] + } + ], + "source": [ + "print('Ground-based counts at Apache Point Observatory:')\n", + "print('\\t HAT-P-11 in r-band:', int(hatp11_r_apo / 1e6), 'million')\n", + "print('\\t TRAPPIST-1 in z-band:', int(trappist1_z_apo / 1e3), 'thousand')\n", + "print('Space-based count rates with Kepler:')\n", + "print('\\t HAT-P-11:', round(hatp11_kepler / 1e6, 1), 'million')\n", + "print('\\t TRAPPIST-1', round(trappist1_kepler / 1e3, 1), 'thousand')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comparing our `synphot` values to the observed values on a 1-1 line:" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nTZs2MWLECFq1anVDr3P+/HkiIiKoW7futQ9Og8GDBzNq1CiqV6/OiRMnyJs3LwDLly9nw4YNlCxZ\nkrp16zJt2jSaNWvGoEGDKFy4MPHx8QQGBrJmzRoefPBBnnrqKSZNmkSVKlU4duwY+fLl46uvvqJQ\noUKsWLGCs2fPUr16dYKDgyldurRb35OIiKRswoQJtGnThkcffZSIiAgKFizodKQrZIaPmTKNi2dl\nkqTH7MzFu1rHxsYyYMCA5PtWrlzJbbfdRokSJQgMDGT16tUcOXL52etXl1SW/Pz8KFGiBB07dkxb\n4GuoXr06L774IsOHD+e///4jV67ETly1alXuvfdecubMScuWLVm2bBkAkydPpnLlylSqVIn169ez\nYcMGNm/eTNGiRalSpQoABQsWJFeuXCxYsIBvv/0WX19fHnnkEQ4fPsyWLVvc+n5ERCRl33zzDa1b\nt6ZmzZrMnz8/UxYZUJlJdvmsTJKk2Rl3rZ0JDw9n06ZNlCpVijJlynDs2DF++OGHVI/ftWtX8kc8\nSWtjLi5LI0aMwMvLi1GjRiUft3fv3nTN3LdvX8aMGcPp06epXr06mzZtArjiCpDGGHbs2MHgwYNZ\nvHgxa9asoUGDBpw5cybV57bWMmLEiOT3s2PHDoKDg9M1v4iIXNvo0aNp3749gYGBzJkz54qTWTIT\nlZkLUpqVSeKutTMJCQlMnjyZtWvXsnPnTnbu3MmMGTMIDw9P9TH33HNP8v/ou3btmupx3bt3Tz7u\n4l25r8fIkSMZmcLeDtu2beOhhx7i1VdfpUqVKsllZvny5ezYsYOEhAQmTZrE448/zrFjx8ifPz+F\nChXiwIEDREREAFC2bFn27dvHihUrADh+/Djnz58nJCSEzz77jLgLu33++eefyYuiRUQkY4wcOZIu\nXbpQv359Zs6cyU033eR0pKtSmSH1WZkk7pqdWbp0KcWKFbukbNSsWZMNGzawb9++dH2t/fv3U7x4\ncYYOHcq7775L8eLFOXbsGAAtW7akWrVqbN68meLFi/PVV18Biadzp7TI6+OPP8bb2xsfHx9y585N\nvQvbiVepUoUePXpQrlw5SpcuTePGjalYsSKVKlXiwQcfpFWrVlSvXh0ALy8vJk2aRM+ePalYsSJB\nQUGcOXOGTp06Ub58eSpXroy3tzddunTh/Pnz6fqzEBGR1A0dOpSePXvyxBNPMG3aNPLly+d0pGsy\n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\nHpYvX05gYCAFChQgOjqaBx54wOlI4gEy7QJgAGvt205nEBGR9PHTTz9Rr149br/9diIjIylZsqTT\nkcRDZIaZmT3APRfdLn5hTEREPER0dDQhISEULVqU6OhoFRlJV5mhzKwA7jfGlDbGeAEtgJkOZxIR\nkXSyaNEi6tWrR8mSJYmKiqJ48eJORxIPk9GnZocDvwBljTG7jTEdrbXngR7AfGAjMNlau/46nzfM\nGDP66NGj6R9aRERuWEREBKGhodx3330sWbKEokWLOh1JPJCx1jqdId34+fnZlStXOh1DRESAmTNn\n0rx5cypUqMDChQspUqSI05EkizHGrLLW+l3ruMzwMZOIiHiYH374gaZNm+Lr68vixYtVZMStVGZE\nRCRdhYeH89RTT1G1alUWLlzIrbfe6nQk8XAqMyIikm6++eYbWrduzeOPP878+fMpWLCg05EkG1CZ\nERGRdDFmzBieeeYZAgICmDt3LgUKFHA6kmQTHlFmdDaTiIizPv30Uzp37kxISAgzZ87kpptucjqS\nZCMeUWastbOstc8WKlTI6SgiItnOxx9/TPfu3WnYsCE//vgj+fLlczqSZDMeUWZERMQZH374Ib17\n96Zp06ZMmTKFPHnyOB1JsiGVGRERuSEDBw6kb9++tGzZkokTJ+Ll5eV0JMmmVGZEROS6WGt54403\neOutt2jbti3fffcduXJl6n2LxcPpt09ERFxmreXVV1/lo48+olOnTnzxxRfkyKG/F4uzPOI3UGcz\niYi4n7WW3r1789FHH9GtWzcVGck0POK3UGcziYi4V0JCAt26deOTTz6hd+/ejBw5UkVGMg39JoqI\nyFXFx8fTuXNnPv/8c1599VWGDBmCMcbpWCLJVGZERCRV58+fp3379owdO5a33nqL999/X0VGMh0t\nABYRkRTFxcXRpk0bJk2axLvvvsvrr7/udCSRFKnMiIjIFc6dO0eLFi2YPn06H330EX369HE6kkiq\nVGZEROQSZ86coXnz5syePZtPPvmEXr16OR1J5KpUZkREJNnp06dp1KgRCxYs4LPPPqNr165ORxK5\nJo9YAKzrzIiIpN3Jkydp0KABCxcu5KuvvlKRkSzDI8qMrjMjIpI2x48fp169ekRHR/Ptt9/SoUMH\npyOJuEwfM4mIZHNHjx6lXr16LF++nAkTJvDUU085HUnkuqjMiIhkY0eOHCEkJIQ//viDKVOm0Lhx\n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\nrJnWrVuntLQ0derUyXckAADKHGUmRvz8889KTk7We++9p9mzZ6tdu3a+IwEAEBaUmRiwc+dONW3a\nVJs2bdK8efPUqlUr35EAAAgbykyU2759uxo3bqz//ve/WrhwoVJSUnxHAgAgrCgzUey7775TUlKS\nvvzyS6Wnp6tx48a+IwEAEHaUmSi1detWBQIBffvtt1q6dKkaNWrkOxIAAF5QZqLQV199pUAgoB07\ndmj58uVq0KCB70gAAHhDmYkyn332mQKBgH799VetWrVK1157re9IAAB4RZmJIps3b1ZSUpL279+v\n1atXq169er4jAQDgXTnfAUqDmaWa2aRdu3b5jlJmPvroIyUkJCg7O1tr166lyAAAEBITZcY5t9g5\n16datWq+o5SJjRs3KiEhQZKUkZGhK664wm8gAAAiSEyUmVj27rvvKjExUZUqVVJmZqbq1q3rOxIA\nABGFMhPB1q1bp6SkJJ100knKzMzUH//4R9+RAACIOJSZCPX666+rcePGOu2005SVlaU6der4jgQA\nQESizESgzMxMJScn68wzz1RWVpbOP/9835EAAIhYlJkIs2rVKjVr1ky1atVSZmamzj33XN+RAACI\naJSZCLJ06VK1bNlSF154oTIyMnTWWWf5jgQAQMSjzESIRYsWqU2bNqpbt67Wrl2rP/zhD74jAQAQ\nFSgzEWDevHlq166drrzySq1evVrVq1f3HQkAgKhBmfFs5syZ6tChg6699lqtXLlSp512mu9IAABE\nFcqMR9OnT1eXLl3UoEEDLVu2TLH6CcYAAJQlyownkydPVo8ePZSYmKglS5bo5JNP9h0JAICoRJnx\nYNy4cerdu7eSk5O1ePFiVa1a1XckAACiFmUmzP7973/rzjvvVGpqqhYsWKATTzzRdyQAAKIaZSaM\nnnjiCd13331q166d5s6dqxNOOMF3JAAAoh5lJkyGDx+uwYMHq2PHjpo1a5YqVarkOxIAADGBMlPG\nnHMaOnSohg0bpq5duyotLU0VKlTwHQsAgJjBq2oZcs7p/vvv18iRI9WrVy9NnDhR5cuX9x0LAICY\nQpkpI8459e/fX6NHj9btt9+usWPHqlw5doQBAFDaeHUtA7m5uerXr59Gjx6t/v37a9y4cRQZAADK\nCK+wpezw4cPq3bu3JkyYoEGDBmnUqFEyM9+xAACIWZSZUnTo0CF1795dU6ZM0QMPPKDHHnuMIgMA\nQBnjPTOlJCcnR127dtXs2bM1fPhwDR061HckAADiAmWmFGRnZ6tjx456+eWXNWLECA0cONB3JAAA\n4gZl5jgdOHBA7du3V3p6up566indc889viMBABBXKDPHYf/+/WrTpo1WrFihZ555RrfffrvvSAAA\nxB3KTAnt3btXqampysjI0OTJk9WrVy/fkQAAiEuUmRLYvXu3WrRooddff13Tp09X165dfUcCACBu\nUWaKadeuXWrWrJnWrVunGTNmqEOHDr4jAQAQ1ygzxfDTTz8pOTlZGzZs0Jw5c9S2bVvfkQAAiHsR\n/aF5ZlbVzNabWUvfWXbu3KmkpCRt3LhR8+bNo8gAABAhwlpmzGyKmW03sw/zLU8xs81mtsXMBudZ\nNUjSnHBmPJoffvhBiYmJ+uSTT7Rw4UKlpqb6jgQAAELCvWdmmqSUvAvMrLykcZKaSaorqZOZ1TWz\nJpI+krQ9zBl/Y//+/UpMTNRnn32m9PR0paSkFH4jAAAQNmF9z4xzLsvMLsi3+FpJW5xzn0uSmc2S\n1FrSSZKqKlhw9pvZEudcbv5tmlkfSX0kqVatWqWe+cQTT1SfPn1Ur149NWzYsNS3DwAAjk8kvAH4\nHEnf5Lm+VdJ1zrk7JcnMukvaebQiI0nOuUmSJklS/fr1XVkE7N+/f1lsFgAAlIJIKDMFcs5N850B\nAABErkg4m2mbpPPyXD83tAwAAKBQkVBm3pZ0kZnVNrNKkjpKWuQ5EwAAiBLhPjV7pqQ3JV1sZlvN\nrJdz7pCkOyUtl/SxpDnOuU3F3G6qmU3atWtX6YcGAAARzZwrk/fMelG/fn23fv163zEAAEApMLN3\nnHP1CxsXCYeZAAAASowyAwAAohplBgAARDXKDAAAiGoxUWY4mwkAgPgVE2XGObfYOdenWrVqvqMA\nAIAwi4kyAwAA4hdlBgAARDXKDAAAiGqUGQAAENViosxwNhMAAPErJsoMZzMBABC/YqLMAACA+EWZ\nAQAAUY0yAwAAopo553xnKDVmtkPSV/kWV5N0rHcGH2vd0ZafIWnncQUsHQU9nnBvrzi3LcrYksxV\nQeuYx9K/LfP4e5Eyl+Gcx4LWM4/Htz3m8bfOd87VKHSUcy6mL5ImFXfd0ZZLWu/7sRT2eMK9veLc\ntihjSzJXzCPz6PsSKXMZznks7nwxj8xjWV/i4TDT4hKsK+g2vpV2tuPZXnFuW5SxJZmrgtYxj6V/\nW+bx9yJlLsM5jwWtZx6Pb3vMYwnE1GGmsmRm651z9X3nwPFhHmMD8xgbmMfYEAnzGA97ZkrLJN8B\nUCqYx9jAPMYG5jE2eJ9H9swAAICoxp4ZAAAQ1SgzAAAgqlFmAABAVKPMAACAqEaZKSEzq2pm682s\npe8sKDkzSzCzV81sgpkl+M6DkjGzcmb2qJmNMbNbfOdByZjZDaF/i5PN7A3feVAyZlbLzBaY2RQz\nGxyO+6TMhISe9O1m9mG+5SlmttnMtuSblEGS5oQ3JYqimHPpJO2RVFnS1nBnxbEVcx5bSzpXUo6Y\nx4hSnHl0zr3qnOsrKV3SdB95cXTF/Pd4uaS5zrmekv4clnycmh1kZg0VfFF73jl3WWhZeUn/ldRE\nwV+Qb0vqJOkcSdUVfAHc6ZxL9xIaR1XMufzEOZdrZjUljXLOdfYUG/kUcx5bSfrZOTfRzOY65270\nFBv5FGcenXMfhdbPkdTLObfbT2rkV8x/jz9ImqvgfxZfcM5NLet8Fcr6DqKFcy7LzC7It/haSVuc\nc59LkpnNUvB/gCdJqiqprqT9ZrbEOZcbxrgoQHHm8sgvT0k/SzohbCFRqGL+m/xGUnZozOFwZUTh\nijmPH5lZLUm7KDKRpZjzmCPpwdBt5kqizHh2joK/JI/YKuk659ydkmRm3RXcM0ORiXxHnUszaysp\nWdKpksb6CIZiOeo8Snpa0hgzu0FSlo9gKJZjzaMk9VIYXvxQKo41jxMk/cPMbpb0ZTiCUGaOg3Nu\nmu8MOD7OufmS5vvOgePjnNun4Isgopxz7kHfGXB8nHMfSgrroV7eAFywbZLOy3P93NAyRB/mMjYw\nj7GBeYwNETOPlJmCvS3pIjOrbWaVJHWUtMhzJpQMcxkbmMfYwDzGhoiZR8pMiJnNlPSmpIvNbKuZ\n9XLOHZJ0p6Tlkj6WNMc5t8lnThSOuYwNzGNsYB5jQ6TPI6dmAwCAqMaeGQAAENUoMwAAIKpRZgAA\nQFSjzAAAgKhGmQEAAFGNMgMAAKIaZQaIM2aWYGbOzM7wnaW0mFm6mU3znQOAH5QZAAgTM+tuZnt8\n5wBiDWUGQJkzs3JmVt53DgCxiTIDxBgzO8HMnjKzH8zsgJm9ZWb/c5ShfzGz90Nj3jGzq/Nso5qZ\nvWBm20PrPzez/vnWTwqt321mmWZWP8/67ma2x8yam9mHkrIl3WFm2WZWPV/ef5rZxjzX/xra3j4z\n22Zm483slDzrq5jZtND2fzCzIUV8Xv5iZmvMbK+Z7Qr9+eyiPGdHOzRnZheEltXPNybJzP4Tyr/e\nzOodWS9pqqSqoXHOzP4RWtfWzDaa2X4z+yn0+GsW5XEBoMwAsWiEpA6Sekr6s6QPJC0zs7PyjRsp\naZCk+pI+l5RuZlVC6x6RdLmklpIuDm1rmySZmUl6RdI5ofV/lpQlaU2++6gs6QFJt0mqK2m6pJ2S\n2h8ZENrWzZLSQtcvl7RCwS+ru1JSW0lXSZqSL3cTSe0kJYXuv2FBT4iZXSlpraQtkhpI+ouk2ZIq\nFPM5K4rHJA2WVE/Sj5JeDD3ONyT1l7RP0lmhy0gzO1PSLAWfnz+FHssLJbhfIH4557hw4RIjF0lV\nFdwL0i3PsvKSPpP0SOh6giQnqXOeMSdJ+kXSraHriyRNOcZ9BCTtkXRivuXvS7o/9Ofuofu4Ot+Y\nUZJezXP9fyQdlnRu6Przkp7Ld5urQtv6QyjnwWNkn1bA8/KipDdL4Tk7I8+YC0LL6ucbk5xnTIPQ\nsnPzPC978t1/vdCY833//eHCJVov7JkBYksdSRUlvX5kgXPusILfdls339g384zZo+DeiCNjxkvq\nYGYbzGykmTXKc7urJVWRtCN0qGdP6E2tl4Xu/4hDChacvNIkNTCz80PXO0vKdM5tzbPtLvm2e+Sx\n1AldKh0je0H+LGnNMdYV5zkrio15/vxt6OcfChi/QdIqSR+a2Twzu93MapTgfoG4RZkB4ocr8kDn\nlko6X8FDOmdIesXMpoZWl5P0g4J7TPJeLlHwsNIRB0OlIO9235X0iaSbzayigoec0vIMKSdpcr7t\nXinpIv2+GIXDkecsN/TT8qyreIzb5Bzl9sf8XRt6jpqGLhsl9ZL0aejQGIAioMwAseUzBQ+ZNDiy\nIHQW0fWSPso39i95xlRVcM/Kx0eWOed2OudecM51V/AF9hYzO0HSu5JqSsp1zm3Jd9lehIxpCu6R\nSVHwEM/cPOvelXTpUba7xTm3P/T4co6RvSDvKXh47GiK8pztCP3M+x6aqwq5z6PJVvAQ1m+4oDed\ncw9JukbBPTodSrB9IC5VKHwIgGjhnNtrZuMlPWFmOyV9IeleBcvHM/mGDzWzHQq+cA5T8IV2hiSZ\n2cMKFotNCv6eaCvpc+fcQTNbpeAhmYVmdr+Ce1rOVLCcrHLOvVpIzBcVfIPxcEmLnXO/5ln3hKS3\nzGyCpImSdiu4xyfVOXebc26PmT0Xenx5sxd22ve/QtudJGmcpAOSbpC0wjn3dRGesy2SvpH0DzMb\nrOD7ZYYWcp9H86WkymbWRMGCtU/SFZIaS1qu4B6vP0s6T78vnwCOgTIDxJ5BoZ9TJZ2q4ItminPu\nu3zjBkt6UsGz+sr+YAAAAOBJREFUlTZJaumc2xtad1DSo5JqK/jC/5akVCm4F8HMmitYSJ5V8P0g\nPyhYcJ4vLJxz7isze03BMjEs37qNZtYwtO1MBUvK55JezjPs/ym4R+dlBcvAmND1gu7zfTNrLOmf\nocdyUNJ6Bc/Kkgp5zpxzOWbWUcFys0HBQ15DJKUX9njz5XgjVNRmSqou6SEFz6pqIOmu0H1/I2m4\ncy7tmBsC8BvmXJEPowMAAEQc3jMDAACiGmUGAABENcoMAACIapQZAAAQ1SgzAAAgqlFmAABAVKPM\nAACAqEaZAQAAUe3/A/ou5phXxSKkAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(9, 9))\n", + "\n", + "plt.scatter(hatp11_r_apo, counts_hatp11,\n", + " color='b', s=100, label=\"HAT-P-11, ground\")\n", + "plt.scatter(hatp11_kepler, stars['hatp11']['counts'],\n", + " color='b', marker= '^', s=100, label=\"HAT-P-11, space\")\n", + "plt.scatter(trappist1_z_apo, counts_trappist1,\n", + " color='r', s=100, label='TRAPPIST-1, ground')\n", + "plt.scatter(trappist1_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()" + ] + } + ], + "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 +} diff --git a/skymodel.py b/skymodel.py new file mode 100644 index 0000000..b2bd572 --- /dev/null +++ b/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