From 95b5ac5071dc89b78450b36bf434550b510aeea8 Mon Sep 17 00:00:00 2001 From: Jeff Jennings Date: Tue, 17 Jun 2025 00:10:14 -0400 Subject: [PATCH 1/2] add notebooks and data files --- .pre-commit-config.yaml | 4 +- 1_SpectroscopicTraceTutorial.ipynb | 1238 ++++++++++++ 2_WavelengthCalibration.ipynb | 1790 +++++++++++++++++ ...Extract_Wavelength-CalibrateSpectrum.ipynb | 434 ++++ aldebaran_3s_1.bmp | Bin 0 -> 1921078 bytes deneb_3s_13.63g_1.bmp | Bin 0 -> 1921078 bytes hg_lamp_1-sixteenth_s.bmp | Bin 0 -> 1921078 bytes kr_lamp_p6.bmp | Bin 0 -> 1921078 bytes metadata.yml | 6 +- ne_lamp_1s.bmp | Bin 0 -> 1921078 bytes requirements.txt | 6 + 11 files changed, 3473 insertions(+), 5 deletions(-) create mode 100755 1_SpectroscopicTraceTutorial.ipynb create mode 100755 2_WavelengthCalibration.ipynb create mode 100755 3_Trace_Extract_Wavelength-CalibrateSpectrum.ipynb create mode 100755 aldebaran_3s_1.bmp create mode 100755 deneb_3s_13.63g_1.bmp create mode 100755 hg_lamp_1-sixteenth_s.bmp create mode 100755 kr_lamp_p6.bmp create mode 100755 ne_lamp_1s.bmp diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b09edfd..d2075a6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -25,10 +25,10 @@ repos: exclude_types: [csv] exclude: '.*\.fits$' - id: check-yaml - # prevent addition of (presumably data) files >= 1 MB + # prevent addition of (presumably data) files >= 10 MB # (for such files, see https://learn.astropy.org/contributing/how-to-contribute) - id: check-added-large-files - args: ["--maxkb=1000"] + args: ["--maxkb=10000"] - repo: https://github.com/kynan/nbstripout rev: 0.8.1 diff --git a/1_SpectroscopicTraceTutorial.ipynb b/1_SpectroscopicTraceTutorial.ipynb new file mode 100755 index 0000000..fbd8c4f --- /dev/null +++ b/1_SpectroscopicTraceTutorial.ipynb @@ -0,0 +1,1238 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Spectroscopic Data Reduction Part 1: Tracing\n", + "\n", + "\n", + "## Authors\n", + "Adam Ginsburg, Kelle Cruz, Lia Corrales, Jonathan Sick, Adrian Price-Whelan\n", + "\n", + "## Learning Goals\n", + "* Open a two-dimensional spectrum from an image file (bitmap)\n", + "* Fit a spectroscopic trace\n", + "\n", + "\n", + "## Keywords\n", + "Spectroscopy\n", + "\n", + "## Summary\n", + "This tutorial will walk through the derivation of a spectroscopic trace model and extraction using astropy tools.\n", + "\n", + "A spectroscopic trace is the path of a point source (star) spectrum through a two-dimensional dispersed spectrum. The trace is needed because, in general, spectra are not perfectly aligned with the axes of a detector." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Step 1: Examine the spectrum\n", + "\n", + "We'll work with a 2D spectrum that contains *no* attached metadata, so we have to infer many of the features ourselves.\n", + "\n", + "All we know is that this is a spectrum of a star, Aldebaran." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Our data are in the form of `.bmp` (bitmap) files, so we need PIL (Python Imaging Library) to open them.\n", + "\n", + "While `.bmp` files are not astronomical standard FITS files, as are commonly delivered from professional observatories, image formats like `.bmp`, `.jpg`, `.raw`, `.png`, etc. produced by consumer cameras may also be used for spectroscopy.\n", + "\n", + "In this case, our images are monochromatic, which is similar to standard FITS images." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "from PIL import Image\n", + "import numpy as np\n", + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "plt.rcParams[\"image.origin\"] = \"lower\"\n", + "plt.style.use(\"dark_background\") # Optional!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "spectrum_filename = \"aldebaran_3s_1.bmp\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "image_data = Image.open(spectrum_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# because this is an image, simply entering on the command line will show it\n", + "image_data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# our data are unsigned 8-bit integers (0-255) representing a monochromatic image\n", + "# we can see this by printing the array version of the image\n", + "# we can also see its shape, verifying that it is indeed 2-dimensional\n", + "image_array = np.array(image_data)\n", + "image_array, image_array.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# but we'd like to see it with axes labeled\n", + "plt.imshow(image_data, cmap=\"gray\")\n", + "plt.colorbar(); # the semicolon at the end of the last line prevents ipython from printing out the object" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The main goal of the trace is to obtain a model `f(x)` defining the vertical position of the light (the signal) along the detector.\n", + "\n", + "We're going to start by assuming that wavelength dispersion is in the X-direction and the Y-direction is entirely spatial. \n", + "\n", + "This is an approximation made by inspecting the image by eye." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Step 2a. Try to find the spine to trace using argmax" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "To obtain the trace, we first measure the Y-value at each X-value. we'll start with the trivial approach of using `argmax`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "yvals = np.argmax(image_data, axis=0)\n", + "xvals = np.arange(image_data.width)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xvals, yvals, \"x\")\n", + "plt.ylabel(\"Argmax trace data\")\n", + "plt.xlabel(\"X position\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "There's a pretty clear line going through the center, which represents our signal, but there are also a lot of erroneous data points.\n", + "\n", + "We can get rid of most of the bad data just by filtering it out using a ``pixel mask``" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "bad_pixels = (yvals < 400) | (yvals > 500)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xvals, yvals, \"x\")\n", + "plt.plot(xvals[bad_pixels], yvals[bad_pixels], \"rx\")\n", + "plt.ylabel(\"Argmax trace data\")\n", + "plt.xlabel(\"X position\");" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xvals[~bad_pixels], yvals[~bad_pixels], \"x\")\n", + "plt.ylabel(\"Argmax trace data\")\n", + "plt.xlabel(\"X position\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can be a little more precise by 'zooming in' along the y-axis, so we refine the mask again to be over a narrower range:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "bad_pixels = (yvals < 425) | (yvals > 460)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xvals[~bad_pixels], yvals[~bad_pixels], \"x\")\n", + "plt.ylabel(\"Argmax trace data\")\n", + "plt.xlabel(\"X position\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "The stuff at x>1100 looks bad, but there's still signal out there." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We can see there is clear signal out to nearly pixel ~1400:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "plt.imshow(image_array[425:475, :])\n", + "plt.gca().set_aspect(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Step 2b: Use moment analysis to extract a spine to trace" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "We can use [moments](https://en.wikipedia.org/wiki/Moment_(mathematics)) to provide a different, possibly better, estimate of where the trace's center is.\n", + "The advantage of moment analysis is that we're using all of the data to estimate the vertical position, not just the single brightest value, which is what we used above.\n", + "\n", + "Note that we need to subtract off the background to avoid a bias toward the center, so we use the median of the whole image as our background estimate.\n", + "\n", + "(the first-order moment is the intensity-weighted mean position, \n", + "$$m_1 = \\frac{\\Sigma_i x_i f(x_i)}{\\Sigma_i f(x_i)}$$\n", + "where $x_i$ is the position and $f({x_i})$ is the intensity at that position. $f(x_i)$ must be zero in the signal-free region for $m_1$ to return an accurate estimate of the location of the peak)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "# we use a cutout around the traced line, so the Y-values are from that cutout\n", + "# the `repeat` command here is used to extend our Y-axis position values, which are 425, 426, ... 475\n", + "# along the X-direction. The indexing with [:, None] adds a \"dummy\" axis along the second (x) dimension,\n", + "# then `repeat` copies our Y-axis values. The resulting array has the same shape as our weight array,\n", + "# which is image_array[425:475, :] minus the median\n", + "yaxis = np.repeat(np.arange(425, 475)[:, None], image_array.shape[1], axis=1)\n", + "background = np.median(image_array)\n", + "# moment 1 is the data-weighted average of the Y-axis coordinates\n", + "weighted_yaxis_values = np.average(\n", + " yaxis, axis=0, weights=image_array[425:475, :] - background\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xvals, weighted_yaxis_values, \"x\")\n", + "plt.xlabel(\"X Coordinate\")\n", + "plt.ylabel(\"Moment-1 estimated Y-value trace\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Overplot the \"weighted\", centroid locations on the data to verify they look reasonable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "# we need to use the 'extent' keyword to have the axes correctly labeled\n", + "plt.imshow(image_array[425:475, :], extent=[0, image_array.shape[1], 425, 475])\n", + "plt.gca().set_aspect(10) # we stretch the image out by 10x in the y-direction\n", + "plt.plot(xvals, weighted_yaxis_values, \"wx\", alpha=0.5)\n", + "plt.axis((0, 1600, 425, 475));" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We can also compare the argmax and weighted approaches. They agree well at x<1200, but there are simply more points from the weighted approach at x>1200." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "plt.plot(xvals, weighted_yaxis_values, \"x\", label=\"Weighted\", alpha=0.5)\n", + "plt.plot(xvals[~bad_pixels], yvals[~bad_pixels], \"+\", label=\"Argmax\", alpha=0.5)\n", + "plt.legend(loc=\"best\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "That's a decent set of data, we'll use the moments instead of the argmax. There's still some data to flag out, though:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "bad_moments = (weighted_yaxis_values > 460) | (weighted_yaxis_values < 430)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(\n", + " xvals[~bad_moments],\n", + " weighted_yaxis_values[~bad_moments],\n", + " \"x\",\n", + " label=\"Weighted\",\n", + " alpha=0.5,\n", + ")\n", + "plt.plot(xvals[~bad_pixels], yvals[~bad_pixels], \"+\", label=\"Argmax\", alpha=0.5)\n", + "plt.legend(loc=\"best\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Step 3. Fit the trace profile\n", + "\n", + "We want a model `f(x)` that gives the y-value of the centroid as a function of x." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "from astropy.modeling.polynomial import Polynomial1D\n", + "from astropy.modeling.fitting import LinearLSQFitter" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "# We fit a 2nd-order polynomial\n", + "polymodel = Polynomial1D(degree=2)\n", + "linfitter = LinearLSQFitter()\n", + "fitted_polymodel = linfitter(\n", + " polymodel, xvals[~bad_moments], weighted_yaxis_values[~bad_moments]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "fitted_polymodel" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(xvals[~bad_moments], weighted_yaxis_values[~bad_moments], \"x\", alpha=0.5)\n", + "plt.plot(xvals, fitted_polymodel(xvals), color=\"r\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We plot and examine the residuals to visually inspect whether the fit is good:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(\n", + " xvals[~bad_moments],\n", + " weighted_yaxis_values[~bad_moments] - fitted_polymodel(xvals[~bad_moments]),\n", + " \"x\",\n", + ")\n", + "plt.ylabel(\"Residual (data-model)\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The curvature seen at the left is a sign of a suboptimal fit. Specifically, curvature in the residual indicates that we need to use a _higher order_ model - i.e., we need more terms in the polynomial. We change ``degree=2`` to ``degree=3``." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "polymodel = Polynomial1D(degree=3)\n", + "fitted_polymodel = linfitter(\n", + " polymodel, xvals[~bad_moments], weighted_yaxis_values[~bad_moments]\n", + ")\n", + "fitted_polymodel" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xvals[~bad_moments], weighted_yaxis_values[~bad_moments], \"x\", alpha=0.5)\n", + "plt.plot(xvals, fitted_polymodel(xvals), color=\"r\");" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(\n", + " xvals[~bad_moments],\n", + " weighted_yaxis_values[~bad_moments] - fitted_polymodel(xvals[~bad_moments]),\n", + " \"x\",\n", + ")\n", + "plt.ylabel(\"Residual (data-model)\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Arguably, we should toss out the data at >1400 pixels since there's no clear signal there. We'll come back to this..." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.imshow(image_array[425:475, :], extent=[0, image_array.shape[1], 425, 475])\n", + "plt.gca().set_aspect(10);" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Again, we should verify the trace by overplotting on the original data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.imshow(image_array[425:475, :], extent=[0, image_array.shape[1], 425, 475])\n", + "plt.gca().set_aspect(10)\n", + "plt.plot(xvals, fitted_polymodel(xvals), \"w\")\n", + "plt.axis((0, 1600, 425, 475));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Seeing the curve up in the model to the right - which we do not observe in the data - suggests we should re-fit without including the x>1200 data at all:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "polymodel = Polynomial1D(degree=3)\n", + "fitted_polymodel = linfitter(\n", + " polymodel,\n", + " xvals[(~bad_moments) & (xvals < 1200)],\n", + " weighted_yaxis_values[(~bad_moments) & (xvals < 1200)],\n", + ")\n", + "fitted_polymodel" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have a satisfactory fit:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "plt.imshow(image_array[425:475, :], extent=[0, image_array.shape[1], 425, 475])\n", + "plt.gca().set_aspect(10)\n", + "plt.plot(xvals, fitted_polymodel(xvals), \"w\")\n", + "plt.axis((0, 1600, 425, 475));" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xvals[~bad_moments], weighted_yaxis_values[~bad_moments], \"x\", alpha=0.5)\n", + "plt.plot(xvals, fitted_polymodel(xvals), color=\"r\");" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(\n", + " xvals[~bad_moments & (xvals < 1200)],\n", + " weighted_yaxis_values[~bad_moments & (xvals < 1200)]\n", + " - fitted_polymodel(xvals[~bad_moments & (xvals < 1200)]),\n", + " \"x\",\n", + ")\n", + "plt.plot(\n", + " xvals[~bad_moments & (xvals > 1200)],\n", + " weighted_yaxis_values[~bad_moments & (xvals > 1200)]\n", + " - fitted_polymodel(xvals[~bad_moments & (xvals > 1200)]),\n", + " \"r+\",\n", + " alpha=0.5,\n", + ")\n", + "plt.ylim(-5, 5)\n", + "plt.ylabel(\"Residual (data-model)\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Step 4. Obtain a trace profile" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can extract the data along that trace.\n", + "\n", + "We want to take a \"profile\" of the trace to see how many pixels on either side of the line we should include." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.imshow(image_array[425:475, :], extent=[0, image_array.shape[1], 425, 475])\n", + "plt.gca().set_aspect(10)\n", + "plt.fill_between(\n", + " xvals,\n", + " fitted_polymodel(xvals) - 15,\n", + " fitted_polymodel(xvals) + 15,\n", + " color=\"orange\",\n", + " alpha=0.5,\n", + ")\n", + "plt.axis((0, 1600, 425, 475));" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# start by taking +/- 15 pixels\n", + "npixels_to_cut = 15\n", + "trace_center = fitted_polymodel(xvals)\n", + "cutouts = np.array(\n", + " [\n", + " image_array[int(yval) - npixels_to_cut : int(yval) + npixels_to_cut, ii]\n", + " for yval, ii in zip(trace_center, xvals)\n", + " ]\n", + ")\n", + "cutouts.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "That last step deserves some explanation:\n", + "```\n", + "cutouts = np.array([image_array[int(yval)-npixels_to_cut:int(yval)+npixels_to_cut, ii]\n", + " for yval, ii in zip(trace_center, xvals)])\n", + "```\n", + "\n", + "* `[... for yval, ii in zip(trace_center, xvals)]` takes each trace y-value and each x-value and 'zips' them together, so each iteration of the for loop has one x, y pair\n", + "* `image_array[int(yval)-npixels_to_cut:int(yval)+npixels_to_cut, ii]` is taking a single pixel along the x-direction (the second dimension, `ii`) and a range of pixels along the y-direction, i.e., `y+/-n`\n", + "* these are put together in a loop, so we have a y+/-n pixel region for each x-pixel\n", + "* then we make them all into an array\n", + "\n", + "\n", + "We can see the result visually:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "ax1 = plt.subplot(2, 1, 1)\n", + "ax1.imshow(image_array[425:475, :], extent=[0, image_array.shape[1], 425, 475])\n", + "ax1.set_aspect(10)\n", + "ax1.set_title(\"We go from this...\")\n", + "ax2 = plt.subplot(2, 1, 2)\n", + "ax2.imshow(cutouts.T)\n", + "ax2.set_title(\"...to this\")\n", + "ax2.set_aspect(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Then we average along the X-direction to get the trace profile:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "mean_trace_profile = (cutouts - background).mean(axis=0)\n", + "trace_profile_xaxis = np.arange(-npixels_to_cut, npixels_to_cut)\n", + "plt.plot(trace_profile_xaxis, mean_trace_profile)\n", + "plt.xlabel(\"Distance from center\")\n", + "plt.ylabel(\"Average source profile\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We want to fit that profile with a Gaussian for future use, so we import the Gaussian model profile and non-linear fitter and run a fit:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from astropy.modeling.models import Gaussian1D\n", + "from astropy.modeling.fitting import LevMarLSQFitter\n", + "\n", + "lmfitter = LevMarLSQFitter()\n", + "guess = Gaussian1D(amplitude=mean_trace_profile.max(), mean=0, stddev=5)\n", + "fitted_trace_profile = lmfitter(\n", + " model=guess, x=trace_profile_xaxis, y=mean_trace_profile\n", + ")\n", + "model_trace_profile = fitted_trace_profile(trace_profile_xaxis)\n", + "fitted_trace_profile" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(trace_profile_xaxis, mean_trace_profile, label=\"data\")\n", + "plt.plot(trace_profile_xaxis, model_trace_profile, label=\"model\")\n", + "plt.legend(loc=\"best\")\n", + "plt.xlabel(\"Distance from center\")\n", + "plt.ylabel(\"Average source profile\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Both the empirical trace profile `mean_trace_profile` and the modeled `model_trace_profile` can reasonably be used; the latter is more convenient to serialize (i.e., write to disk or on paper)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Step 5. Extract the traced spectrum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can obtain our spectrum by directly averaging the pixels along the trace:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "average_spectrum = (cutouts - background).mean(axis=1)\n", + "plt.plot(average_spectrum);" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Or, we can obtain our spectrum by taking the trace-weighted average: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "trace_avg_spectrum = np.array(\n", + " [\n", + " np.average(\n", + " image_array[int(yval) - npixels_to_cut : int(yval) + npixels_to_cut, ii]\n", + " - background,\n", + " weights=mean_trace_profile,\n", + " )\n", + " for yval, ii in zip(trace_center, xvals)\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also do this with the Gaussian weights:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "gaussian_trace_avg_spectrum = np.array(\n", + " [\n", + " np.average(\n", + " image_array[int(yval) - npixels_to_cut : int(yval) + npixels_to_cut, ii]\n", + " - background,\n", + " weights=model_trace_profile,\n", + " )\n", + " for yval, ii in zip(trace_center, xvals)\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(average_spectrum, label=\"Direct Average\")\n", + "plt.plot(trace_avg_spectrum, label=\"Trace-weighted average\")\n", + "plt.plot(\n", + " gaussian_trace_avg_spectrum,\n", + " label=\"Gaussian-model-Trace-weighted average\",\n", + " alpha=0.5,\n", + " linewidth=0.5,\n", + " color=\"r\",\n", + ")\n", + "plt.legend(loc=\"best\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In general, the trace-weighted average will have higher signal-to-noise, as seen here (while we haven't measured the noise, it is approximately constant across the image).\n", + "\n", + "Note that the Gaussian model and the direct trace yield nearly identical results" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Step 6: Repeat for another star\n", + "\n", + "In this last step, we go through all the above steps again for another star (Deneb), but with less explanation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "image_array_2 = np.array(Image.open(\"deneb_3s_13.63g_1.bmp\"))\n", + "plt.imshow(image_array_2, cmap=\"gray\")\n", + "plt.colorbar();" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.imshow(image_array_2[470:520, :], extent=[0, 1600, 470, 520])\n", + "plt.gca().set_aspect(10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "yaxis2 = np.repeat(np.arange(470, 520)[:, None], image_array_2.shape[1], axis=1)\n", + "weighted_yaxis_values2 = np.average(\n", + " yaxis2, axis=0, weights=image_array_2[470:520, :] - np.median(image_array_2)\n", + ")\n", + "polymodel2 = Polynomial1D(degree=3)\n", + "fitted_polymodel2 = linfitter(polymodel2, xvals, weighted_yaxis_values2)\n", + "trace_center2 = fitted_polymodel2(xvals)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xvals, weighted_yaxis_values2, \"x\", alpha=0.5)\n", + "plt.plot(xvals, trace_center2, color=\"r\");" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.imshow(image_array_2[470:520, :], extent=[0, 1600, 470, 520])\n", + "plt.plot(xvals, weighted_yaxis_values2, \"w+\", alpha=0.25)\n", + "plt.plot(xvals, trace_center2, color=\"r\")\n", + "plt.gca().set_aspect(10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "spectrum2 = np.array(\n", + " [\n", + " np.average(\n", + " image_array_2[int(yval) - npixels_to_cut : int(yval) + npixels_to_cut, ii]\n", + " - np.median(image_array_2),\n", + " weights=mean_trace_profile,\n", + " )\n", + " for yval, ii in zip(trace_center2, xvals)\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(spectrum2);" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "In the next tutorial, Spectroscopic Data Reduction 2, we'll work on the wavelength calibration." + ] + } + ], + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython" + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python" + }, + "rise": { + "transition": "none" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/2_WavelengthCalibration.ipynb b/2_WavelengthCalibration.ipynb new file mode 100755 index 0000000..5a18df2 --- /dev/null +++ b/2_WavelengthCalibration.ipynb @@ -0,0 +1,1790 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Spectroscopic Data Reduction Part 2: Wavelength Calibration\n", + "\n", + "This notebook assumes you've completed the Spectroscopic Trace process (see [Part 1](1_SpectroscopicTraceTutorial.ipynb)) and have a trace model handy.\n", + "\n", + "## Authors\n", + "Adam Ginsburg, Kelle Cruz, Lia Corrales, Jonathan Sick, Adrian Price-Whelan\n", + "\n", + "## Learning Goals\n", + "* Extract calibration lamp spectra from two-dimensional spectral images\n", + "* Fit a wavelength solution\n", + "\n", + "\n", + "## Keywords\n", + "Spectroscopy\n", + "\n", + "## Summary\n", + "This tutorial will walk through extraction of a calibration lamp spectrum using an existing trace.\n", + "\n", + "It will then demonstrate line identification using the NIST line list database.\n", + "\n", + "Finally, it will show how to fit a wavelength solution to a calibration spectrum, integrating information from multiple calibration lamps." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "from PIL import Image as PILImage\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "plt.rcParams[\"image.origin\"] = (\n", + " \"lower\" # we want to show images, not matrices, so we set the origin to the lower-left\n", + ")\n", + "plt.style.use(\n", + " \"dark_background\"\n", + ") # Optional configuration: if run, this will look nice on dark background notebooks" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from astropy import units as u\n", + "from astropy.modeling.polynomial import Polynomial1D\n", + "from astropy.modeling.models import Gaussian1D, Linear1D\n", + "from astropy.modeling.fitting import LinearLSQFitter\n", + "from IPython.display import Image\n", + "\n", + "# astroquery provides an interface to the NIST atomic line database\n", + "from astroquery.nist import Nist" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We have three calibration lamp spectra: Mercury, Krypton, and Neon. These are saved as .bmp (bitmap) files." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "hg_filename = \"hg_lamp_1-sixteenth_s.bmp\"\n", + "kr_filename = \"kr_lamp_p6.bmp\"\n", + "ne_filename = \"ne_lamp_1s.bmp\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "hg_image = np.array(PILImage.open(hg_filename))\n", + "kr_image = np.array(PILImage.open(kr_filename))\n", + "ne_image = np.array(PILImage.open(ne_filename))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.imshow(hg_image);" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.imshow(kr_image);" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.imshow(ne_image);" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We can note by zooming in that there appear to be seven independent spectra:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "plt.imshow(hg_image[380:540, 140:180]);" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We re-create our trace model from the [Spectroscopic Trace Tutorial](Spectroscopic%20Trace%20Tutorial.ipynb) using the fitted models.\n", + "\n", + "(We could have used the empirical trace directly, which might result in slightly improved noise characteristics, but for simplicity - and to make the two notebooks independently usable - we use the fitted polynomial & Gaussian models here)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "trace_model = Polynomial1D(\n", + " degree=3, c0=453.6307, c1=-0.01596396, c2=0.0000008259, c3=3.3348554642250357e-09\n", + ")\n", + "trace_profile_model = Gaussian1D(\n", + " amplitude=123.84846797, mean=0.17719819, stddev=5.10872134\n", + ")\n", + "xaxis = np.arange(hg_image.shape[1])\n", + "trace_center = trace_model(xaxis)\n", + "npixels_to_cut = 15\n", + "yaxis = np.arange(-npixels_to_cut, npixels_to_cut)\n", + "model_trace_profile = trace_profile_model(yaxis)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Then, we use the trace to extract spectra from each of the three calibration lamp spectra.\n", + "\n", + "We verify that the traces look acceptable first, though:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.figure(figsize=(16, 8))\n", + "ax1 = plt.subplot(3, 1, 1)\n", + "ax1.imshow(hg_image[430:470, :], extent=[0, 1600, 430, 470])\n", + "ax1.plot(xaxis, trace_center)\n", + "ax1.set_aspect(10)\n", + "ax2 = plt.subplot(3, 1, 2)\n", + "ax2.imshow(kr_image[430:470, :], extent=[0, 1600, 430, 470])\n", + "ax2.plot(xaxis, trace_center)\n", + "ax2.set_aspect(10)\n", + "ax3 = plt.subplot(3, 1, 3)\n", + "ax3.imshow(ne_image[430:470, :], extent=[0, 1600, 430, 470])\n", + "ax3.plot(xaxis, trace_center)\n", + "ax3.set_aspect(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Strangely, the trace looks like it's going through a minimum between the individual spectra, which may indicate that the spectrograph was shaken or jiggled between the trace and wavelength calibration observations. Nevertheless, there's enough signal that we can extract a calibration lamp spectrum, and the trace is perpendicular enough to the dispersion axis that we can mostly trust it. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the following three cells, we extract the trace-profile-weighted average spectrum from each of the three calibration lamps. \n", + "\n", + "``npixels_to_cut`` sets a cutout region around the trace, close to what is shown in the figures above. The ``model_trace_profile``, derived earlier, is the transmission profile we measured using the stellar trace. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "hg_spectrum = np.array(\n", + " [\n", + " np.average(\n", + " hg_image[int(yval) - npixels_to_cut : int(yval) + npixels_to_cut, ii],\n", + " weights=model_trace_profile,\n", + " )\n", + " for yval, ii in zip(trace_center, xaxis)\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "ne_spectrum = np.array(\n", + " [\n", + " np.average(\n", + " ne_image[int(yval) - npixels_to_cut : int(yval) + npixels_to_cut, ii],\n", + " weights=model_trace_profile,\n", + " )\n", + " for yval, ii in zip(trace_center, xaxis)\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "kr_spectrum = np.array(\n", + " [\n", + " np.average(\n", + " kr_image[int(yval) - npixels_to_cut : int(yval) + npixels_to_cut, ii],\n", + " weights=model_trace_profile,\n", + " )\n", + " for yval, ii in zip(trace_center, xaxis)\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xaxis, hg_spectrum, label=\"Mercury\")\n", + "plt.plot(xaxis, ne_spectrum, label=\"Neon\")\n", + "plt.plot(xaxis, kr_spectrum, label=\"Krypton\")\n", + "plt.legend(loc=\"best\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We now have spectra of a mercury lamp, a neon lamp, and a krypton lamp.\n", + "\n", + "If we have no prior knowledge, we would have to do some guess-and-check. It helps to do _educated_ guess-and-check, though; wikipedia is a decent resource to point us at the right line lists:\n", + "\n", + " * https://en.wikipedia.org/wiki/Mercury-vapor_lamp#Emission_line_spectrum\n", + " * https://en.wikipedia.org/wiki/Gas-discharge_lamp#Color" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "Image(\"https://upload.wikimedia.org/wikipedia/commons/2/29/Mercury_Spectra.jpg\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Image(\"https://upload.wikimedia.org/wikipedia/commons/9/99/Neon_spectra.jpg\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Image(\"https://upload.wikimedia.org/wikipedia/commons/a/a6/Krypton_Spectrum.jpg\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Start with mercury. We use a different wikipedia spectrum that looks a little more like ours to guide the eye (note that the line ratios vary from lamp to lamp at least partly because each lamp contains gas at a different pressure)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Image(\"https://upload.wikimedia.org/wikipedia/commons/0/0d/HG-Spektrum_crop.jpg\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The optical lines of Mercury are, from Wikipedia, in Angstroms:\n", + "\n", + " * 4047 violet\n", + " * 4358 blue\n", + " * 5461 green\n", + " * 5782 yellow-orange\n", + " * 6500 red" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "plt.plot(xaxis, hg_spectrum);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At this next step, we have to write down which (approximate) pixel values correspond to known wavelengths.\n", + "\n", + "Guessing these just by looking at the spectra and comparing to spectral atlases is hard and takes experience.\n", + "\n", + "If you have spectra taken with the same setup of a known sources - such as an A0 star - you might be able to use that to give you a 'prior' on where the spectrum is centered.\n", + "In this case, our set of spectra include Deneb, which is an A-star. It has a clear absorption line (that we'll see later, in tutorial 3) around pixel 750.\n", + "A-stars have deep hydrogen absorption lines in their atmosphere and little else, so this is probably a hydrogen line.\n", + "We can assume it's either H-alpha or H-beta, since they are both in the optical and strong (higher lines, like H-delta, are all close together, so if it were one of them, we'd expect to see several adjacent lines).\n", + "\n", + "We can therefore compare our spectrum to the atlases assuming pixel 750 is H-beta or H-alpha. Using the line list, we can see red is pretty unlikely: H-alpha is at 6563, so there would be a line right next to it. If it's H-beta, there are lines on either side, and there is a doublet on the right side. \n", + "\n", + "The next trick is figuring out which way the wavelength increases - to the left or the right? Mercury doesn't help with that, since the blue-violet and green-yellow doublets are about the same distance from one another. It turns out, from guess-and-check work, that wavelength is increasing to the left.\n", + "\n", + "Again, this part is hard to do directly from the data - you generally hope to have a pretty good idea of what wavelength you're observing before you observe!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "guessed_wavelengths = [546.1, 435.8, 404.7]\n", + "guessed_xvals = [165, 1230, 1550]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Improving on our guesses\n", + "\n", + "We can do a lot better at determining the pixel X-values by taking the intensity-weighted coordinate (moment 1):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "npixels = 15\n", + "improved_xval_guesses = [\n", + " np.average(\n", + " xaxis[g - npixels : g + npixels],\n", + " weights=hg_spectrum[g - npixels : g + npixels] - np.median(hg_spectrum),\n", + " )\n", + " for g in guessed_xvals\n", + "]\n", + "improved_xval_guesses" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xaxis, hg_spectrum)\n", + "plt.plot(guessed_xvals, [100] * 3, \"x\")\n", + "plt.plot(improved_xval_guesses, [100] * 3, \"+\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We only have three data points, but that is enough to fit a linear model and still have a free point to check that we got it close to right:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "linfitter = LinearLSQFitter()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "We use a `Linear1D` model because we will want to use its inverse later (other models are not invertible)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "wlmodel = Linear1D()\n", + "linfit_wlmodel = linfitter(\n", + " model=wlmodel, x=improved_xval_guesses, y=guessed_wavelengths\n", + ")\n", + "wavelengths = linfit_wlmodel(xaxis) * u.nm\n", + "linfit_wlmodel" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note this fitted slope: each pixel is about 0.1 nm (about 1 angstrom), and the wavelength increases to the left." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "plt.plot(wavelengths, hg_spectrum)\n", + "plt.plot(guessed_wavelengths, [100] * 3, \"x\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We show our model $\\lambda(x)$ vs the input \"guesses\":" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(improved_xval_guesses, guessed_wavelengths, \"o\")\n", + "plt.plot(xaxis, wavelengths, \"-\")\n", + "plt.ylabel(\"$\\lambda(x)$\")\n", + "plt.xlabel(\"x (pixels)\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "Indeed, a linear model fit excellently!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We can look up neon and krypton line lists to see how well we did and maybe try to improve our fit.\n", + "\n", + "NIST, the National Institute of Standards and Technology, maintains [atomic line lists](https://physics.nist.gov/PhysRefData/ASD/lines_form.html). However, we have no direct way to know which transitions from these atoms to use! There are a few heuristics we can apply, though." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# we adopt the minimum/maximum wavelength from our linear fit\n", + "minwave = wavelengths.min()\n", + "maxwave = wavelengths.max()\n", + "# then we search for atomic lines\n", + "# We are only interested in neutral lines, assuming the lamps are not hot enough to ionize the atoms\n", + "mercury_lines = Nist.query(minwav=minwave, maxwav=maxwave, linename=\"Hg I\")\n", + "krypton_lines = Nist.query(minwav=minwave, maxwav=maxwave, linename=\"Kr I\")\n", + "neon_lines = Nist.query(minwav=minwave, maxwav=maxwave, linename=\"Ne I\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We can first look at what NIST reports for the mercury spectrum we already fit:\n", + "\n", + "(note that the wavelengths are *air* wavelengths, not vacuum)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "plt.plot(wavelengths, hg_spectrum)\n", + "plt.vlines(mercury_lines[\"Observed\"], 0, 250, \"w\", alpha=0.25);" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The database contains *many* more lines than we saw.\n", + "\n", + "The \"Rel. Int\" (Relative Intensity) provides \"a qualitative description of what the emission spectrum of a particular element in a particular (low-density) source looks like.\" \n", + "\n", + "We can select that column, if we clean it up a little (there are some \"blank\" entries)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# these lines downselect from the table to keep only those that have usable \"Relative Intensity\" measurements\n", + "# first, we get rid of those whose 'Rel.' column is masked out or is an asterisk\n", + "hg_keep = (~mercury_lines[\"Rel.\"].mask) & (mercury_lines[\"Rel.\"] != \"*\")\n", + "hg_wl_tbl = mercury_lines[\"Observed\"][hg_keep]\n", + "# then, we collect the 'Rel.' values and convert them from strings to floats\n", + "hg_rel_tbl = np.array([float(x) for x in mercury_lines[\"Rel.\"][hg_keep]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(wavelengths, hg_spectrum)\n", + "# we normalize the relative intensities to match the intensity of the spectrum so we can see both on the same plot\n", + "# since they're just relative intensities, their amplitudes are arbitrary anyway\n", + "plt.plot(hg_wl_tbl, hg_rel_tbl / hg_rel_tbl.max() * hg_spectrum.max(), \"x\")\n", + "plt.xlabel(\"$\\lambda$ [nm]\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Not bad! See that only the three \"brightest\" lines show up, plus maybe a bit of a third one around 408 nm.\n", + "\n", + "Let's try the same for the other lines (note that the hackery changes - this is because the NIST tables are not formatted to be machine-readable!)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "ne_keep = np.array([\"*\" not in x for x in neon_lines[\"Rel.\"]])\n", + "ne_wl_tbl = neon_lines[\"Observed\"][ne_keep]\n", + "ne_rel_tbl = np.array([float(x) for x in neon_lines[\"Rel.\"][ne_keep]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "kr_keep = np.array(\n", + " [\n", + " (\"*\" not in x) and (\"h\" not in x) and (\"-\" not in x)\n", + " for x in krypton_lines[\"Rel.\"]\n", + " ]\n", + ")\n", + "kr_wl_tbl = krypton_lines[\"Observed\"][kr_keep]\n", + "kr_rel_tbl = np.array([float(x) for x in krypton_lines[\"Rel.\"][kr_keep]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(wavelengths, ne_spectrum)\n", + "plt.plot(ne_wl_tbl, ne_rel_tbl / ne_rel_tbl.max() * ne_spectrum.max(), \"x\")\n", + "plt.xlabel(\"$\\lambda$ [nm]\")\n", + "plt.title(\"Neon\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For Neon, there are many lines that match up, but a lot that don't match well (we detect a lot that have low `Rel` values)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(wavelengths, kr_spectrum)\n", + "plt.plot(kr_wl_tbl, kr_rel_tbl / kr_rel_tbl.max() * kr_spectrum.max(), \"x\")\n", + "plt.xlabel(\"$\\lambda$ [nm]\")\n", + "plt.title(\"Krypton\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The Krypton spectrum will be much easier to deal with: we just select those lines with intensities > 70 on the scale above:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "kr_rel_intens = kr_rel_tbl / kr_rel_tbl.max() * kr_spectrum.max()\n", + "kr_keep_final = kr_rel_intens > 70\n", + "kr_wl_final = kr_wl_tbl[kr_keep_final]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We then take these krypton wavelengths and convert them back to pixel space:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "# the linear model has an inverse function that takes y = m x + b and converts to x = (y - b) / m\n", + "kr_pixel_vals = linfit_wlmodel.inverse(kr_wl_final)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xaxis, kr_spectrum)\n", + "plt.plot(kr_pixel_vals, kr_rel_intens[kr_keep_final], \"x\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "As with mercury above, we select a sub-region and measure the intensity-weighted peak position in pixel number to accurately measure the pixel center.\n", + "\n", + "But here we have to be careful! These peaks are very close! Can we still use a +/-15 pixel range?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# Examine the pixel range, +/-15 pix, to see if it results in line overlaps\n", + "plt.plot(xaxis, kr_spectrum)\n", + "plt.plot(kr_pixel_vals, kr_rel_intens[kr_keep_final], \"x\")\n", + "for xx, yy in zip(kr_pixel_vals, kr_rel_intens[kr_keep_final]):\n", + " plt.plot(\n", + " [xx - 15, xx + 15],\n", + " [yy, yy],\n", + " ) # plot horizontal lines at each peak location\n", + "plt.xlim(1200, 1350);" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Yes, 15 pixels looks OK still.\n", + "\n", + "If these lines had overlapped with one another at all, we would have wanted to decrease the pixel range." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# note that we have to force the pixel-center guesses to be integers for slicing:\n", + "npixels = 15\n", + "improved_xval_guesses_kr = [\n", + " np.average(\n", + " xaxis[g - npixels : g + npixels],\n", + " weights=kr_spectrum[g - npixels : g + npixels] - np.median(kr_spectrum),\n", + " )\n", + " for g in map(int, kr_pixel_vals)\n", + "]\n", + "improved_xval_guesses_kr" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Now we can plot these best-fit pixel numbers against the \"true\" wavelengths and overplot our previous best-fit model from mercury:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(improved_xval_guesses_kr, kr_wl_final, \"x\", label=\"Krypton\")\n", + "plt.plot(improved_xval_guesses, guessed_wavelengths, \"+\", label=\"Mercury\")\n", + "plt.plot(xaxis, wavelengths, zorder=-5)\n", + "plt.legend(loc=\"best\")\n", + "plt.xlabel(\"Pixel Coordinate\")\n", + "plt.ylabel(\"Wavelength (nm)\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We can now jointly fit the Kr + Hg spectra with a new model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "# we concatenate the data sets together\n", + "xvals_hg_plus_kr = np.concatenate([improved_xval_guesses, improved_xval_guesses_kr])\n", + "waves_hg_plus_kr = np.concatenate([guessed_wavelengths, kr_wl_final])\n", + "linfit_wlmodel_hgkr = linfitter(model=wlmodel, x=xvals_hg_plus_kr, y=waves_hg_plus_kr)\n", + "linfit_wlmodel_hgkr" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# re-plot the data with the fit overlaid\n", + "plt.plot(improved_xval_guesses_kr, kr_wl_final, \"x\", label=\"Krypton\")\n", + "plt.plot(improved_xval_guesses, guessed_wavelengths, \"+\", label=\"Mercury\")\n", + "plt.plot(xaxis, wavelengths, zorder=-5)\n", + "plt.plot(xaxis, linfit_wlmodel_hgkr(xaxis), zorder=-5)\n", + "plt.legend(loc=\"best\")\n", + "plt.xlabel(\"Pixel Coordinate\")\n", + "plt.ylabel(\"Wavelength (nm)\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "These are nearly indistiguishable, but let's look at the residuals for each:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "residuals_hgonlymodel = np.array(waves_hg_plus_kr) - linfit_wlmodel(xvals_hg_plus_kr)\n", + "residuals_hgkrmodel = np.array(waves_hg_plus_kr) - linfit_wlmodel_hgkr(xvals_hg_plus_kr)\n", + "plt.hist(residuals_hgonlymodel, label=\"Hg-only fit\", histtype=\"stepfilled\")\n", + "plt.hist(residuals_hgkrmodel, label=\"Hg-only fit\", histtype=\"step\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The differences are pretty marginal; the Hg-only fit was really good.\n", + "\n", + "Is there any shape to the residuals?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xvals_hg_plus_kr, residuals_hgonlymodel, \"x\")\n", + "plt.xlabel(\"Pixel Coordinate\")\n", + "plt.ylabel(\"Wavelength residual (data minus model; nm)\");" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xvals_hg_plus_kr, residuals_hgkrmodel, \"x\")\n", + "plt.xlabel(\"Pixel Coordinate\")\n", + "plt.ylabel(\"Wavelength residual (data minus model; nm)\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "In brief, no, there's no sign of structure. If there were, we might want to fit a higher-order model." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We can also estimate a chi-squared-like statistic (though note that this is *not* the $\\chi^2$ value we would use to assess goodness of fit because we have *not* estimated the uncertainty on each wavelength point!)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "resid2_hgonly = (residuals_hgonlymodel**2).sum()\n", + "resid2_hgkr = (residuals_hgkrmodel**2).sum()\n", + "resid2_hgonly, resid2_hgkr" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "These differences are also very small, again suggesting the Hg-only fit was really good." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Why do we bother going through all these checks if the Hg-only fit was just fine? \n", + "\n", + "Besides simply not knowing, it is common for spectrographs to have slightly non-linear dispersion when measured over a wide wavelength range, so we want to be sure we haven't missed any such curvature.\n", + "\n", + "We also want to measure the uncertainty on our wavelength calibration." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Now let's go back and measure the Neon spectrum" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "ne_rel_intens = ne_rel_tbl / ne_rel_tbl.max() * ne_spectrum.max()\n", + "plt.plot(wavelengths, ne_spectrum)\n", + "plt.plot(ne_wl_tbl, ne_rel_intens, \"x\")\n", + "plt.xlabel(\"Wavelength (nm)\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We can try keeping only those with intensiy >100, though we will miss some lines" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "ne_keep_final = ne_rel_intens > 100\n", + "plt.plot(wavelengths, ne_spectrum)\n", + "plt.plot(ne_wl_tbl[ne_keep_final], ne_rel_intens[ne_keep_final], \"x\")\n", + "plt.xlabel(\"Wavelength (nm)\");" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# select down to just those lines we want to keep\n", + "ne_wl_final = ne_wl_tbl[ne_keep_final]\n", + "ne_pixel_vals = linfit_wlmodel.inverse(ne_wl_final)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# check for overlaps again (in the densest part of the spectrum)\n", + "plt.plot(xaxis, ne_spectrum)\n", + "plt.plot(ne_pixel_vals, ne_rel_intens[ne_keep_final], \"x\")\n", + "for xx, yy in zip(ne_pixel_vals, ne_rel_intens[ne_keep_final]):\n", + " plt.plot(\n", + " [xx - 15, xx + 15],\n", + " [yy, yy],\n", + " )\n", + "plt.xlim(600, 850)\n", + "plt.xlabel(\"Wavelength (nm)\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "For Neon, our automated approach isn't very good (the third point from the left is not on a peak), and we'll want to use a narrower pixel range.\n", + "\n", + "Still, rather than go back through and laboriously identify each line, we'll stick with a semi-automated approach, just using a narrower range around each peak." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "npixels = 10\n", + "improved_xval_guesses_ne = [\n", + " np.average(\n", + " xaxis[g - npixels : g + npixels],\n", + " weights=ne_spectrum[g - npixels : g + npixels] - np.median(ne_spectrum),\n", + " )\n", + " for g in map(int, ne_pixel_vals)\n", + "]\n", + "improved_xval_guesses_ne" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(improved_xval_guesses_kr, kr_wl_final, \"x\", label=\"Krypton\")\n", + "plt.plot(improved_xval_guesses_ne, ne_wl_final, \"^\", label=\"Neon\")\n", + "plt.plot(improved_xval_guesses, guessed_wavelengths, \"+\", label=\"Mercury\")\n", + "plt.plot(xaxis, wavelengths, zorder=-5)\n", + "plt.plot(xaxis, linfit_wlmodel_hgkr(xaxis), zorder=-5)\n", + "plt.legend(loc=\"best\")\n", + "plt.xlabel(\"Pixel Coordinate\")\n", + "plt.ylabel(\"Wavelength (nm)\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We concatenate the Neon lines onto the spectrum and re-fit again" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "xvals_hg_plus_kr_plus_ne = (\n", + " list(improved_xval_guesses)\n", + " + list(improved_xval_guesses_kr)\n", + " + list(improved_xval_guesses_ne)\n", + ")\n", + "waves_hg_plus_kr_plus_ne = (\n", + " list(guessed_wavelengths) + list(kr_wl_final) + list(ne_wl_final)\n", + ")\n", + "linfit_wlmodel_hgkrne = linfitter(\n", + " model=wlmodel, x=xvals_hg_plus_kr_plus_ne, y=waves_hg_plus_kr_plus_ne\n", + ")\n", + "linfit_wlmodel_hgkrne" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "residuals_hgmodel_nedata = np.array(waves_hg_plus_kr_plus_ne) - linfit_wlmodel(\n", + " xvals_hg_plus_kr_plus_ne\n", + ")\n", + "residuals_hgkrmodel_nedata = np.array(waves_hg_plus_kr_plus_ne) - linfit_wlmodel_hgkr(\n", + " xvals_hg_plus_kr_plus_ne\n", + ")\n", + "residuals_hgkrnemodel_nedata = np.array(\n", + " waves_hg_plus_kr_plus_ne\n", + ") - linfit_wlmodel_hgkrne(xvals_hg_plus_kr_plus_ne)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# calculate and compare the squared residuals\n", + "# the model calculated for Hg-only works better than that for Krypton, but the optimal linear model is calculated\n", + "# from all data, with a squared residual of 1.26 nm\n", + "resid2_hgonly = (residuals_hgmodel_nedata**2).sum()\n", + "resid2_hgkr = (residuals_hgkrmodel_nedata**2).sum()\n", + "resid2_hgkrne = (residuals_hgkrnemodel_nedata**2).sum()\n", + "resid2_hgonly, resid2_hgkr, resid2_hgkrne" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xvals_hg_plus_kr_plus_ne, residuals_hgkrnemodel_nedata, \"x\")\n", + "plt.xlabel(\"Pixel Coordinate\")\n", + "plt.ylabel(\"Wavelength residual (data minus model; nm)\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "Finally, with neon included, there is a hint of some structure" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.hist(residuals_hgkrnemodel_nedata)\n", + "plt.title(f\"Stddev = {residuals_hgkrnemodel_nedata.std()}\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "This histogram is perhaps a little skewed." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "There may be some curvature to this spectrum, but the evidence is not terribly compelling, particularly given the uncertain nature of the Neon line fits." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The scatter in these residuals comes out to ~0.24 nm. We'll examine this value further below." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Measuring the uncertainty of the wavelength solution\n", + "\n", + "To evaluate our uncertainty, let's first look at the uncertainty in the pixel value inferred from looking at a single line in the mercury spectrum." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xaxis, hg_spectrum)\n", + "plt.xlim(100, 200)\n", + "plt.xlabel(\"Pixel Index Number\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "We can get a *coarse* empirical estimate of the per-pixel uncertainty by taking the standard deviation of a \"blank\" part of the spectrum:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "plt.plot(xaxis[200:300], hg_spectrum[200:300])\n", + "noise_estimate = hg_spectrum[200:300].std()\n", + "plt.title(f\"stddev = {noise_estimate:0.2f}\");" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The moment-1 estimate of the peak location is, for a spectrum $f(x)$ and pixel location $x$ \n", + "$$ m_1 = \\frac{\\Sigma x f(x)}{\\Sigma f(x)} $$\n", + "\n", + "which, through propagation of error, gives us variance of moment 1:\n", + "\n", + "$$\\sigma_{m_1}^2 = \\left(\\frac{\\Sigma \\left[ (x-m_1)^2 \\sigma_{f(x)}^2 \\right]}{\\left(\\Sigma f(x)\\right)^2} +\n", + " \\frac{\\sigma_{\\Sigma f(x)}^2 \\Sigma \\left[ (x-m_1)^2 f(x)^2 \\right]}{\\left(\\Sigma f(x)\\right)^4} \\right)$$\n", + " \n", + " where \n", + "$ \\sigma_{\\Sigma f(x)}^2 = \\Sigma \\sigma_{f(x)}^2 = N \\sigma_{f(x)}^2 $" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "cutout = hg_spectrum[100:200] - np.median(hg_spectrum)\n", + "xcutout = xaxis[100:200]\n", + "m1 = (xcutout * cutout).sum() / cutout.sum()\n", + "m1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# Uncertainty on moment 1\n", + "sigma_m1_left = ((xcutout - m1) ** 2 * noise_estimate**2).sum() / cutout.sum() ** 2\n", + "sigma_m1_right = (\n", + " (xcutout.size * noise_estimate**2)\n", + " * ((xcutout - m1) ** 2 * cutout**2).sum()\n", + " / cutout.sum() ** 4\n", + ")\n", + "sigma_m1 = sigma_m1_left + sigma_m1_right\n", + "sigma_m1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "print(f\"Moment analysis yields m1 = {m1:0.3f} +/- {sigma_m1:0.3f} pixels\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "The uncertainty is about 1/1000th of a pixel for a bright line. It may be somewhat larger for fainter lines, but it is still much smaller than our observed scatter. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + " We can prove that the uncertainty per line is negligible by looking at a faint neon line:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "# cut out a line and compute its moment 1\n", + "cutoutne = ne_spectrum[640:660] - np.median(ne_spectrum)\n", + "xcutoutne = xaxis[640:660]\n", + "m1ne = (xcutoutne * cutoutne).sum() / cutoutne.sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# estimate the per-pixel error in the Neon spectrum\n", + "ne_noise_estimate = ne_spectrum[1400:1600].std()\n", + "ne_noise_estimate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "plt.plot(xcutoutne, cutoutne)\n", + "plt.plot(m1ne, cutoutne.max(), \"x\")\n", + "plt.xlabel(\"Pixel Coordinate\");" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# calculate Neon line centroid uncertainty\n", + "sigma_m1_left = (\n", + " (xcutoutne - m1ne) ** 2 * ne_noise_estimate**2\n", + ").sum() / cutoutne.sum() ** 2\n", + "sigma_m1_right = (\n", + " (xcutoutne.size * ne_noise_estimate**2)\n", + " * ((xcutoutne - m1ne) ** 2 * cutoutne**2).sum()\n", + " / cutoutne.sum() ** 4\n", + ")\n", + "sigma_m1_ne = sigma_m1_left + sigma_m1_right\n", + "sigma_m1_ne" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "print(\n", + " f\"Moment analysis for the faint Neon line yields m1 = {m1ne:0.4f} +/- {sigma_m1_ne:0.4f} pixels\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "This error is ~40 times larger, but still much less than a pixel's width." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Our best fit gives that each pixel is about 0.1 nm (this comes from the slope of the fitted line), so our uncertainty is 0.0001 nm - 0.004 nm. The scatter in the residuals is 0.23 nm, so it is not explained by our formal fit's statistical uncertainty. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "print(\n", + " f\"Standard Deviation of the residuals = {residuals_hgkrnemodel_nedata.std()} nm, \"\n", + " f\"Faint Line uncertainty = {sigma_m1_ne * linfit_wlmodel_hgkrne.slope} nm\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## What does the residual represent?\n", + "\n", + "The residual to our fit gives us a sense of the *systematic* uncertainty from a combination of line blending and imperfect fits. We know, from the NIST line lists, that there are in some cases multiple lines that we could not easily distinguish in the spectrum: these add a small bias to our inferred pixel locations.\n", + "\n", + "There may also be subtle effects from the spectrograph itself that cause small systematic variations in the wavelength solution." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## How could we do better?\n", + "\n", + "We could attempt to *deblend* the individual spectral features by jointly fitting multiple-Gaussian models.\n", + "\n", + "While this procedure is commonly used, it is fraught with error and extremely difficult to automate in general." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "You're done! Now apply this calibration to the data and start measuring things in Tutorial 3" + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "language_info": { + "codemirror_mode": { + "name": "ipython" + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python" + }, + "rise": { + "transition": "none" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/3_Trace_Extract_Wavelength-CalibrateSpectrum.ipynb b/3_Trace_Extract_Wavelength-CalibrateSpectrum.ipynb new file mode 100755 index 0000000..6452ce3 --- /dev/null +++ b/3_Trace_Extract_Wavelength-CalibrateSpectrum.ipynb @@ -0,0 +1,434 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Spectroscopic Data Reduction Part 3: Extracting the final wavelength-calibrated spectrum \n", + "\n", + "This tutorial assumes you have gone through the [Trace](1_SpectroscopicTraceTutorial.ipynb) and [Wavelength Calibration](2_WavelengthCalibration) tutorials and have their results available.\n", + "\n", + "## Authors\n", + "Adam Ginsburg, Kelle Cruz, Lia Corrales, Jonathan Sick, Adrian Price-Whelan\n", + "\n", + "## Learning Goals\n", + "* Extract a target 1D spectrum from a two-dimensional spectrum using an existing trace\n", + "* Apply a fitted wavelength solution to the data\n", + "* Fit a line profile to the wavelength-calibrated spectrum\n", + "\n", + "## Keywords\n", + "Spectroscopy\n", + "\n", + "## Summary\n", + "This tutorial, the third in a series, shows how to apply a trace and a wavelength solution to science data. It then shows how to do basic analysis, i.e., line fitting." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Extract the science spectrum\n", + "\n", + "First, we repeat the trace-and-extract process derived in [Part 1](1-SpectroscopicTraceTutorial.ipynb), but now for Deneb:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from PIL import Image as PILImage\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "plt.style.use(\"dark_background\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from astropy.modeling.models import Linear1D\n", + "from astropy import constants\n", + "from astropy import units as u\n", + "from astropy.visualization import quantity_support\n", + "\n", + "quantity_support()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "image_array_2 = np.array(PILImage.open(\"deneb_3s_13.63g_1.bmp\"))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from astropy.modeling.polynomial import Polynomial1D\n", + "from astropy.modeling.models import Gaussian1D\n", + "from astropy.modeling.fitting import LevMarLSQFitter, LinearLSQFitter\n", + "\n", + "linfitter = LinearLSQFitter()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "yaxis2 = np.repeat(np.arange(470, 520)[:, None], image_array_2.shape[1], axis=1)\n", + "xvals = np.arange(image_array_2.shape[1])\n", + "weighted_yaxis_values2 = np.average(\n", + " yaxis2, axis=0, weights=image_array_2[470:520, :] - np.median(image_array_2)\n", + ")\n", + "polymodel2 = Polynomial1D(degree=3)\n", + "fitted_polymodel2 = linfitter(polymodel2, xvals, weighted_yaxis_values2)\n", + "trace_center2 = fitted_polymodel2(xvals)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "npixels_to_cut = 15\n", + "trace_center = fitted_polymodel2(xvals)\n", + "cutouts = np.array(\n", + " [\n", + " image_array_2[int(yval) - npixels_to_cut : int(yval) + npixels_to_cut, ii]\n", + " for yval, ii in zip(trace_center, xvals)\n", + " ]\n", + ")\n", + "cutouts.shape\n", + "mean_trace_profile = cutouts.mean(axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "spectrum2 = np.array(\n", + " [\n", + " np.average(\n", + " image_array_2[int(yval) - npixels_to_cut : int(yval) + npixels_to_cut, ii],\n", + " weights=mean_trace_profile,\n", + " )\n", + " for yval, ii in zip(trace_center2, xvals)\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we retrieve the wavelength solution derived in Part 2." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wlmodel = Linear1D(slope=-0.10213643, intercept=562.3862495)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "wavelengths = wlmodel(xvals) * u.nm" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(wavelengths, spectrum2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Analysis\n", + "\n", + "Now, we go on to do some basic analysis on our fully extracted and wavelength-calibrated spectrum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We zoom in on the 4860 Angstrom line - H-Beta" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(wavelengths, spectrum2)\n", + "plt.axis([470, 510, 140, 190])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use astropy models to construct an absorption line model, consisting of a continuum level and a negative Gaussian to represent the absorption feature" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "absorption_model_guess = Linear1D(slope=0, intercept=175) + Gaussian1D(\n", + " amplitude=-25, mean=486, stddev=3\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can overplot our guessed model - it's not right, but it's in the right spot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(wavelengths, spectrum2)\n", + "plt.plot(wavelengths, absorption_model_guess(wavelengths.value))\n", + "plt.axis([470, 510, 140, 190])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Levenberg-Marquardt Least Squares fitter can be used to find the optimal fit to our data given the starting guess." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lmfitter = LevMarLSQFitter()\n", + "selection = (wavelengths > 470 * u.nm) & (wavelengths < 500 * u.nm)\n", + "fitted_absorption_model = lmfitter(\n", + " model=absorption_model_guess, x=wavelengths.value[selection], y=spectrum2[selection]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(wavelengths, spectrum2)\n", + "plt.plot(wavelengths, fitted_absorption_model(wavelengths.value))\n", + "plt.axis([470, 510, 140, 190])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now separate out the two components, the continuum and the absorption line model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "continuum_fit, absorption_fit = fitted_absorption_model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we plot the data minus the absorption line model, we get a nice \"line-free continuum\":" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(wavelengths, spectrum2)\n", + "plt.plot(wavelengths, spectrum2 - absorption_fit(wavelengths.value))\n", + "plt.axis([470, 510, 140, 190])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The [Equivalent Width](https://en.wikipedia.org/wiki/Equivalent_width) of a spectral absorption line is defined to be the width of a feature that has the same integral as the absorption line, but goes all the way from the continuum level to zero.\n", + "\n", + "We can compute this with our model, assuming our continuum is flat (has zero slope):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "EQW = (\n", + " -absorption_fit(wavelengths.value[selection]).sum() / continuum_fit.intercept * u.nm\n", + ")\n", + "EQW" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "absorption_fit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have identified the line as H-beta, so we can measure some of its properties now:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "air_wavelength_hbeta = (\n", + " 486.135 * u.nm\n", + ") # wikipedia https://en.wikipedia.org/wiki/Balmer_series" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Doppler Shift will tell us the velocity of the star. Note that this is the velocity in the _topocentric_ frame, i.e., in the rest frame of the observatory. If we knew precisely when and where these observations were taken, we could convert this velocity to the heliocentric or LSR frames with [astropy tools](https://docs.astropy.org/en/stable/coordinates/velocities.html)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, we do the calculation manually, following the optical definition\n", + "$$v_{opt} = c \\frac{\\lambda-\\lambda_0}{\\lambda} $$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "doppler_velocity = (\n", + " (absorption_fit.mean * u.nm - air_wavelength_hbeta)\n", + " / (air_wavelength_hbeta)\n", + " * constants.c\n", + ")\n", + "doppler_velocity.to(u.km / u.s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can do the same thing using [astropy equivalencies](https://docs.astropy.org/en/stable/units/equivalencies.html#spectral-doppler-equivalencies):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "doppler_velocity = (absorption_fit.mean * u.nm).to(\n", + " u.km / u.s, u.doppler_optical(air_wavelength_hbeta)\n", + ")\n", + "doppler_velocity" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also compute the line width from our fit:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "linewidth_kms = (\n", + " (absorption_fit.stddev * u.nm) / air_wavelength_hbeta * constants.c.to(u.km / u.s)\n", + ")\n", + "linewidth_kms" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's it! You've extracted and wavelength-calibrated a spectrum.\n", + "\n", + "The next tricky step is flux calibration, but we will do that in a subsequent tutorial because we need a different data set; this one didn't include the necessary data for flux calibration (though we could approximately calibrate the spectrum using a known magnitude over the observed band for Deneb)" + ] + } + ], + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython" + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/aldebaran_3s_1.bmp b/aldebaran_3s_1.bmp new file mode 100755 index 0000000000000000000000000000000000000000..ba16d3138c03eb45388589151cedec04fbf1f965 GIT binary patch literal 1921078 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

7jx@zXv38{ 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 z zXczQRt&Hl9EZ;=iq2z-EVG{3WZ`tuZ(qKX`gZFSw?@(p2;BKlZe~`v48BSVac&^Cw zmT71tZ8)MDLyb`2ng`+hZxo~B;{V(XU#UPF^1KEE55H=LfU0sg@ovPA+M#ZVd z8>bT;5L>4`N1>4E>=R@K>lj~?DSNKZt4)y z(WhygOyp6U`qi-cO35%E{w#ns`fZQF^8-${^(i@xR8^6ir2^N*g)wrNmj|A6BE@gc zhY0WtBS7fPGJQ1YcW7gn#}XEk1UQpR0e3K7)Y|!aU^&m3Eh;zPEdKWyILD+*Be#u{TfqG&4S>zvP^I*<^1rj%Ki_I=ik9 zZ0(j}-P#*VUt79Dl5<>H5Cl;)JRB(Z!hy7Ej#08>PUOCmd)d(H=Dg;dfDvnTyHkM- z4LhLn%&e`Mvsm9HX(@E^Zk`9w(uq1yRhJ6gycN!!3O}%t46S|0uDgufFms_nd?IhF zB(mamCLkAc>m`KFWX<6GATrni8;ublr-P32elnU@xKTWpIP zx#5`of~XnQLv5a?W>FTw5`&K6Gqa+Adj`s!C<+4IaP$@iH#&H;2QNHGx4tcKGy~k$ zkID*!l|UV1AWukz0>Gh3C!aPyw0p+x#~1(-$GgnkPEd+>Qd9`r5HTP0z4f&CThwQh zAXEb_wW1ze3YCP*Lw3UU-*Cd(jP{(0KgbsxLzEI>?h~ALJVR0PTa}e)t!-!5_1_0*V44e#MFxwZM4c3Sku1u%JT~2JH^ZJ{F z>rIW6(>{RWfCQd1K&!p#ky%dD0+`;gCQj!b7$SyKBREFnF$c;30fJ_N6H*(=B|5DG z0V*-SYk&_>SnCNdDzpdBHxgY3!-b#&_3?3>@7PkZT?uq=F`c;QmmpRmK@3%=ju&@3!gLV82DTIjy+8h6g zm@%F%fU2S|9Le1-e4Y}R=Z(b(iCPi zlJK2Zj!Tp}vG)=-dX-6kx!X&s)ZF7P8L(MR>Q#311R|WQOi%f-oYphkZdH>#+CA`G zN2E%X3XzW*4DX&lE$N)Eg_yg8eqo54o`U!Oc1V!!g8GnB+P%;oCHv)+8X zCo$Q+tp6PN=>ZN4MMOPxV-+#sL+@Plj9|{w^4CDl!5I`KO6Ykx9ci-b`5gYgfF?l{G;fvo3=OGo=iQl;kXklPOR|LF;_)VagK zLN{Wzj|W6RhTE-$#MMlHG88LI>Jeic9vJHzr!*QCEfHh|asU2FIVLryG-Av*-VvDH z1;1Gu$U>|OgUtV= zd&-yb{B7B*V}J%ejleUQ>68e}suuUO z9aKX-IAcZiyflXJ&ju6lC*%J9^)Z==1`(g_i(|B75BxT-cUMjV#ti*Ym-8DIiYkfu z;A|sE*zqfZjO-};El@X2#=D*yl3@tR@a(INA)J(U z{UbB&;MXVa*2n3H6kiDIMr?lEa8y;hfmdJ)?cGQPq1gzLM$fbo%qnk!8o>T8+wG@s zYV!h-mCM)ua#O#$q!oK*M2_mHlICTHiy%5L3!?5$CRWe>ue(fHD=*9Kg z^~|yn&bvGT71i~_z|ix(unH%qG`nZ0Sj3$c7{)|deo|Dd z-G7ngD%<5jKQ#-+dx43F`H5N^oI(z+cuJOH#yJStZU)8b=dVS&*Kf0wx^h&A(>wS( z7mynTIcqb9z(tSLGRZBSbJFy+%Bx>0-)ViVpI=nr8rKtF^k7wmT2X1y$AsL{H0~v5 z1%UxNBK<+-XnF}?e^d^&dtG>QEZ-i5Ekaxt^$eY&N8AFFeIQ=bF<}O?4Kx5cl)uo> zRBJLo4X|NkI7-x~!}`H>$9-x#LLR7a++_;o(gCb$Vd5CkmbjMMPH|!2Fa=(F2iLIC z!K)~<8|N?VGF6s_#yj?x9@Kk(Wa5(S@tP@|Mj5B=%mTFEGgg!Xi!+0O_m| zMe-<2<*fka+KhDXU1mj_W1_obprIOrf12}7lOZIJX1Rq+38Sj$Vbae*pplpz_n3r9 z{quT+cR<&|mWEBC4-Dz8AFA2ePhaL5+UcOuJ||FLA6;pr`2cP zkoq09hJkZH4;*$T0)dtBYmCcQZ?|t|F^&s_KCD?aGz-Z*HQl3pHHxsB(%~42-q7-{ zafDV9V9m$Bh{6~%E)i?zBm<}rNyI$re_{@BdVaT%{S;79-Qt8ET&-C5Qwr zI}yj~yZ;gb(~k1V5v*o8@lV6${ouNcUwq{ttEvfyB;47llb0|>Nr^{j}t0CoH^ z7dH#V#BW<&X0{~@^Ecnj*IpPyXKVq|`q@AShf46h_I?!qN_T6NVSLYTEe7%oYn+SW zyMfIsi%J)@)d%^79AK0C;li=)pc+IY)>cdYX5MX?WrinQ3SDsQvdD$<>|f2PjAP1j z=OavrpXu^+)(C_0*AeC5dNsk}bAX|&fHwMV?&dvxxjmYiZWubP**Xf~B28i_%srjK z2rx~af!>`}_L8qVcC7$+H4>akpMIu19fP-VIb zT`>@i@i1DCvja?yTy#fg<^eEPmQkZ@a27F^=XVs26iCftw~*vyay?lVwis5vJIuPk zDMgWEuaNTuzNBdAgJzlrf@Kow*OGiM+R9HjAIrU_ULOri9^0pWYl@qxJB?0vYS=)- zkAGkihH=_e$V9Wl85L|Z$(hb%gH<6I?)LRga z{vsT9n?qAPwtu6=l!Yor0xy6g9O&rAie$y#vU50qW`hK}x%;)6EK0(5y&IuitB0;V zVf!2qBM?Ok#t56u@VxhS^6E_)R{SfE9j}YF29F%Njn5n=BiuiDAH^XRN6F^Zgb5|r zr&FpK!9aQjVQb~F`%iiP;Cldmj7ktvAw2#J)}q(Pnue4L_fwZ}5-V6f2TKaf28=Ws zB|fJA`v9-r_He5`!U=kyeN>plg>;A9a3!^g$iz1)j07~v{n^lOR2%Al_`Pfz$2FxgUUGShu*rKTJ z)UEZSbHHgL@GTXI8@x0KlRGOW*TcE&W;;aE+_6eUFwK)_bKW8VGn;*>5FUet==D)* zR0Az3cEt+Rsd3#}7Md6&8u;GTe=0d+WdZ*r%wY&VOz4_xWEBG?f7CE=L(=QzKNzT# z%X7ihO8;R)^W9QRIKR2%5#X_(-@1JPO2OksJ|a_wtQi_={h7^bm(Ac8t`|QW$qK81 zysWGCzC0&5i0t-QOG;gj)XyUuAyr6dP4wSa%siHk0nq!nVff<4G?)=l${gNiKq9Kv z`i6V?|B-ZOJFcYJz1W|EWJE9`7!!lR;5=nAr#;o)HFb4$bxEym39wqS3>Y}T0S@5d z&b~6>Ti^N#eCG$SAIT44|5jQ)=U8f0?VU+ReBWCCakJ;nporJ&m`+KsgJ<9P+Z{9Y9~)<|sdU-hHPQ+^u>*fo$N|v# zc?&dfY2y*5$;Aj8+F=rQhbPvDoI%C52|u(4GU%O~!~C)v+hu#amMscTl0Q<_&GvNd-=A7MJY`gHLL-HF~nEB)oq>GpKfuS%Fp z3M)p(^Tje#J{8>3dpL_HOD;m<5OSeEEbPytVhLoRMT_NcR{by&E`Z^{C{|ALh{M4R zKnXpH)Czh99Nb6_?Fsh$dYWAX$Z(W1B|uG(!TQ0QvnHpoWzhDs{vhC1TMcv}q!c6S z>`X+UeX1xqWf1{8cM+c)_@zmPQtw&T)1qm}vrTehMRKaEjVkCQ-R6szF5S;A-7hw|gkH+a z#`W%}nz^(Q?+^lmnnZ(6D!j49)lex_y2>c!WFA!lu%=kU#4@K>fQ(wDOU-!U{WVs5 zz`c~+JyIYsRchH@0L6>VY6zCVjZ8Xi{Omr1cDO2`-~S<$%Oe-kl=@2RTvg{6aq7@T zNhCS$y1k?iH^WgR8rr57AMNwVbL0Z?PnF*DBjH3Cp`5Kej*P@e*IxYAxxVX_V$xJY+oQ?C#3Qk!sxOW?GwqGdmU+MHn{p?!7_V?VDa9& zcAUKHFaUE7dt)NPQrf6@q}Z=VhrCQQ$KXPZY4ykn0>RTGCjesg;EpQhABFUI4rvKE zsu9IN@Ve75%TH(~S_N4pdXGG!!Z(SN zAU}050m${W)oVV;ZL&NTCwLl(^MRV?pnsLJ_@vYez&9@r56)^vglTTAu8&t~)plMH zMCb%4R-f&*;YgN%68*c-ut2n`ePE2l^R>F#`Qqndm_o9K@}rdiL+Wa&uA62$(2>aS zx3)La|4zzEd&>_;S!Nsfh>g}j<}X^&4~=V{84ifBKl={z#a%(7dBx)CbVT2ZU~x35 z^Wg<$2}kC`Uv^Jb{vCEj9G+No6Ucla5e$RF=c%Xmvu2j?NS6#WEc5X-Q$`@gi^7-@w;s!{uV2_|`dI9MmE75RK zey!|lbN=~&&&aZ)=voDZ(ZY%iFh#k6ZmaCz#fv03Xp7I#Yw2FtVPhja(tAjbNV6|@ zlEp{Vu)kT>1awG@wK%RNf`?9~a&h^^d?v|Xybu`8>-?i*+C*y;*+}WNgkE9s8(P)L zOfL!xV}!`?z)dw4loSQ~DVh`MXE!z#5i_JJlPT%_E^EEgLXY5o>GB|IqE38v_5tt-k+&9p6n#B;2SYi-QfJq7wJ;U<`Cs|P;QKOtat|-5c&|omC zaQPXHcR;0jw73lNt5{GH=R`3&h#3p6jt)Qd7` zO7uUH!&ZZcu@a`zJd*Y~S-Opa_gG2H=j0M$L4b)>te(vz9iEviJKKA9k;R$hz^^bxl2p=t&>GyKit_^3N zI+8o3_`Lk8#YQwP$%65vJUr7i$^{W0z;EHz+KjG#7n`>$GPO+cAclxvlW!V`G!cQ% z-QZ{kC-3*Vz#~Fy+=9vMIiAVMFh4e21MSr`Rg-_i5A z-Y1W+yo&Nh@t4H-Xa#~vOG}%*_Pg>1xTLT#IdUXH`l(cLEk(uR_&w)Ef|W_QOGWak5?QC2a6esZ05Cg@h7>Cl&yEDzS$1b#0+&^Q#;eelYi~ zYsNC$Zbk+Nz3TGvBh8pL*6l#m1t;J`?>pvmca?h|l|%EZ){?e^gdEH#xs$7B(eKwV z(V850hU?oHgK4+mlRmjIfin^l!83v4G#`+jdL~U<6rfopd$i*Zw0P!g)gvHbo{7^M^MefY5&ON;UgOCNy&N12 z=CbV8yFFS;9}tgPBvhGGvh#ucpF4>gZT}jd0Mk)@R)=dRF-r14%bl#A*X9DOx2b

>jzsb3XZRFc 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