`_ at the
top-level of the tutorials repository. From the root level of the cloned or
downloaded repository::
@@ -135,7 +131,7 @@ Marking a cell with an intentional error
Edit the cell metadata of the cell in which you would like to raise an exception
and add the following to the top-level JSON: ``"tags": ["raises-exception"]``
-This tag is recognized by the latest (master) version of nbconvert.
+This tag is recognized by the latest (main) version of nbconvert.
Automatically Strip Output and Notebook Metadata
------------------------------------------------
diff --git a/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb b/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb
deleted file mode 100755
index a1274d56d..000000000
--- a/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb
+++ /dev/null
@@ -1,342 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Coords 1: Getting Started with astropy.coordinates\n",
- "\n",
- "## Authors\n",
- "Erik Tollerud, Kelle Cruz, Stephen Pardy, Stephanie T. Douglas\n",
- "\n",
- "## Learning Goals\n",
- "* Create `astropy.coordinates.SkyCoord` objects using names and coordinates\n",
- "* Use SkyCoord objects to become familiar with object oriented programming (OOP)\n",
- "* Interact with a `SkyCoord` object and access its attributes\n",
- "* Use a `SkyCoord` object to query a database\n",
- "\n",
- "## Keywords\n",
- "coordinates, OOP, file input/output\n",
- "\n",
- "\n",
- "## Summary\n",
- "In this tutorial, we're going to investigate the area of the sky around the picturesque group of galaxies named \"Hickson Compact Group 7,\" download an image, and do something with its coordinates."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Imports"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Python standard-library\n",
- "from urllib.parse import urlencode\n",
- "from urllib.request import urlretrieve\n",
- "\n",
- "# Third-party dependencies\n",
- "from astropy import units as u\n",
- "from astropy.coordinates import SkyCoord\n",
- "from IPython.display import Image"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Describing on-sky locations with `coordinates`"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The `SkyCoord` class in the `astropy.coordinates` package is used to represent celestial coordinates. First, we'll make a SkyCoord object based on our object's name, \"Hickson Compact Group 7\" or \"HCG 7\" for short. Most astronomical object names can be found by [SESAME](http://cdsweb.u-strasbg.fr/cgi-bin/Sesame), a service which queries Simbad, NED, and VizieR and returns the object's type and its J2000 position. This service can be used via the `SkyCoord.from_name()` [class method](https://julien.danjou.info/blog/2013/guide-python-static-class-abstract-methods):"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# initialize a SkyCood object named hcg7_center at the location of HCG 7\n",
- "hcg7_center = SkyCoord.from_name('HCG 7')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "Note that the above command requires an internet connection. If you don't have one, execute the following line instead:\n",
- "
"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# uncomment and run this line if you don't have an internet connection\n",
- "# hcg7_center = SkyCoord(9.81625*u.deg, 0.88806*u.deg, frame='icrs')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "type(hcg7_center)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Show the available methods and attributes of the SkyCoord object we've created called `hcg7_center`"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "dir(hcg7_center)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Show the RA and Dec."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "print(hcg7_center.ra, hcg7_center.dec)\n",
- "print(hcg7_center.ra.hour, hcg7_center.dec)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We see that, according to SESAME, HCG 7 is located at ra = 9.849 deg and dec = 0.878 deg. "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "This object we've just created has various useful ways of accessing the information contained within it. In particular, the ``ra`` and ``dec`` attributes are specialized [Quantity](http://docs.astropy.org/en/stable/units/index.html) objects (actually, a subclass called [Angle](http://docs.astropy.org/en/stable/api/astropy.coordinates.Angle.html), which in turn is subclassed by [Latitude](http://docs.astropy.org/en/stable/api/astropy.coordinates.Latitude.html) and [Longitude](http://docs.astropy.org/en/stable/api/astropy.coordinates.Longitude.html)). These objects store angles and provide pretty representations of those angles, as well as some useful attributes to quickly convert to common angle units:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "type(hcg7_center.ra), type(hcg7_center.dec)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "hcg7_center.ra, hcg7_center.dec"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "hcg7_center"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "hcg7_center.ra.hour"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "SkyCoord will also accept string-formatted coordinates either as separate strings for RA/Dec or a single string. You'll need to give units, though, if they aren't part of the string itself."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "scrolled": false
- },
- "outputs": [],
- "source": [
- "SkyCoord('0h39m15.9s', '0d53m17.016s', frame='icrs')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "hcg7_center.ra.hour"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Download an image\n",
- "Now that we have a `SkyCoord` object, we can try to use it to access data from the [Sloan Digitial Sky Survey](http://www.sdss.org/) (SDSS). Let's start by trying to get a picture using the SDSS image cutout service to make sure HCG 7 is in the SDSS footprint and has good image quality.\n",
- "\n",
- "This requires an internet connection, but if it fails, don't worry: the file is included in the repository so you can just let it use the local file``'HCG7_SDSS_cutout.jpg'``, defined at the top of the cell. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# tell the SDSS service how big of a cutout we want\n",
- "im_size = 12*u.arcmin # get a 12 arcmin square\n",
- "im_pixels = 1024 \n",
- "cutoutbaseurl = 'http://skyservice.pha.jhu.edu/DR12/ImgCutout/getjpeg.aspx'\n",
- "query_string = urlencode(dict(ra=hcg7_center.ra.deg, \n",
- " dec=hcg7_center.dec.deg, \n",
- " width=im_pixels, height=im_pixels, \n",
- " scale=im_size.to(u.arcsec).value/im_pixels))\n",
- "url = cutoutbaseurl + '?' + query_string\n",
- "\n",
- "# this downloads the image to your disk\n",
- "urlretrieve(url, 'HCG7_SDSS_cutout.jpg')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "Image('HCG7_SDSS_cutout.jpg')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Very pretty!\n",
- "\n",
- "The saga of HCG 7 continues in [Coords 2: Transforming between coordinate systems](http://learn.astropy.org/rst-tutorials/Coordinates-Transform.html)."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Exercises"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Exercise 1"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Create a `SkyCoord` of some other astronomical object you find interesting. Using only a single method/function call, get a string with the RA/Dec in the form 'HH:MM:SS.S DD:MM:SS.S'. Check your answer against an academic paper or a website like [SIMBAD](http://simbad.u-strasbg.fr/simbad/) that will show you sexigesimal coordinates for the object.\n",
- "\n",
- "(Hint: `SkyCoord.to_string()` might be worth reading up on.)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Exercise 2"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Now get an image of that object from the Digitized Sky Survey and download it and/or show it in the notebook. Bonus points if you figure out the (one-line) trick to get it to display in the notebook *without* ever downloading the file yourself.\n",
- "\n",
- "(Hint: STScI has an easy-to-access [copy of the DSS](https://archive.stsci.edu/dss/). The pattern to follow for the web URL is ``http://archive.stsci.edu/cgi-bin/dss_search?f=GIF&ra=RA&dec=DEC``.)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.6.2"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/tutorials/notebooks/Coordinates-Intro/HCG7_2MASS.tbl b/tutorials/notebooks/Coordinates-Intro/HCG7_2MASS.tbl
deleted file mode 100644
index ff7960ba9..000000000
--- a/tutorials/notebooks/Coordinates-Intro/HCG7_2MASS.tbl
+++ /dev/null
@@ -1,95 +0,0 @@
-\
-\fixlen = T
-\RowsRetrieved = 23
-\ORIGIN = 'IPAC Infrared Science Archive (IRSA), Caltech/JPL'
-\DATETIME= '2015-02-25 16:44:17'
-\DataTag = 'ADS/IRSA.Gator#2015/0225/164417_13085'
-\DATABASE= '2MASS All-Sky Extended Source Catalog (XSC) (fp_xsc)'
-\EQUINOX = 'J2000'
-\SKYAREA = 'within 20 arcmin of ra=9.81625 dec=+0.88806 Eq J2000 '
-\StatusFile = '/workspace/TMP_gDI5AY_559/Gator/irsa/13085/log.13085.html'
-\SQL = 'WHERE (cc_flg != 'a' and cc_flg != 'z') '
-\SQL = 'SELECT (27 column names follow in next row.)'
-\
-\ designation
-\ ___ source designation formed from sexigesimal coordinates
-\ ra (deg)
-\ ___ right ascension (J2000 decimal deg) based on peak pixel
-\ dec (deg)
-\ ___ declination (J2000 decimal deg) based on peak pixel
-\ r_k20fe (arcsec)
-\ ___ 20mag/sq." isophotal K fiducial ell. ap. semi-major axis
-\ j_m_k20fe (mag)
-\ ___ J 20mag/sq." isophotal fiducial ell. ap. magnitude
-\ j_msig_k20fe (mag)
-\ ___ J 1-sigma uncertainty in 20mag/sq." iso.fid.ell.mag
-\ j_flg_k20fe
-\ ___ J confusion flag for 20mag/sq." iso. fid. ell. mag
-\ h_m_k20fe (mag)
-\ ___ H 20mag/sq." isophotal fiducial ell. ap. magnitude
-\ h_msig_k20fe (mag)
-\ ___ H 1-sigma uncertainty in 20mag/sq." iso.fid.ell.mag
-\ h_flg_k20fe
-\ ___ H confusion flag for 20mag/sq." iso. fid. ell. mag
-\ k_m_k20fe (mag)
-\ ___ K 20mag/sq." isophotal fiducial ell. ap. magnitude
-\ k_msig_k20fe (mag)
-\ ___ K 1-sigma uncertainty in 20mag/sq." iso.fid.ell.mag
-\ k_flg_k20fe
-\ ___ K confusion flag for 20mag/sq." iso. fid. ell. mag
-\ k_ba
-\ ___ K minor/major axis ratio fit to the 3-sigma isophote
-\ k_phi (deg)
-\ ___ K angle to 3-sigma major axis (E of N)
-\ sup_ba
-\ ___ minor/major axis ratio fit to 3-sig. super-coadd isophote
-\ sup_phi (deg)
-\ ___ super-coadd angle to major axis (E of N)
-\ r_ext (arcsec)
-\ ___ extrapolation/total radius
-\ j_m_ext (mag)
-\ ___ J mag from fit extrapolation
-\ j_msig_ext (mag)
-\ ___ J 1-sigma uncertainty in mag from fit extrapolation
-\ h_m_ext (mag)
-\ ___ H mag from fit extrapolation
-\ h_msig_ext (mag)
-\ ___ H 1-sigma uncertainty in mag from fit extrapolation
-\ k_m_ext (mag)
-\ ___ K mag from fit extrapolation
-\ k_msig_ext (mag)
-\ ___ K 1-sigma uncertainty in mag from fit extrapolation
-\ cc_flg
-\ ___ indicates artifact contamination and/or confusion
-\ angle (deg)
-\ ___ Position Angle in degree.
-\ dist (arcsec)
-\ ___ Distance between the target position and each source in arcsec.
-\
-| designation| ra| dec|r_k20fe|j_m_k20fe|j_msig_k20fe|j_flg_k20fe|h_m_k20fe|h_msig_k20fe|h_flg_k20fe|k_m_k20fe|k_msig_k20fe|k_flg_k20fe| k_ba|k_phi|sup_ba|sup_phi| r_ext|j_m_ext|j_msig_ext|h_m_ext|h_msig_ext|k_m_ext|k_msig_ext|cc_flg| dist| angle|
-| char| double| double| double| double| double| int| double| double| int| double| double| int| double| int|double| int| double| double| double| double| double| double| double| char| double| double|
-| | deg| deg| arcsec| mag| mag| | mag| mag| | mag| mag| | | deg| | deg| arcsec| mag| mag| mag| mag| mag| mag| | arcsec| deg|
-| null| null| null| null| null| null| null| null| null| null| null| null| null| null| null| null| null| null| null| null| null| null| null| null| null| null| null|
- 00402069+0052508 10.086218 0.880798 9.4 13.835 0.068 0 13.010 0.086 0 12.588 0.089 0 0.8 70 0.820 35 18.62 13.632 0.088 12.744 0.104 12.398 0.105 0 972.120611 91.538952
- 00395984+0103545 9.999350 1.065140 12.9 12.925 0.035 0 12.183 0.042 0 11.890 0.067 0 0.8 35 0.700 40 35.90 12.469 0.048 11.910 0.066 11.522 0.087 0 916.927636 45.951861
- 00401849+0049448 10.077062 0.829130 6.0 14.918 0.086 0 14.113 0.107 0 13.714 0.103 0 0.6 -15 1.000 90 11.35 14.631 0.121 13.953 0.169 13.525 0.161 0 962.489231 102.731490
- 00395277+0057124 9.969907 0.953472 5.3 14.702 0.049 0 14.248 0.069 0 13.899 0.095 0 0.6 -60 0.440 -50 10.59 14.620 0.144 14.150 0.296 13.730 0.200 0 601.136444 66.936590
- 00401864+0047245 10.077704 0.790143 7.6 15.585 0.134 1 15.003 0.180 1 14.049 0.142 1 0.5 30 0.460 30 14.48 14.977 0.138 14.855 0.303 13.653 0.180 0 1004.982128 110.531470
- 00393485+0051355 9.895219 0.859882 39.3 11.415 0.031 3 10.755 0.044 3 10.514 0.068 3 0.6 -30 0.700 -60 92.29 11.415 0.018 10.155 0.054 9.976 0.085 0 301.813395 109.639102
- 00392964+0103495 9.873526 1.063769 10.9 14.463 0.065 0 13.618 0.067 0 13.258 0.091 0 0.4 55 0.280 60 20.35 14.200 0.086 13.363 0.091 13.101 0.133 0 665.301415 18.051526
- 00403343+0049079 10.139293 0.818865 5.0 15.484 0.150 0 null null null 13.970 0.137 0 1.0 90 1.000 90 10.05 15.035 0.183 14.725 0.000 13.654 0.189 0 1189.207905 102.088788
- 00393319+0035505 9.888305 0.597381 11.5 13.156 0.033 0 12.509 0.043 0 12.073 0.059 0 0.6 -55 0.520 -40 21.64 13.026 0.040 12.247 0.046 11.978 0.065 0 1078.110270 166.078500
- 00395031+0035444 9.959649 0.595693 5.1 15.684 0.135 0 14.805 0.138 0 13.981 0.124 0 1.0 90 1.000 90 10.05 15.684 0.135 14.404 0.176 13.838 0.201 0 1172.286501 153.874091
- 00394272+0037395 9.928026 0.627663 5.2 15.359 0.107 0 14.264 0.090 0 13.798 0.109 0 1.0 90 1.000 90 10.30 15.332 0.193 13.994 0.133 13.629 0.172 0 1020.130143 156.769515
- 00393899+0038325 9.912468 0.642384 5.0 15.266 0.094 0 14.432 0.102 0 14.067 0.134 0 1.0 90 1.000 90 10.05 15.043 0.141 14.306 0.164 13.940 0.225 0 949.833479 158.613482
- 00400691+0040595 10.028815 0.683197 5.5 15.012 0.065 0 14.244 0.074 0 14.001 0.112 0 0.7 -25 0.740 -40 10.71 14.669 0.087 14.058 0.115 13.889 0.187 0 1062.726983 133.944137
- 00391798+0041588 9.824936 0.699687 6.1 15.685 0.168 0 14.890 0.191 0 14.003 0.155 0 1.0 90 1.000 90 11.40 15.677 0.312 14.415 0.226 13.568 0.190 0 678.863209 177.360117
- 00384796+0034572 9.699858 0.582578 5.1 14.925 0.077 0 14.224 0.114 0 13.536 0.079 0 1.0 90 1.000 90 10.20 14.839 0.133 14.111 0.192 13.461 0.137 0 1176.842625 200.856597
- 00390392+0050579 9.766345 0.849419 5.0 14.895 0.070 0 14.238 0.087 0 13.834 0.110 0 1.0 90 1.000 90 10.05 14.706 0.107 14.033 0.132 13.750 0.187 0 227.201453 232.246890
- 00391339+0051508 9.805797 0.864135 52.8 10.362 0.014 0 9.631 0.017 0 9.334 0.024 0 0.3 -15 0.400 -15 75.02 10.279 0.015 9.527 0.016 9.247 0.023 0 93.990015 203.598476
- 00391786+0054458 9.824418 0.912743 27.9 11.082 0.016 0 10.384 0.022 0 10.147 0.032 0 0.5 5 0.700 5 42.75 10.914 0.018 10.251 0.021 10.031 0.030 0 93.596555 18.308033
- 00385879+0057269 9.744971 0.957478 5.0 15.535 0.122 0 14.796 0.145 0 14.278 0.165 0 1.0 90 1.000 90 10.05 15.535 0.122 14.623 0.227 14.147 0.269 0 358.163568 314.246475
- 00391879+0053308 9.828303 0.891909 15.4 13.044 0.047 0 12.412 0.063 0 12.077 0.094 0 0.8 60 0.740 65 23.62 12.755 0.048 12.283 0.072 11.713 0.096 0 45.544562 72.287562
- 00391213+0102408 9.800550 1.044691 5.0 15.568 0.126 0 15.047 0.181 0 14.356 0.176 0 1.0 90 1.000 90 10.05 15.295 0.181 15.047 0.181 14.067 0.250 0 566.696375 354.276982
- 00383990+0104442 9.666268 1.078968 5.3 15.255 0.108 0 14.232 0.121 0 13.873 0.113 0 1.0 90 1.000 90 10.44 15.151 0.180 13.812 0.149 13.552 0.155 0 873.946372 321.851314
- 00384916+0050212 9.704872 0.839244 5.1 15.075 0.088 0 14.651 0.170 0 13.804 0.101 0 1.0 90 1.000 90 10.20 15.053 0.159 14.651 0.170 13.682 0.171 0 437.740484 246.331036
diff --git a/tutorials/notebooks/Coordinates-Intro/HCG7_SDSS_cutout.jpg b/tutorials/notebooks/Coordinates-Intro/HCG7_SDSS_cutout.jpg
deleted file mode 100644
index 4eb9718ff..000000000
Binary files a/tutorials/notebooks/Coordinates-Intro/HCG7_SDSS_cutout.jpg and /dev/null differ
diff --git a/tutorials/notebooks/Coordinates-Intro/requirements.txt b/tutorials/notebooks/Coordinates-Intro/requirements.txt
deleted file mode 100644
index 5bea42877..000000000
--- a/tutorials/notebooks/Coordinates-Intro/requirements.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-astropy=2.0
-numpy=1.13
-matplotlib=2.0
-astroquery=0.3
-ipython=6.2
diff --git a/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb b/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb
deleted file mode 100755
index e68187dda..000000000
--- a/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb
+++ /dev/null
@@ -1,664 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Coords 2: Transforming between coordinate systems\n",
- "\n",
- "## Authors\n",
- "Erik Tollerud, Kelle Cruz, Stephen Pardy, Stephanie T. Douglas\n",
- "\n",
- "## Learning Goals\n",
- "- Create `astropy.coordinates.SkyCoord` objects\n",
- "- Transform to different coordinate systems on the sky\n",
- "- Transform to altitude/azimuth coordinates from a specific observing site\n",
- "\n",
- "## Keywords\n",
- "coordinates, units, observational astronomy\n",
- "\n",
- "## Summary\n",
- "\n",
- "In this tutorial we demonstrate how to define astronomical coordinates using the `astropy.coordinates` \"frame\" classes. We then show how to transform between the different built-in coordinate frames, such as from ICRS (RA, Dec) to Galactic (l, b). Finally, we show how to compute altitude and azimuth from a specific observing site."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Imports"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Third-party dependencies\n",
- "from astropy import units as u\n",
- "from astropy.coordinates import SkyCoord\n",
- "import numpy as np"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Set up matplotlib and use a nicer set of plot parameters\n",
- "from astropy.visualization import astropy_mpl_style\n",
- "import matplotlib.pyplot as plt\n",
- "plt.style.use(astropy_mpl_style)\n",
- "%matplotlib inline"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Section 0: Quickstart"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "\n",
- "**Note:** If you already worked through [Coords 1](http://learn.astropy.org/rst-tutorials/Coordinates-Intro.html?highlight=coordinates) you can feel free to skip to [Section 1](#Section-1:).\n",
- "\n",
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "In Astropy, the most common object you'll work with for coordinates is `SkyCoord`. A `SkyCoord` can most easily be created directly from angles as shown below. \n",
- "\n",
- "In this tutorial we'll be converting between frames. Let's start in the ICRS frame (which happens to be the default.) \n",
- "\n",
- "For much of this tutorial we'll work with the Hickson Compact Group 7. We can create an object either by passing the degrees explicitly (using the astropy [units](http://docs.astropy.org/en/stable/units/index.html) library) or by passing in strings. The two coordinates below are equivalent:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "hcg7_center = SkyCoord(9.81625*u.deg, 0.88806*u.deg, frame='icrs') # using degrees directly\n",
- "print(hcg7_center)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "hcg7_center = SkyCoord('0h39m15.9s', '0d53m17.016s', frame='icrs') # passing in string format\n",
- "print(hcg7_center)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We can get the right ascension and declination components of the object directly by accessing those attributes."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "print(hcg7_center.ra)\n",
- "print(hcg7_center.dec)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Section 1: "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Introducing frame transformations"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "`astropy.coordinates` provides many tools to transform between different coordinate systems. For instance, we can use it to transform from ICRS coordinates (in RA and Dec) to Galactic coordinates.\n",
- "\n",
- "To understand the code in this section, it may help to read over the [overview of the astropy coordinates scheme](http://astropy.readthedocs.org/en/latest/coordinates/index.html#overview-of-astropy-coordinates-concepts). The key piece to understand is that all coordinates in Astropy are in particular \"frames\" and we can transform between a specific `SkyCoord` object in one frame to another. For example, we can transform our previously-defined center of HCG 7 from ICRS to Galactic coordinates:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "hcg7_center = SkyCoord(9.81625*u.deg, 0.88806*u.deg, frame='icrs')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "There are three different ways of transforming coordinates. Each has its pros and cons, but all should give you the same result. The first way to transform to other built-in frames is by specifying those attributes. For instance, let's see the location of HCG 7 in Galactic coordinates."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Transforming coordinates using attributes:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "hcg7_center.galactic"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Transforming coordinates using the transform_to() method and other coordinate object"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The above is actually a special \"quick-access\" form that internally does the same as what's in the cell below: it uses the [`transform_to()`](http://docs.astropy.org/en/stable/api/astropy.coordinates.SkyCoord.html#astropy.coordinates.SkyCoord.transform_to) method to convert from one frame to another. We can pass in an empty coordinate class to specify what coordinate system to transform into."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "from astropy.coordinates import Galactic # new coordinate baseclass\n",
- "hcg7_center.transform_to(Galactic())"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Transforming coordinates using the transform_to() method and a string"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Finally, we can transform using the `transform_to()` method and a string with the name of a built-in coordinate system."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "hcg7_center.transform_to('galactic')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We can transform to many coordinate frames and equinoxes. \n",
- "\n",
- "These coordinates are available by default:\n",
- "\n",
- " - ICRS\n",
- " - FK5\n",
- " - FK4\n",
- " - FK4NoETerms\n",
- " - Galactic\n",
- " - Galactocentric\n",
- " - Supergalactic\n",
- " - AltAz\n",
- " - GCRS\n",
- " - CIRS\n",
- " - ITRS\n",
- " - HCRS\n",
- " - PrecessedGeocentric\n",
- " - GeocentricTrueEcliptic\n",
- " - BarycentricTrueEcliptic\n",
- " - HeliocentricTrueEcliptic\n",
- " - SkyOffsetFrame\n",
- " - GalacticLSR\n",
- " - LSR\n",
- " - BaseEclipticFrame\n",
- " - BaseRADecFrame\n",
- "\n",
- "Let's focus on just a few of these. We can try FK5 coordinates next:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "hcg7_center_fk5 = hcg7_center.transform_to('fk5')\n",
- "print(hcg7_center_fk5)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "And, as with the Galactic coordinates, we can acheive the same result by importing the FK5 class from the `astropy.coordinates` package. This also allows us to change the equinox."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "from astropy.coordinates import FK5\n",
- "hcg7_center_fk5.transform_to(FK5(equinox='J1975')) # precess to a different equinox "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "\n",
- "**Beware:** Changing frames also changes some of the attributes of the object, but usually in a way that makes sense. The following code should fail.\n",
- "\n",
- "
"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "tags": [
- "raises-exception"
- ]
- },
- "outputs": [],
- "source": [
- "hcg7_center.galactic.ra # should fail because Galactic coordinates are l/b not RA/Dec"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Instead, we now have access to the l and b attributes:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "print(hcg7_center.galactic.l, hcg7_center.galactic.b)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Section 2:"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Transform frames to get to altitude-azimuth (\"AltAz\")\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "To actually do anything with observability we need to convert to a frame local to an on-earth observer. By far the most common choice is horizontal altitude-azimuth coordinates, or \"AltAz\". We first need to specify both where and when we want to try to observe.\n",
- "\n",
- "We'll need to import a few more specific modules:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "from astropy.coordinates import EarthLocation\n",
- "from astropy.time import Time"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Let's first see the sky position at Kitt Peak National Observatory in Arizona."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Kitt Peak, Arizona\n",
- "kitt_peak = EarthLocation(lat='31d57.5m', lon='-111d35.8m', height=2096*u.m)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "For known observing sites we can enter the name directly."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "kitt_peak = EarthLocation.of_site('Kitt Peak')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We can see the list of observing sites:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "EarthLocation.get_site_names()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Let's check the altitude at 1 AM UTC, which is 6 PM AZ mountain time:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "observing_time = Time('2010-12-21 1:00')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Now we use these to create an `AltAz` frame object. Note that this frame has some other information about the atmosphere, which can be used to correct for atmospheric refraction. Here we leave that alone, because the default is to ignore this effect (by setting the pressure to 0)."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "from astropy.coordinates import AltAz\n",
- "\n",
- "aa = AltAz(location=kitt_peak, obstime=observing_time)\n",
- "print(aa)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Now we can transform our ICRS `SkyCoord` to `AltAz` to get the location in the sky over Kitt Peak at the requested time."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "hcg7_center.transform_to(aa)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "To look at just the altitude we can `alt` attribute:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "hcg7_center.transform_to(aa).alt"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Alright, it's at 55 degrees at 6 PM, but that's pretty early to be observing. We could try various times one at a time to see if the airmass is at a darker time, but we can do better: let's try to create an airmass plot."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# this gives a Time object with an *array* of times\n",
- "delta_hours = np.linspace(0, 6, 100)*u.hour\n",
- "full_night_times = observing_time + delta_hours\n",
- "full_night_aa_frames = AltAz(location=kitt_peak, obstime=full_night_times)\n",
- "full_night_aa_coos = hcg7_center.transform_to(full_night_aa_frames)\n",
- "\n",
- "plt.plot(delta_hours, full_night_aa_coos.secz)\n",
- "plt.xlabel('Hours from 6pm AZ time')\n",
- "plt.ylabel('Airmass [Sec(z)]')\n",
- "plt.ylim(0.9,3)\n",
- "plt.tight_layout()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Great! Looks like the lowest airmass is in another hour or so (7 PM). But that might still be twilight... When should we start observing for proper dark skies? Fortunately, Astropy provides a ``get_sun`` function that can be used to check this. Let's use it to check if we're in 18-degree twilight or not."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "from astropy.coordinates import get_sun\n",
- "\n",
- "full_night_sun_coos = get_sun(full_night_times).transform_to(full_night_aa_frames)\n",
- "plt.plot(delta_hours, full_night_sun_coos.alt.deg)\n",
- "plt.axhline(-18, color='k')\n",
- "plt.xlabel('Hours from 6pm AZ time')\n",
- "plt.ylabel('Sun altitude')\n",
- "plt.tight_layout()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Looks like it's just below 18 degrees at 7 PM, so you should be good to go!"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We can also look at the object altitude at the present time and date:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "now = Time.now()\n",
- "hcg7_center = SkyCoord(9.81625*u.deg, 0.88806*u.deg, frame='icrs')\n",
- "kitt_peak_aa = AltAz(location=kitt_peak, obstime=now)\n",
- "print(hcg7_center.transform_to(kitt_peak_aa))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Exercises"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Exercise 1"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Try to compute to some arbitrary precision (rather than eyeballing on a plot) when 18 degree twilight or sunrise/sunset hits on that night."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Exercise 2"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Try converting the HCG 7 coordinates to an equatorial frame at some other equinox a while in the past (like J2000). Do you see the precession of the equinoxes?\n",
- "\n",
- "Hint: To see a diagram of the supported frames look [here](http://docs.astropy.org/en/stable/coordinates/#module-astropy.coordinates) or on the list above. One of those will do what you need if you give it the right frame attributes."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Exercise 3"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Try looking at the altitude of HCG 7 at another observatory."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Wrap-up"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "For more documentation on the many other features of `astropy.coordinates`, check out [its section of the documentation](http://astropy.readthedocs.org/en/latest/coordinates/index.html).\n",
- "\n",
- "You might also be interested in [the astroplan affiliated package](http://astroplan.readthedocs.org/), which uses the `astropy.coordinates` to do more advanced versions of the tasks in the last section of this tutorial."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.6.7"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/tutorials/notebooks/Coordinates-Transform/requirements.txt b/tutorials/notebooks/Coordinates-Transform/requirements.txt
deleted file mode 100644
index c58b45fdc..000000000
--- a/tutorials/notebooks/Coordinates-Transform/requirements.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-astropy=2.0
-numpy=1.13
-matplotlib=2.1
-astroquery=0.3
-ipython=6.2
diff --git a/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb b/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb
index 29e91669a..041ff97e0 100755
--- a/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb
+++ b/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb
@@ -35,9 +35,9 @@
"metadata": {},
"source": [
"```\n",
- "conda install -c astropy astroquery\n",
- "conda install -c astropy spectral-cube\n",
- "conda install -c astropy reproject\n",
+ "conda install -c conda-forge astroquery\n",
+ "conda install -c conda-forge spectral-cube\n",
+ "conda install -c conda-forge reproject\n",
"```"
]
},
diff --git a/tutorials/notebooks/UVES/UVES.ipynb b/tutorials/notebooks/UVES/UVES.ipynb
index c157997fd..4cf6da57f 100644
--- a/tutorials/notebooks/UVES/UVES.ipynb
+++ b/tutorials/notebooks/UVES/UVES.ipynb
@@ -232,14 +232,18 @@
"the current directory, then this file can be imported into a python session in\n",
"order to use the function `func` with the following command:\n",
"\n",
- "```import spectra_utils\n",
- "a = spectra_utils.func(param1, param2, ...)```\n",
+ "```\n",
+ "import spectra_utils\n",
+ "a = spectra_utils.func(param1, param2, ...)\n",
+ "```\n",
"\n",
"Alternatively, you can import just one (or a few) of many different functions\n",
"that are defined in your file ``spectra_utils.py``:\n",
"\n",
- "```from spectra_utils import func\n",
- "a = func(param1, param2, ...)```\n",
+ "```\n",
+ "from spectra_utils import func\n",
+ "a = func(param1, param2, ...)\n",
+ "```\n",
"\n",
"You'll recognize that python does not make a difference between modules that come\n",
"with python (e.g. `glob`), external modules (e.g. `numpy` or `astropy`) and modules\n",
@@ -1336,7 +1340,20 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.6.5"
+ "version": "3.8.3"
+ },
+ "toc": {
+ "base_numbering": 1,
+ "nav_menu": {},
+ "number_sections": true,
+ "sideBar": true,
+ "skip_h1_title": false,
+ "title_cell": "Table of Contents",
+ "title_sidebar": "Contents",
+ "toc_cell": false,
+ "toc_position": {},
+ "toc_section_display": true,
+ "toc_window_display": false
}
},
"nbformat": 4,
diff --git a/tutorials/notebooks/astropy-coordinates/1-Coordinates-Intro.ipynb b/tutorials/notebooks/astropy-coordinates/1-Coordinates-Intro.ipynb
new file mode 100644
index 000000000..e16e8457a
--- /dev/null
+++ b/tutorials/notebooks/astropy-coordinates/1-Coordinates-Intro.ipynb
@@ -0,0 +1,634 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Astronomical Coordinates 1: Getting Started with astropy.coordinates\n",
+ "\n",
+ "## Authors\n",
+ "Adrian Price-Whelan\n",
+ "\n",
+ "## Learning Goals\n",
+ "* Create `astropy.coordinates.SkyCoord` objects using coordinate data and object names\n",
+ "* Use SkyCoord objects to become familiar with object oriented programming (OOP)\n",
+ "* Use a `SkyCoord` object to query the *Gaia* archive using `astroquery`\n",
+ "* Output coordinate data in different string representations\n",
+ "* Demonstrate working with 3D sky coordinates (including distance information for objects)\n",
+ "\n",
+ "## Keywords\n",
+ "coordinates, OOP, astroquery, gaia\n",
+ "\n",
+ "\n",
+ "## Summary\n",
+ "\n",
+ "Astronomers use a wide variety of coordinate systems and formats to represent sky coordinates of celestial objects. For example, you may have seen terms like \"right ascension\" and \"declination\" or \"galactic latitude and longitude,\" and you may have seen angular coordinate components represented as \"0h39m15.9s,\" \"00:39:15.9,\" or 9.81625º. The subpackage `astropy.coordinates` provides tools for representing the coordinates of objects and transforming them between different systems. \n",
+ "\n",
+ "In this tutorial, we will explore how the `astropy.coordinates` package can be used to work with astronomical coordinates. You may find it helpful to keep [the Astropy documentation for the coordinates package](http://docs.astropy.org/en/stable/coordinates/index.html) open alongside this tutorial for reference or additional reading. In the text below, you may also see some links that look like ([docs](http://docs.astropy.org/en/stable/coordinates/index.html)). These links will take you to parts of the documentation that are directly relevant to the cells from which they link. \n",
+ "\n",
+ "*Note: This is the 1st tutorial in a series of tutorials about astropy.coordinates.*\n",
+ "- [Next tutorial: Astronomical Coordinates 2: Transforming Coordinate Systems and Representations](2-Coordinates-Transforms)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Imports\n",
+ "\n",
+ "We start by importing some packages that we will need below:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "%matplotlib inline\n",
+ "import numpy as np\n",
+ "\n",
+ "from astropy import units as u\n",
+ "from astropy.coordinates import SkyCoord, Distance\n",
+ "from astropy.io import fits\n",
+ "from astropy.table import QTable\n",
+ "from astropy.utils.data import download_file\n",
+ "\n",
+ "from astroquery.gaia import Gaia\n",
+ "Gaia.ROW_LIMIT = 10000 # Set the row limit for returned data"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Representing On-sky Positions with `astropy.coordinates`\n",
+ "\n",
+ "In Astropy, the most common way of representing and working with sky coordinates is to use the `SkyCoord` object ([docs](https://docs.astropy.org/en/stable/coordinates/skycoord.html)). A `SkyCoord` can be created directly from angles or arrays of angles with associated units, as demonstrated below. \n",
+ "\n",
+ "To get started, let's assume that we want to create a `SkyCoord` object for the center of the open star cluster NGC 188 so that later we can query and retrieve stars that might be members of the cluster. Let's also assume, for now, that we already know the sky coordinates of the cluster to be (12.11, 85.26) degrees in the ICRS coordinate frame. The ICRS — sometimes referred to as \"equatorial\" or \"J2000\" coordinates ([more info about the ICRS](https://arxiv.org/abs/astro-ph/0602086)) — is currently the most common astronomical coordinate frame for stellar or extragalactic astronomy, and is the default coordinate frame for `SkyCoord`. Since we already know the ICRS position of NGC 188 (see above), we can create a `SkyCoord` object for the cluster by passing the data in to the `SkyCoord` initializer:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_center = SkyCoord(12.11*u.deg, 85.26*u.deg)\n",
+ "ngc188_center"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Even though the default frame is ICRS, it is generally recommended to explicitly specify the frame your coordinates are in. In this case, this would be an equivalent way of creating our `SkyCoord` object for NGC 188:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_center = SkyCoord(12.11*u.deg, 85.26*u.deg, frame='icrs')\n",
+ "ngc188_center"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "As we will see later on in this series, there are many other supported coordinate frames, so it helps to get into the habit of passing in the name of a coordinate frame.\n",
+ "\n",
+ "In the above initializations, we passed in `astropy.units.Quantity` objects with angular units to specify the angular components of our sky coordinates. The `SkyCoord` initializer will also accept string-formatted coordinates either as separate strings for Right Ascension (RA) and Declination (Dec) or a single string. For example, if we have sexagesimal sky coordinate data: In this case, the representation of the data includes specifications of the units (the \"hms\" for \"hour minute second\", and the \"dms\" for \"degrees minute second\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "SkyCoord('00h48m26.4s', '85d15m36s', frame='icrs')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Some string representations do not explicitly define units, so it is sometimes necessary to specify the units of the string coordinate data explicitly if they are not implicitly included:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "SkyCoord('00:48:26.4 85:15:36', unit=(u.hour, u.deg), \n",
+ " frame='icrs')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "For more information and examples on initializing `SkyCoord` objects, [see this documentation](http://docs.astropy.org/en/latest/coordinates/skycoord.html)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "For the `SkyCoord` initializations demonstrated above, we assumed that we already had the coordinate component values ready. If you do not know the coordinate values and the object you are interested in is in [SESAME](http://cdsweb.u-strasbg.fr/cgi-bin/Sesame), you can also automatically look up and load coordinate values from the name of the object using the `SkyCoord.from_name()` class method1 ([docs](http://docs.astropy.org/en/latest/coordinates/index.html#convenience-methods)). Note, however, that this requires an internet connection. It is safe to skip this cell if you are not connected to the internet because we already defined the object `ngc188_center` in the cells above.\n",
+ "\n",
+ " 1If you do not know what a class method is, think of it like an alternative constructor for a `SkyCoord` object — calling `SkyCoord.from_name()` with a name gives you a new `SkyCoord` object. For more detailed background on what class methods are and when they're useful, see [this page](https://julien.danjou.info/blog/2013/guide-python-static-class-abstract-methods)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_center = SkyCoord.from_name('NGC 188')\n",
+ "ngc188_center"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The `SkyCoord` object that we defined now has various ways of accessing the coordinate information contained within it. All `SkyCoord` objects have attributes that allow you to retrieve the coordinate component data, but the component names will change depending on the coordinate frame of the `SkyCoord` you have. In our examples we have created a `SkyCoord` in the ICRS frame, so the component names are lower-case abbreviations of Right Ascension, `.ra`, and Declination, `.dec`:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_center.ra, ngc188_center.dec"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The `SkyCoord` component attributes (here ``ra`` and ``dec``) return specialized `Quantity`-like objects that make working with angular data easier. While `Quantity` ([docs](http://docs.astropy.org/en/stable/units/index.html)) is a general class that represents numerical values and physical units of any kind, `astropy.coordinates` defines subclasses of `Quantity` that are specifically designed for working with angles, such as the `Angle` ([docs](http://docs.astropy.org/en/stable/api/astropy.coordinates.Angle.html)) class. The `Angle` class then has additional, more specialized subclasses `Latitude` ([docs](http://docs.astropy.org/en/stable/api/astropy.coordinates.Latitude.html)) and `Longitude` ([docs](http://docs.astropy.org/en/stable/api/astropy.coordinates.Longitude.html)). These objects store angles, provide useful attributes to quickly convert to common angular units, and enable formatting the numerical values in various formats. For example, in a Jupyter notebook, these objects know how to represent themselves using LaTeX:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_center.ra"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_center.dec"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "type(ngc188_center.ra), type(ngc188_center.dec)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "With these objects, we can retrieve the coordinate components in different units using the `Quantity.to()` method:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "(ngc188_center.ra.to(u.hourangle), \n",
+ " ngc188_center.ra.to(u.radian),\n",
+ " ngc188_center.ra.to(u.degree))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Or using the shorthand attributes, which return only the component values:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "(ngc188_center.ra.hour, \n",
+ " ngc188_center.ra.radian, \n",
+ " ngc188_center.ra.degree)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can also format the values into strings with specified units ([docs](http://docs.astropy.org/en/latest/coordinates/formatting.html)), for example:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_center.ra.to_string(unit=u.hourangle, sep=':', pad=True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Querying the *Gaia* Archive to Retrieve Coordinates of Stars in NGC 188"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now that we have a `SkyCoord` object for the center of NGC 188, we can use this object with the `astroquery` package to query many different astronomical databases (see a full list of [available services in the astroquery documentation](https://astroquery.readthedocs.io/en/latest/#available-services)). Here, we will use the `SkyCoord` object `ngc188_center` to select sources from the *Gaia* Data Release 2 catalog around the position of the center of NGC 188 to look for stars that might be members of the star cluster. To do this, we will use the `astroquery.gaia` subpackage ([docs](https://astroquery.readthedocs.io/en/latest/gaia/gaia.html)).\n",
+ "\n",
+ "This requires an internet connection, but if it fails, the catalog file is included in the repository so you can load it locally (skip the next cell if you do not have an internet connection):"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "job = Gaia.cone_search_async(ngc188_center, radius=0.5*u.deg)\n",
+ "ngc188_table = job.get_results()\n",
+ "\n",
+ "# only keep stars brighter than G=19 magnitude\n",
+ "ngc188_table = ngc188_table[ngc188_table['phot_g_mean_mag'] < 19*u.mag]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "cols = ['source_id',\n",
+ " 'ra',\n",
+ " 'dec',\n",
+ " 'parallax',\n",
+ " 'parallax_error',\n",
+ " 'pmra',\n",
+ " 'pmdec',\n",
+ " 'radial_velocity',\n",
+ " 'phot_g_mean_mag',\n",
+ " 'phot_bp_mean_mag',\n",
+ " 'phot_rp_mean_mag']\n",
+ "ngc188_table[cols].write('gaia_results.fits', overwrite=True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The above cell may not work if you do not have an internet connection, so we have included the results table along with the notebook:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_table = QTable.read('gaia_results.fits')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "len(ngc188_table)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The returned `astropy.table` `Table` object now contains about 5000 stars from *Gaia* DR2 around the coordinate position of the center of NGC 188. Let's now construct a `SkyCoord` object with the results table. In the *Gaia* data archive, the ICRS coordinates of a source are given as column names `\"ra\"` and `\"dec\"`:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_table['ra']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_table['dec']"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Note that, because the *Gaia* archive provides data tables with associated units, and we read this table using the `QTable` object ([docs](http://docs.astropy.org/en/latest/table/mixin_columns.html#quantity-and-qtable)), the above table columns are represented as `Quantity` objects with units of degrees. Note also that these columns contain many (>5000!) coordinate values. We can pass these directly in to `SkyCoord` to get a single `SkyCoord` object to represent all of these coordinates:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_gaia_coords = SkyCoord(ngc188_table['ra'], ngc188_table['dec'])\n",
+ "ngc188_gaia_coords"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Exercises"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Create a `SkyCoord` for the center of the open cluster the Pleiades (either by looking up the coordinates and passing them in, or by using the convenience method we learned about above):"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_center = SkyCoord.from_name('NGC 188')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Using only a single method/function call on the `SkyCoord` object representing the center of NGC 188, print a string with the RA/Dec in the form 'HH:MM:SS.S DD:MM:SS.S'. Check your answer against [SIMBAD](http://simbad.u-strasbg.fr/simbad/), which will show you sexagesimal coordinates for the object.\n",
+ "\n",
+ "(Hint: `SkyCoord.to_string()` might be useful)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_center.to_string(style=\"hmsdms\", sep=\":\", precision=1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Using a single method/function call on the `SkyCoord` object containing the results of our *Gaia* query, compute the angular separation between each resulting star and the coordinates of the cluster center for NGC 188.\n",
+ "\n",
+ "(Hint: `SkyCoord.separation()` might be useful)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_gaia_coords.separation(ngc188_center)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## More Than Just Sky Positions: Including Distance Information in `SkyCoord`\n",
+ "\n",
+ "So far, we have used `SkyCoord` to represent angular sky positions (i.e., `ra` and `dec` only). It is sometimes useful to include distance information with the sky coordinates of a source, thereby specifying the full 3D position of an object. To pass in distance information, `SkyCoord` accepts the keyword argument \"`distance`\". So, if we knew that the distance to NGC 188 is 1.96 kpc, we could also pass in a distance (as a `Quantity` object) using this argument:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_center_3d = SkyCoord(12.11*u.deg, 85.26*u.deg,\n",
+ " distance=1.96*u.kpc)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "With the table of *Gaia* data we retrieved above for stars around NGC 188, `ngc188_table`, we also have parallax measurements for each star. For a precisely-measured parallax $\\varpi$, the distance $d$ to a star can be obtained approximately as $d \\approx 1/\\varpi$. This only really works if the parallax error is small relative to the parallax ([see discussion in this paper](https://arxiv.org/abs/1507.02105)), so if we want to use these parallaxes to get distances we first have to filter out stars that have low signal-to-noise parallaxes:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "parallax_snr = ngc188_table['parallax'] / ngc188_table['parallax_error']\n",
+ "ngc188_table_3d = ngc188_table[parallax_snr > 10] \n",
+ "len(ngc188_table_3d)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The above selection on `parallax_snr` keeps stars that have a ~10-sigma parallax measurement, but this is an arbitrary selection threshold that you may want to tune or remove in your own use cases. This selection removed over half of the stars in our original table, but for the remaining stars we can be confident that converting the parallax measurements to distances is mostly safe.\n",
+ "\n",
+ "The default way of passing in a distance to a `SkyCoord` object, as above, is to pass in a `Quantity` with a unit of length. However, `astropy.coordinates` also provides a specialized object, `Distance`, for handling common transformations of different distance representations ([docs](http://docs.astropy.org/en/latest/coordinates/index.html#distance)). Among other things, this class supports passing in a parallax value:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "Distance(parallax=1*u.mas)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The catalog of stars we queried from *Gaia* contains parallax information in milliarcsecond units, so we can create a `Distance` object directly from these values:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "gaia_dist = Distance(parallax=ngc188_table_3d['parallax'])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can then create a `SkyCoord` object to represent the 3D positions of all of the *Gaia* stars by passing in this distance object to the `SkyCoord` initializer:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_coords_3d = SkyCoord(ra=ngc188_table_3d['ra'], \n",
+ " dec=ngc188_table_3d['dec'],\n",
+ " distance=gaia_dist)\n",
+ "ngc188_coords_3d"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's now use `matplotlib` to plot the sky positions of all of these sources, colored by distance to emphasize the cluster stars:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "fig, ax = plt.subplots(figsize=(6.5, 5.2),\n",
+ " constrained_layout=True)\n",
+ "cs = ax.scatter(ngc188_coords_3d.ra.degree, \n",
+ " ngc188_coords_3d.dec.degree, \n",
+ " c=ngc188_coords_3d.distance.kpc, \n",
+ " s=5, vmin=1.5, vmax=2.5, cmap='twilight')\n",
+ "cb = fig.colorbar(cs)\n",
+ "cb.set_label(f'distance [{u.kpc:latex_inline}]')\n",
+ "\n",
+ "ax.set_xlabel('RA [deg]')\n",
+ "ax.set_ylabel('Dec [deg]')\n",
+ "\n",
+ "ax.set_title('Gaia DR2 sources near NGC 188', fontsize=18)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now that we have 3D position information for both the cluster center, and for the stars we queried from *Gaia*, we can compute the 3D separation (distance) between all of the *Gaia* sources and the cluster center:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sep3d = ngc188_coords_3d.separation_3d(ngc188_center_3d)\n",
+ "sep3d"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Exercises\n",
+ "\n",
+ "Using the 3D separation values, define a boolean mask to select candidate members of the cluster. Select all stars within 50 pc of the cluster center. How many candidate members of NGC 188 do we have, based on their 3D positions?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ngc188_3d_mask = sep3d < 50*u.pc\n",
+ "ngc188_3d_mask.sum()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In this tutorial, we have introduced `astropy.coordinates` as a way to store and represent astronomical sky coordinates. We used coordinate objects, via the `SkyCoord` class interface, to parse and change coordinate representations and units. We also demonstrated how to use a `SkyCoord` object with the `astroquery` package to query an astronomical database, the *Gaia* science archive. We then created a single `SkyCoord` object with the queried data that represents the sky coordinates of many objects. Finally, we introduced the concept of using `astropy.coordinates` to represent a 3D position of an object or set of objects."
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.3"
+ },
+ "toc": {
+ "base_numbering": 1,
+ "nav_menu": {},
+ "number_sections": true,
+ "sideBar": true,
+ "skip_h1_title": false,
+ "title_cell": "Table of Contents",
+ "title_sidebar": "Contents",
+ "toc_cell": false,
+ "toc_position": {},
+ "toc_section_display": true,
+ "toc_window_display": false
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/tutorials/notebooks/astropy-coordinates/2-Coordinates-Transforms.ipynb b/tutorials/notebooks/astropy-coordinates/2-Coordinates-Transforms.ipynb
new file mode 100644
index 000000000..e5fd4fca0
--- /dev/null
+++ b/tutorials/notebooks/astropy-coordinates/2-Coordinates-Transforms.ipynb
@@ -0,0 +1,755 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Astronomical Coordinates 2: Transforming Coordinate Systems and Representations\n",
+ "\n",
+ "## Authors\n",
+ "Adrian Price-Whelan\n",
+ "\n",
+ "## Learning Goals\n",
+ "* Introduce key concepts in `astropy.coordinates`: coordinate component formats, representations, and frames\n",
+ "* Demonstrate how to work with coordinate representations, for example, to change from Cartesian to Cylindrical coordinates\n",
+ "* Introduce coordinate frame transformations and demonstrate transforming from ICRS coordinates to Galactic and Altitude-Azimuth coordinates\n",
+ "\n",
+ "## Keywords\n",
+ "coordinates, OOP\n",
+ "\n",
+ "\n",
+ "## Summary\n",
+ "\n",
+ "In the previous tutorial in this series, we showed how astronomical coordinates in the ICRS or equatorial coordinate system can be represented in Python using the `SkyCoord` object ([docs](https://docs.astropy.org/en/stable/coordinates/skycoord.html)). There are many other coordinate systems that are commonly used in astronomical research. For example, the Galactic coordinate system is often used in radio astronomy and Galactic science, the \"horizontal\" or altitude-azimuth frame is often used for observatory-specific observation planning, and Ecliptic coordinates are often used for solar system science or space mission footprints. All of these coordinate frames (and others!) are supported by `astropy.coordinates`. As we will see below, the `SkyCoord` object is designed to make transforming between these systems a straightforward task.\n",
+ "\n",
+ "In this tutorial, we will explore how the `astropy.coordinates` package can be used to transform astronomical coordinates between different coordinate systems or frames. You may find it helpful to keep [the Astropy documentation for the coordinates package](http://docs.astropy.org/en/stable/coordinates/index.html) open alongside this tutorial for reference or additional reading. In the text below, you may also see some links that look like ([docs](http://docs.astropy.org/en/stable/coordinates/index.html)). These links will take you to parts of the documentation that are directly relevant to the cells from which they link. \n",
+ "\n",
+ "*Note: This is the 2nd tutorial in a series of tutorials about astropy.coordinates. If you are new to astropy.coordinates, you may want to start from the beginning or an earlier tutorial.*\n",
+ "- [Previous tutorial: Astronomical Coordinates 1 - Getting Started](1-Coordinates-Intro)\n",
+ "- [Next tutorial: Astronomical Coordinates 3 - Working with Velocity Data](3-Coordinates-Velocities)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Imports\n",
+ "\n",
+ "We start by importing some general packages that we will need below:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import matplotlib as mpl\n",
+ "import matplotlib.pyplot as plt\n",
+ "%matplotlib inline\n",
+ "import numpy as np\n",
+ "\n",
+ "from astropy import units as u\n",
+ "from astropy.coordinates import (SkyCoord, Distance, Galactic, \n",
+ " EarthLocation, AltAz)\n",
+ "import astropy.coordinates as coord\n",
+ "from astropy.io import fits\n",
+ "from astropy.table import QTable\n",
+ "from astropy.time import Time\n",
+ "from astropy.utils.data import download_file"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Key `astropy.coordinates` Concepts: Component Formats, Representations, and Frames\n",
+ "\n",
+ "Usage of the term \"coordinates\" is overloaded in astronomy and is often used interchangeably when referring to data formats (e.g., sexagesimal vs. decimal), representations (e.g., Cartesian vs. spherical), and frames (e.g., equatorial vs. galactic). In `astropy.coordinates`, we have tried to formalize these three concepts and have made them a core part of the way we interact with objects in this subpackage ([docs](https://docs.astropy.org/en/stable/coordinates/index.html#overview-of-astropy-coordinates-concepts)). Here we will give an overview of these different concepts as we build up to demonstrating how to transform between different astronomical reference frames or systems.\n",
+ "\n",
+ "\n",
+ "## Coordinate Component Formats\n",
+ "\n",
+ "In our previous tutorial, we showed that it is possible to pass in coordinate component data to the `SkyCoord` initializer as strings or as `Quantity` objects in a variety of formats and units. We also saw that the coordinate components of `SkyCoord` objects can be re-formatted. For example, we can change the coordinate *format* by changing the component units, or converting the data to a string:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c = SkyCoord(ra=15.9932*u.deg, dec=-10.52351344*u.deg)\n",
+ "print(c.ra.hourangle)\n",
+ "print(c.to_string('hmsdms'))\n",
+ "print(c.dec.to_string(sep=':', precision=5))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "See the previous tutorial [Astronomical Coordinates 1 - Getting Started](1-Coordinates-Intro) for more examples of this.\n",
+ "\n",
+ "## Coordinate Representations\n",
+ "\n",
+ "In the previous tutorial, we only worked with coordinate data in spherical representations (longitude/latitude), but `astropy.coordinates` also supports other coordinate representations like Cartesian, cylindrical, etc. ([docs](https://docs.astropy.org/en/stable/coordinates/skycoord.html#astropy-skycoord-representations)). To retrieve the coordinate data in a different representation, we can use the `SkyCoord.represent_as()` method. This method either takes a string name of the desired representation, for example:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c.represent_as('cartesian')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "or it accepts an `astropy.coordinates` `Representation` class, such as:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c.represent_as(coord.CartesianRepresentation)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "A list of all supported representations is given in the documentation ([docs](https://docs.astropy.org/en/stable/coordinates/representations.html#astropy-coordinates-representations)), or can be identified as class names that end in `Representaton`:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "print([x for x in dir(coord) \n",
+ " if x.endswith('Representation') and not x.startswith('Base')])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In the `SkyCoord` object that we defined above, we only specified sky positions (i.e., no distance data), so the units of the Cartesian components that are returned above are dimensionless and are interpreted as being on the surface of the (dimensionless) unit sphere. If we instead pass in a distance to `SkyCoord` using the `distance` keyword argument, we instead get a `CartesianRepresentation` object for the 3D position with positional units. For example:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c2 = SkyCoord(ra=15.9932 * u.deg, \n",
+ " dec=-10.52351344 * u.deg,\n",
+ " distance=127.4 * u.pc)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c2.represent_as('cartesian')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Or, we could represent this data with cylindrical components:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c2.represent_as('cylindrical')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "To summarize, using `SkyCoord.represent_as()` is a convenient way to retrieve your coordinate data in a different representation, like Cartesian or Cylindrical. You can also change (in place) the representation of a `SkyCoord` object by setting the `SkyCoord.representation_type` attribute. For example, if we create a `SkyCoord` again with a distance, the default representation type is spherical:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c3 = SkyCoord(ra=15.9932 * u.deg, \n",
+ " dec=-10.52351344 * u.deg,\n",
+ " distance=127.4 * u.pc)\n",
+ "print(c3.representation_type)\n",
+ "c3"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can, however, change the internal representation of the data by setting the `representation_type` attribute to a new `Representation` class:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c3.representation_type = coord.CylindricalRepresentation"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "This then changes the way `SkyCoord` will display the components:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c3"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Note, however, that changing the representation will also change the components that are available on a given `SkyCoord` object: Once we set the `representation_type` to cylindrical, the attributes `.ra` and `.dec` will no longer work, and we instead have to use the cylindrical component names to access the data. In this case, these are `.rho` for radius, `.phi` for azimuth, `.z` for $z$ position:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c3.rho, c3.phi, c3.z"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Transforming Between Coordinate Frames\n",
+ "\n",
+ "The third key concept to keep in mind when thinking about astronomical coordinate data is the reference frame or coordinate system that the data are in. In the previous tutorial, and so far here, we have worked with the default frame assumed by `SkyCoord`: the International Celestial Reference System (ICRS; [some important definitions and context about the ICRS is given here](https://arxiv.org/abs/astro-ph/0602086)). The ICRS is the fundamental coordinate system used in most modern astronomical contexts and is generally what people mean when they refer to \"equatorial\" or \"J2000\" or \"RA/Dec\" coordinates (but there are some important caveats if you are working with older data). As noted above, however, there are many other coordinate systems used in different astronomical, solar, or solar system contexts. \n",
+ "\n",
+ "Some other common coordinate systems are defined as a rotation away from the ICRS that is defined to make science applications easier to interpret. One example here is the Galactic coordinate system, which is rotated with respect to the ICRS to approximately align the Galactic plane with latitude=0. As an example of the `astropy.coordinates` frame transformation machinery, we will load in a subset of a catalog of positions and distances to a set of open clusters in the Milky Way from Cantat-Gaudin et al. 2018 ([Table 1 in this catalog](http://vizier.u-strasbg.fr/viz-bin/VizieR-3?-source=J/A%2bA/618/A93/table1)). We have pre-selected the 474 clusters within 2 kpc of the sun and provide the catalog as a data file next to this notebook. This catalog provides sky position (columns `RAJ2000` and `DEJ2000` in the original catalog) and distance estimates (column `dmode` in the original catalog), which we have renamed in the table we provide to column names `'ra'`, `'dec'`, and `'distance'`. We will start by loading the catalog as a `QTable` using `astropy.table` ([docs](https://docs.astropy.org/en/stable/table/)):"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tbl = QTable.read('Cantat-Gaudin-open-clusters.ecsv')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can now pass the coordinate components to `SkyCoord` to create a single array-valued `SkyCoord` object to represent the positions of all of the open clusters in this catalog. Note that below we will explicitly specify the coordinate frame using `frame='icrs'`: Even though this is the default frame, it is often better to be explicit so that it is clearer to someone reading the code what the coordinate system is:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "open_cluster_c = SkyCoord(\n",
+ " ra=tbl['ra'],\n",
+ " dec=tbl['dec'],\n",
+ " distance=tbl['distance'],\n",
+ " frame='icrs')\n",
+ "len(open_cluster_c)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "To see the first few coordinate entries, we can \"slice\" the array-valued coordinate object like we would a Python list or numpy array:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "open_cluster_c[:4]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's now visualize the sky positions of all of these clusters, colored by their distances. To plot these in an all-sky spherical projection (e.g., aitoff) using `matplotlib`, with longitude increasing to the left as is typically done for plotting astronomical objects on the sky, we have to trick `matplotlib` a little bit: We have to pass in the *negative* angle values when plotting, then reformat the tick labels to make them positive values again. We have written a short function below to handle this trick:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def coordinates_aitoff_plot(coords):\n",
+ " fig, ax = plt.subplots(figsize=(10, 4), \n",
+ " subplot_kw=dict(projection=\"aitoff\"))\n",
+ " \n",
+ " sph = coords.spherical\n",
+ " cs = ax.scatter(-sph.lon.wrap_at(180*u.deg).radian,\n",
+ " sph.lat.radian,\n",
+ " c=sph.distance.value)\n",
+ "\n",
+ " def fmt_func(x, pos):\n",
+ " val = coord.Angle(-x*u.radian).wrap_at(360*u.deg).degree\n",
+ " return f'${val:.0f}' + r'^{\\circ}$'\n",
+ "\n",
+ " ticker = mpl.ticker.FuncFormatter(fmt_func)\n",
+ " ax.xaxis.set_major_formatter(ticker)\n",
+ "\n",
+ " ax.grid()\n",
+ " \n",
+ " cb = fig.colorbar(cs)\n",
+ " cb.set_label('distance [pc]')\n",
+ " \n",
+ " return fig, ax"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now we can plot the sky positions by passing our `SkyCoord` object in to this `coordinates_aitoff_plot()` plot helper function:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "fig, ax = coordinates_aitoff_plot(open_cluster_c)\n",
+ "ax.set_xlabel('RA [deg]')\n",
+ "ax.set_ylabel('Dec [deg]')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The majority of these open clusters are relatively close to the Galactic midplane, which is why they form a fairly narrow \"band\" on the sky in ICRS coordinates. If we transform these positions to Galactic coordinates, we would therefore expect the points to appear around the latitude $b=0$ line. \n",
+ "\n",
+ "To transform our coordinates from ICRS to Galactic (or any other coordinate system), we can use the `SkyCoord.transform_to()` method and pass in the new coordinate frame instance (in this case, `Galactic()`):"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "open_cluster_gal = open_cluster_c.transform_to(Galactic())"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "While the recommended way of transforming `SkyCoord` objects to new frames is by passing in a frame class *instance* as we demonstrated in the cell above, `SkyCoord` also supports a shorthand for transforming some frames by accessing attributes (named as the lower-case version of the new frame name):"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "open_cluster_gal = open_cluster_c.galactic"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The transformed `SkyCoord` object now contains coordinate data in the `Galactic` coordinate frame:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "open_cluster_gal[:4]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Comparing this to the original `SkyCoord`, note that the names of the longitude and latitude components have changed from `ra` to `l` and from `dec` to `b`, per convention. We can therefore access the new Galactic longitude/latitude data using these new attribute names:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "open_cluster_gal.l[:3]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "open_cluster_gal.b[:3]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "*Note: the ICRS coordinate component names (`.ra`, `.dec`) will therefore **not** work on this new, transformed `SkyCoord` instance, `open_cluster_gal`*"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "With this new `SkyCoord` object (in the Galactic frame), let's re-make a sky plot to visualize the sky positions of the open clusters in Galactic coordinates:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "fig, ax = coordinates_aitoff_plot(open_cluster_gal);\n",
+ "ax.set_xlabel('Galactic longitude, $l$ [deg]')\n",
+ "ax.set_ylabel('Galactic latitude, $b$ [deg]')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "As we hoped and expected, in the Galactic coordinate frame, the open clusters predominantly appear at low galactic latitudes!"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Transforming to More Complex Coordinate Frames: Computing the Altitude of a Target at an Observatory\n",
+ "\n",
+ "To determine whether a target is observable from a given observatory on Earth or to find out what targets are observable from a city or place on Earth at some time, we sometimes need to convert a coordinate or set of coordinates to a frame that is local to an on-earth observer. The most common choice for such a frame is \"horizontal\" or \"Altitude-Azimuth\" coordinates. In this frame, the sky coordinates of a source can be specified as an altitude from the horizon and an azimuth angle at a specified time. This coordinate frame is supported in `astropy.coordinates` through the `AltAz` coordinate frame.\n",
+ "\n",
+ "The `AltAz` frame is different from the previously-demonstrated `Galactic` frame in that it requires additional metadata to define the frame instance. Since the `Galactic` frame is close to being a 3D rotation away from the ICRS frame, and that rotation matrix is fixed, we could transform to `Galactic` by instantiating the class with no arguments (see the example above where we used `.transform_to(Galactic())`). In order to specify an instance of the `AltAz` frame, we have to (at minimum) pass in (1) a location on Earth, and (2) the time (or times) we are requesting the frame at. \n",
+ "\n",
+ "In `astropy.coordinates`, we specify locations on Earth with the `EarthLocation` class ([docs](https://docs.astropy.org/en/stable/api/astropy.coordinates.EarthLocation.html)). If we know the Earth longitude and latitude of our site, we can use these to create an instance of `EarthLocation` directly:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "demo_loc = EarthLocation.from_geodetic(\n",
+ " lon=-74.32834*u.deg, lat=43.05885*u.deg)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The `EarthLocation` class also provides handy short-hands for retrieving an instance for a given street address (by querying the [OpenStreetMap](https://www.openstreetmap.org/) web API):"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "tags": [
+ "raises-exception"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "demo_loc = EarthLocation.of_address('162 Fifth Ave, New York, NY 10010')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Or for an astronomical observatory (use `EarthLocation.get_site_names()` to see a list of all available sites). For example, to retrieve an `EarthLocation` instance for the position of Kitt Peak National Observatory (in AZ, USA):"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "observing_location = EarthLocation.of_site('Kitt Peak')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We will use Kitt Peak as our site.\n",
+ "\n",
+ "As an example, we will now compute the altitude of a few of the open clusters from our catalog above over the course of a night. We have an object to represent our location on Earth, so now we need to create a set of times to compute the `AltAz` frame for. `AltAz` expects time information to be passed in as an `astropy.time.Time` object ([docs](https://docs.astropy.org/en/stable/api/astropy.time.Time.html); which can contain an array of times). Let's pretend we have an observing run coming up on Dec 18, 2020, and we would like to compute the altitude/azimuth coordinates for our open clusters over that whole night."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 1AM UTC = 6PM local time (AZ mountain time), roughly the start of a night\n",
+ "observing_date = Time('2020-12-18 1:00')\n",
+ "\n",
+ "# Compute the alt/az over a 14 hour period, starting at 6PM local time,\n",
+ "# with 256 equally spaced time points:\n",
+ "time_grid = observing_date + np.linspace(0, 14, 256) * u.hour"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now we use our location, `observing_location`, and this grid of times, `time_grid`, to create an `AltAz` frame object. \n",
+ "\n",
+ "*Note: This frame accepts even more parameters about the atmosphere, which can be used to correct for atmospheric refraction. But here we leave those additional parameters set to their defaults, which ignores refraction.*"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "altaz = AltAz(location=observing_location, obstime=time_grid)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Now we can transform the ICRS `SkyCoord` positions of the open clusters to `AltAz` to get the location of each of the clusters in the sky over Kitt Peak over a night. Let's first do this only for the first open cluster in the catalog we loaded:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "oc_altaz = open_cluster_c[0].transform_to(altaz)\n",
+ "oc_altaz"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "There is a lot of information in the representation of our transformed `SkyCoord`, but note that the frame of the new object is now correctly noted as `AltAz`, as in` 0.25*u.mas]\n",
+ "\n",
+ "ngc188_center_3d = SkyCoord(12.11*u.deg, 85.26*u.deg,\n",
+ " distance=1.96*u.kpc,\n",
+ " pm_ra_cosdec=-2.3087*u.mas/u.yr,\n",
+ " pm_dec=-0.9565*u.mas/u.yr)\n",
+ "\n",
+ "ngc188_coords_3d = SkyCoord(\n",
+ " ra=ngc188_table['ra'], \n",
+ " dec=ngc188_table['dec'],\n",
+ " distance=Distance(parallax=ngc188_table['parallax']),\n",
+ " pm_ra_cosdec=ngc188_table['pmra'],\n",
+ " pm_dec=ngc188_table['pmdec'],\n",
+ " radial_velocity=ngc188_table['radial_velocity'],\n",
+ " obstime=Time('J2015.5'))\n",
+ "\n",
+ "sep3d = ngc188_coords_3d.separation_3d(ngc188_center_3d)\n",
+ "pm_diff = np.sqrt(\n",
+ " (ngc188_table['pmra'] - ngc188_center_3d.pm_ra_cosdec)**2 + \n",
+ " (ngc188_table['pmdec'] - ngc188_center_3d.pm_dec)**2)\n",
+ "\n",
+ "ngc188_members_mask = (sep3d < 50*u.pc) & (pm_diff < 1.5*u.mas/u.yr)\n",
+ "ngc188_members = ngc188_table[ngc188_members_mask]\n",
+ "ngc188_members_coords = ngc188_coords_3d[ngc188_members_mask]\n",
+ "len(ngc188_members)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "From the selections above, the table `ngc188_members` and the `SkyCoord` instance `ngc188_members_coords` contain 216 sources that, based on their 3D positions and proper motions, are consistent with being members of the open cluster NGC 188."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's assume that we now want to cross-match our catalog of candidate members of NGC 188 — here, based on *Gaia* data — to some other catalog. In this tutorial, we will demonstrate how to manually cross-match these *Gaia* sources with the 2MASS photometric catalog to retrieve infrared magnitudes for these stars, and then we will plot a color–magnitude diagram. To do this, we first need to query the 2MASS catalog to retrieve all sources in a region around the center of NGC 188, as we did for *Gaia*. Here, we will also take into account the fact that the *Gaia* data release 2 reference epoch is J2015.5, whereas the 2MASS coordinates are likely reported at their time of observation (in the late 1990's). \n",
+ "\n",
+ "*Note that some data archives, like the Gaia science archive, support running cross-matches at the database level and even support epoch propagation. If you need to perform a large cross-match, it will be much more efficient to use these services!*\n",
+ "\n",
+ "We will again use `astroquery` to execute this query. This will again require an internet connection, but we have included the results of this query in a file along with this notebook in case you are not connected to the internet. To query 2MASS, we will use the `astroquery.vizier` module ([docs](https://astroquery.readthedocs.io/en/latest/vizier/vizier.html)) to run a cone search centered on the sky position of NGC 188 with a search radius of 0.5º:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# NOTE: skip this cell if you do not have an internet connection\n",
+ "\n",
+ "# II/246 is the catalog name for the main 2MASS photometric catalog\n",
+ "v = Vizier(catalog=\"II/246\", columns=['*', 'Date']) \n",
+ "v.ROW_LIMIT = -1\n",
+ "\n",
+ "result = v.query_region(ngc188_center_3d, radius=0.5*u.deg)\n",
+ "tmass_table = result[0]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Alternatively, we can read the 2MASS table provided along with this tutorial:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# the .read() below produces some warnings that we can safely ignore\n",
+ "with warnings.catch_warnings(): \n",
+ " warnings.simplefilter('ignore', UserWarning)\n",
+ " \n",
+ " tmass_table = QTable.read('2MASS_results.ecsv')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "As with the *Gaia* results table, we can now create a single `SkyCoord` object to represent all of the sources returned from our query to the 2MASS catalog. Let's look at the column names in this table by displaying the first few rows:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tmass_table[:3]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "From looking at the column names, the two relevant sky coordinate columns are `RAJ2000` for `ra` and `DEJ2000` for `dec`:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tmass_coords = SkyCoord(tmass_table['RAJ2000'], \n",
+ " tmass_table['DEJ2000'])\n",
+ "len(tmass_coords)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Note also that the table contains a \"Date\" column that specifies the epoch of the coordinates. Are all of these epochs the same?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "np.unique(tmass_table['Date'])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "It looks like all of the sources in our 2MASS table have the same epoch, so let's create an `astropy.time.Time` object to represent this date:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tmass_epoch = Time(np.unique(tmass_table['Date']))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We now want to cross-match our *Gaia*-selected candidate members of NGC 188, `ngc_members_coords`, with this table of photometry from 2MASS. However, as noted previously, the *Gaia* coordinates are given at a different epoch J2015.5, which is nearly ~16 years after the 2MASS epoch of the data we downloaded (1999-10-19 or roughly J1999.88). We will therefore first use the `SkyCoord.apply_space_motion()` method ([docs](http://docs.astropy.org/en/latest/api/astropy.coordinates.SkyCoord.html#astropy.coordinates.SkyCoord.apply_space_motion)) to transform the *Gaia* positions back to the 2MASS epoch before we do the cross-match:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# you can ignore the warning raised here\n",
+ "ngc188_members_coords_1999 = ngc188_members_coords.apply_space_motion(\n",
+ " tmass_epoch)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The object `ngc188_members_coords_1999` now contains the coordinate information for our *Gaia*-selected members of NGC 188, as we think they would appear if observed on 1999-10-19.\n",
+ "\n",
+ "We can now use the ``SkyCoord.match_to_catalog_sky`` method to match these two catalogs ([docs](http://docs.astropy.org/en/latest/coordinates/matchsep.html#astropy-coordinates-matching)), using the `ngc188_members_coords_1999` as our NGC 188 members coordinates. \n",
+ "\n",
+ "Note that order matters with this method: Here we will match *Gaia* to 2MASS. `SkyCoord.match_to_catalog_sky` returns three objects: (1) the indices into `tmass_coords` that get the closest matches in `ngc188_members_coords_1999`, (2) the angular separation between each `ngc188_members_coords_1999` coordinate and the closest source in `tmass_coords`, and (3) the 3D distance between each `ngc188_members_coords_1999` coordinate and the closest source in `tmass_coords`. Here, the 3D distances will not be useful because the 2MASS coordinates do not have associated distance information, so we will ignore these quantities:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "idx_gaia, sep2d_gaia, _ = ngc188_members_coords_1999.match_to_catalog_sky(\n",
+ " tmass_coords)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's now look at the distribution of separations (in arcseconds) for all of the cross-matched sources:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "plt.hist(sep2d_gaia.arcsec, histtype='step', \n",
+ " bins=np.logspace(-2, 2., 64))\n",
+ "plt.xlabel('separation [arcsec]')\n",
+ "plt.xscale('log')\n",
+ "plt.yscale('log')\n",
+ "plt.tight_layout()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "From this, it looks like all of sources in our *Gaia* NGC 188 member list cross-match to another sources within a few arcseconds, so these all seem like they are correctly matches to a 2MASS source!"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "(sep2d_gaia < 2*u.arcsec).sum(), len(ngc188_members)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "With our cross-match done, we can now make `Gaia`+2MASS color–magnitude diagrams of our candidate NGC 188 members using the information returned by the cross-match:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "Jmag = tmass_table['Jmag'][idx_gaia] # note that we use the index array returned above\n",
+ "Gmag = ngc188_members['phot_g_mean_mag']\n",
+ "Bmag = ngc188_members['phot_bp_mean_mag']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "fig, axes = plt.subplots(1, 2, figsize=(10, 5))\n",
+ "\n",
+ "ax = axes[0]\n",
+ "ax.scatter(Gmag - Jmag, Gmag, \n",
+ " marker='o', color='k', \n",
+ " linewidth=0, alpha=0.5)\n",
+ "ax.set_xlabel('$G - J$')\n",
+ "ax.set_ylabel('$G$')\n",
+ "ax.set_xlim(0, 3)\n",
+ "ax.set_ylim(19, 10) # backwards because magnitudes!\n",
+ "\n",
+ "ax = axes[1]\n",
+ "ax.scatter(Bmag - Gmag, Jmag, \n",
+ " marker='o', color='k', \n",
+ " linewidth=0, alpha=0.5)\n",
+ "ax.set_xlabel('$G_{BP} - G$')\n",
+ "ax.set_ylabel('$J$')\n",
+ "ax.set_xlim(0.2, 1)\n",
+ "ax.set_ylim(17, 8) # backwards because magnitudes!\n",
+ "\n",
+ "fig.tight_layout()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Those both look like color-magnitude diagrams of a main sequence + red giant branch of an intermediate-age stellar cluster, so it looks like our selection and cross-matching has worked!\n",
+ "\n",
+ "For more on what matching options are available, check out the [separation and matching section of the Astropy documentation](https://astropy.readthedocs.io/en/stable/coordinates/matchsep.html). Or for more on what you can do with `SkyCoord`, see [its API documentation](http://astropy.readthedocs.org/en/stable/api/astropy.coordinates.SkyCoord.html)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.3"
+ },
+ "toc": {
+ "base_numbering": 1,
+ "nav_menu": {},
+ "number_sections": true,
+ "sideBar": true,
+ "skip_h1_title": false,
+ "title_cell": "Table of Contents",
+ "title_sidebar": "Contents",
+ "toc_cell": false,
+ "toc_position": {},
+ "toc_section_display": true,
+ "toc_window_display": false
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/tutorials/notebooks/astropy-coordinates/Cantat-Gaudin-open-clusters.ecsv b/tutorials/notebooks/astropy-coordinates/Cantat-Gaudin-open-clusters.ecsv
new file mode 100644
index 000000000..afe1cab7f
--- /dev/null
+++ b/tutorials/notebooks/astropy-coordinates/Cantat-Gaudin-open-clusters.ecsv
@@ -0,0 +1,543 @@
+# %ECSV 0.9
+# ---
+# datatype:
+# - name: ID
+# datatype: string
+# description: Name (1)
+# meta: !!omap
+# - {ucd: ID_MAIN}
+# - {_votable_string_dtype: char}
+# - name: ra
+# unit: deg
+# datatype: float32
+# format: '{:7.3f}'
+# description: Right ascension (ICRS) (1)
+# meta: !!omap
+# - {ucd: POS_EQ_RA_MAIN}
+# - {width: 7}
+# - {precision: '3'}
+# - name: dec
+# unit: deg
+# datatype: float32
+# format: '{:7.3f}'
+# description: Declination (ICRS) (1)
+# meta: !!omap
+# - {ucd: POS_EQ_DEC_MAIN}
+# - {width: 7}
+# - {precision: '3'}
+# - name: distance
+# unit: pc
+# datatype: float32
+# format: '{:6.1f}'
+# description: Distance if +0.1mas added to parallax (dmodePLUS01)
+# meta: !!omap
+# - {ucd: PHYS_DISTANCE_TRUE}
+# - {width: 6}
+# - {precision: '1'}
+# - name: pm_ra_cosdec
+# unit: mas / yr
+# datatype: float32
+# format: '{:7.3f}'
+# description: Mean proper motion along RA of members (pmra)
+# meta: !!omap
+# - {ucd: POS_EQ_PMRA}
+# - {width: 7}
+# - {precision: '3'}
+# - name: pm_dec
+# unit: mas / yr
+# datatype: float32
+# format: '{:7.3f}'
+# description: Mean proper motion along DE of members(pmdec)
+# meta: !!omap
+# - {ucd: POS_EQ_PMDEC}
+# - {width: 7}
+# - {precision: '3'}
+# - name: radial_velocity
+# unit: km / s
+# datatype: float32
+# format: '{:7.2f}'
+# description: Mean RV
+# meta: !!omap
+# - {ucd: VELOC_MEAN}
+# - {width: 7}
+# - {precision: '2'}
+# meta: !!omap
+# - {ID: J_A_A_618_A93_table1}
+# - {name: J/A+A/618/A93/table1}
+# - {description: Summary of mean parameters for the OCs characterised in this study}
+# schema: astropy-2.0
+ID ra dec distance pm_ra_cosdec pm_dec radial_velocity
+ASCC_10 51.870 34.981 629.6 -1.737 -1.368 -15.67
+ASCC_101 288.399 36.369 382.2 0.934 1.288 -20.17
+ASCC_105 295.548 27.366 522.9 1.464 -1.635 -13.81
+ASCC_108 298.306 39.349 1034.6 -0.519 -1.690 -6.33
+ASCC_11 53.056 44.856 787.2 0.926 -3.030 -14.43
+ASCC_110 300.742 33.528 1598.2 0.271 -3.132 -1.09
+ASCC_111 302.891 37.515 772.3 -1.150 -1.524 -22.81
+ASCC_113 317.933 38.638 528.7 0.800 -3.679 -4.44
+ASCC_115 329.280 51.558 694.2 -0.549 -0.543 -46.01
+ASCC_123 340.299 53.986 227.7 12.093 -1.407 -2.49
+ASCC_127 347.205 64.974 362.0 7.474 -1.745 -11.81
+ASCC_128 349.949 54.435 610.6 1.236 0.186 -14.91
+ASCC_13 78.255 44.417 973.2 -0.473 -1.743 32.37
+ASCC_16 81.198 1.655 337.0 1.355 -0.015 23.18
+ASCC_19 81.982 -1.987 345.2 1.152 -1.234 23.89
+ASCC_21 82.179 3.527 333.9 1.404 -0.632 18.70
+ASCC_23 95.047 46.710 580.5 1.098 -0.598 -13.29
+ASCC_30 104.271 -6.230 975.0 -1.595 -0.171 36.34
+ASCC_32 105.714 -26.512 736.1 -3.307 3.477 35.05
+ASCC_41 116.674 0.137 287.3 0.646 -3.990 -10.07
+ASCC_58 153.657 -55.001 456.8 -13.276 2.786 12.12
+ASCC_71 185.033 -67.509 1093.4 -9.272 -1.351 -11.43
+ASCC_73 189.281 -67.203 607.1 -11.539 -2.945 -6.34
+ASCC_79 229.731 -60.798 766.1 -2.914 -4.232 -1.40
+ASCC_85 251.853 -45.555 801.0 0.170 -4.102 16.48
+ASCC_87 255.658 -28.421 714.8 -1.180 -3.814 5.30
+ASCC_88 256.886 -35.564 815.8 0.919 -3.282 -29.53
+ASCC_90 264.777 -34.874 542.8 -1.630 -2.681 7.27
+ASCC_97 279.263 -19.139 535.2 -2.331 -6.508 -0.34
+ASCC_99 282.170 -18.488 286.0 5.188 -1.311 -29.80
+Alessi_1 13.343 49.536 658.4 6.536 -6.245 -3.73
+Alessi_10 301.233 -10.555 423.3 1.469 -7.879 -13.57
+Alessi_12 310.875 23.871 514.1 4.303 -4.639 2.43
+Alessi_13 51.762 -35.821 103.0 36.332 -4.709 21.13
+Alessi_19 274.741 12.311 543.7 -1.005 -7.073 -4.51
+Alessi_2 71.602 55.199 582.2 -0.904 -1.046 -11.00
+Alessi_20 2.593 58.742 409.8 8.195 -2.341 -5.04
+Alessi_21 107.690 -9.363 540.9 -5.475 2.602 41.85
+Alessi_24 260.764 -62.693 457.0 -0.488 -8.999 12.32
+Alessi_3 109.275 -46.142 270.6 -9.875 11.958 0.20
+Alessi_31 267.698 -11.853 622.6 -1.164 -4.122 5.36
+Alessi_37 341.961 46.342 661.1 0.351 -1.569 -10.48
+Alessi_44 295.325 1.592 615.2 0.463 -2.325 -9.80
+Alessi_5 160.819 -61.081 380.3 -15.411 2.503 12.49
+Alessi_6 220.058 -66.127 813.4 -10.472 -5.559 -14.35
+Alessi_62 284.026 21.597 581.5 0.245 -1.074 13.28
+Alessi_8 232.408 -51.227 621.8 -5.899 -5.729 -27.26
+Alessi_9 265.974 -47.028 202.0 9.916 -9.157 -6.44
+Alessi_Teutsch_11 304.127 52.051 606.6 -0.139 -1.295 -26.67
+Alessi_Teutsch_12 255.421 -58.981 568.0 -2.134 -8.952 -5.88
+Alessi_Teutsch_3 118.228 -53.022 646.9 -5.378 8.926 16.59
+Alessi_Teutsch_5 332.218 61.103 806.1 -1.895 -3.207 -21.04
+Alessi_Teutsch_8 180.649 -60.935 912.4 -6.625 1.630 -15.35
+Aveni_Hunter_1 354.175 48.205 403.7 -0.184 -2.087 -16.87
+BDSB96 106.332 -12.327 1027.3 -3.843 1.071 29.04
+BH_164 222.311 -66.465 401.1 -7.368 -10.714 -0.18
+BH_200 252.484 -44.182 1867.3 -0.025 -1.132 -4.96
+BH_202 253.779 -40.947 1471.2 -1.869 -3.802 -50.06
+BH_211 255.535 -41.113 1531.5 -0.671 -1.943 -48.83
+BH_221 259.641 -32.334 987.3 2.000 -1.568 -4.79
+BH_23 123.449 -36.329 419.2 -7.101 7.350 22.83
+BH_56 134.355 -43.181 828.2 -5.570 5.439 19.69
+BH_87 151.148 -55.386 1834.2 -6.335 2.626 -12.93
+BH_92 154.779 -56.425 1936.0 -5.896 3.446 20.29
+BH_99 159.553 -59.168 424.7 -14.494 0.919 11.96
+Barkhatova_1 313.398 46.037 1654.5 -2.440 -4.478 -5.08
+Basel_1 282.036 -5.876 1529.2 -0.079 -4.509 22.69
+Basel_11a 109.296 -13.988 1192.6 -1.581 0.929 80.49
+Basel_11b 89.547 21.965 1509.5 1.046 -4.137 3.43
+Basel_17 167.650 -59.047 1764.1 -6.628 2.174 -9.79
+Berkeley_10 54.894 66.486 1997.7 -1.470 1.047 -36.29
+Berkeley_67 69.472 50.755 1838.6 2.316 -1.374 -0.28
+Berkeley_80 283.591 -1.214 1928.0 -0.755 -2.667 43.95
+Berkeley_82 287.845 13.111 1194.3 0.178 -3.168 -2.63
+Berkeley_87 305.396 37.433 1424.5 -3.654 -6.264 -7.50
+Berkeley_9 53.167 52.649 1557.7 1.493 0.037 -17.40
+Blanco_1 0.853 -29.958 230.5 18.739 2.602 5.76
+Bochum_13 259.333 -35.529 1437.9 -0.286 -1.284 -20.76
+Collinder_107 99.203 4.972 1339.8 -1.325 0.659 11.01
+Collinder_110 99.677 2.069 1806.0 -1.091 -2.049 38.17
+Collinder_115 101.659 1.776 1655.8 -1.245 -0.567 50.95
+Collinder_132 108.485 -30.758 613.4 -4.140 3.732 24.13
+Collinder_135 109.362 -37.044 293.5 -9.975 6.157 16.03
+Collinder_140 110.882 -31.966 367.2 -8.074 4.789 19.65
+Collinder_185 125.833 -36.349 1324.6 -4.924 3.879 75.78
+Collinder_197 131.202 -41.280 859.5 -5.808 3.933 35.82
+Collinder_258 186.798 -60.767 1119.9 -7.051 -0.288 -28.00
+Collinder_269 200.992 -66.204 1435.9 -5.058 -2.492 -22.30
+Collinder_272 202.586 -61.319 1840.6 -3.441 -1.798 -4.59
+Collinder_277 207.058 -66.066 1418.0 -9.225 -4.139 -27.28
+Collinder_292 237.410 -57.594 1521.4 -2.397 -2.232 -32.04
+Collinder_338 264.483 -37.657 606.0 2.546 -1.854 -23.35
+Collinder_350 267.018 1.525 352.5 -4.965 -0.019 -14.64
+Collinder_359 270.598 3.260 522.3 0.637 -8.668 5.28
+Collinder_394 283.092 -20.229 659.4 -1.459 -5.882 13.86
+Collinder_419 304.534 40.732 925.0 -2.708 -6.382 4.64
+Collinder_463 27.031 71.738 789.8 -1.715 -0.307 -11.60
+Collinder_469 274.143 -18.309 1895.9 0.089 -1.679 17.84
+Collinder_69 83.792 9.813 386.0 1.194 -2.118 29.10
+Collinder_74 87.170 7.374 1969.4 1.011 -1.512 20.18
+Collinder_95 97.788 9.894 630.0 -2.263 -5.159 8.47
+Czernik_12 39.853 54.922 1635.9 -0.189 0.931 -17.50
+Czernik_25 93.432 6.953 1763.9 -0.222 0.252 42.79
+Czernik_37 268.320 -27.373 1868.6 0.459 -0.445 -19.21
+Czernik_38 282.451 4.965 1951.7 -1.840 -5.005 57.39
+Dias_5 274.385 -19.707 1145.6 1.798 -0.945 -26.59
+Dolidze_5 305.025 39.331 1746.6 -1.929 -5.384 -20.40
+Dolidze_53 296.588 24.613 1647.5 -1.494 -4.609 -57.94
+Dolidze_8 306.129 42.300 891.0 -2.633 -5.910 -4.07
+ESO_130_06 181.970 -59.310 736.4 -11.266 -0.866 -5.68
+ESO_166_04 137.602 -53.884 1005.0 -5.983 5.675 16.76
+ESO_226_06 246.040 -51.151 1930.2 -2.181 -3.308 -18.53
+ESO_368_11 116.086 -34.628 1791.0 -0.853 2.278 22.47
+ESO_559_13 112.176 -20.807 1891.7 -1.402 1.721 48.61
+FSR_0165 299.546 26.761 1980.0 -2.782 -5.558 11.18
+FSR_0167 301.218 27.057 1511.2 0.102 -1.830 1.77
+FSR_0198 300.614 35.681 1627.5 -3.560 -6.611 12.13
+FSR_0241 300.763 46.196 1726.9 -1.427 -3.575 -0.52
+FSR_0278 307.761 51.021 1463.8 -4.615 -9.738 -7.94
+FSR_0385 340.628 58.941 1769.1 -5.939 -3.974 -54.46
+FSR_0442 352.489 63.447 1260.8 1.287 -2.554 -27.24
+FSR_0496 6.656 64.010 1277.8 2.231 -0.621 -22.98
+FSR_0551 24.938 64.878 838.9 0.112 -1.422 -23.49
+FSR_0667 61.766 51.141 1027.3 0.901 -3.870 2.50
+FSR_0771 75.919 32.157 1339.3 1.631 -4.203 -3.37
+FSR_0850 86.257 24.740 1761.9 1.301 -2.555 19.24
+FSR_0866 103.823 29.745 1062.6 1.405 -0.443 65.47
+FSR_0893 93.454 21.608 1906.0 -0.355 -3.215 39.17
+FSR_0904 91.774 19.021 1738.3 -0.448 -1.107 14.08
+FSR_0923 92.644 16.971 1396.6 0.657 0.141 43.83
+FSR_0935 98.778 17.740 1977.4 -0.074 -1.056 31.06
+FSR_0951 95.573 14.650 1465.6 0.242 0.070 45.53
+FSR_0977 97.974 11.865 1718.2 0.721 -1.533 23.72
+FSR_1032 99.072 4.011 1708.9 -1.372 -3.174 51.96
+FSR_1051 103.046 3.662 1892.1 -0.761 -2.639 37.17
+FSR_1063 98.654 -0.265 1914.3 0.057 -1.541 59.76
+FSR_1085 103.290 -0.192 1379.0 -1.050 0.262 41.66
+FSR_1163 104.810 -9.078 1903.5 0.192 1.215 10.21
+FSR_1284 109.992 -24.535 1920.4 -0.983 1.357 42.20
+FSR_1378 120.304 -40.676 1395.0 -5.659 11.934 26.03
+FSR_1435 134.218 -43.757 1769.3 -3.900 2.732 29.17
+Ferrero_1 275.063 -32.338 785.1 0.149 -4.809 15.51
+Ferrero_11 93.646 0.637 730.5 -3.013 -4.339 24.80
+Gulliver_10 123.090 -38.676 561.5 -4.443 4.965 32.64
+Gulliver_13 104.858 -13.254 1334.9 -2.941 0.281 56.53
+Gulliver_14 259.928 -36.785 1143.8 -3.719 -4.792 -13.36
+Gulliver_18 302.905 26.532 1348.4 -3.198 -5.646 -3.62
+Gulliver_20 273.736 11.082 403.9 1.039 -6.525 -13.92
+Gulliver_21 106.961 -25.462 612.3 -1.929 4.205 39.86
+Gulliver_24 1.161 62.835 1308.1 -3.241 -1.570 -31.86
+Gulliver_28 293.559 18.059 584.9 -4.485 -3.400 0.97
+Gulliver_29 256.745 -35.205 967.3 1.325 -2.206 3.46
+Gulliver_30 313.673 45.996 1797.7 -2.524 -3.697 -10.20
+Gulliver_31 301.912 38.232 1905.6 -1.500 -3.113 -11.45
+Gulliver_32 98.383 7.478 1416.2 -0.879 2.304 40.24
+Gulliver_35 150.379 -58.198 1871.4 -6.973 3.967 86.46
+Gulliver_36 123.185 -35.111 1171.3 -0.236 0.609 10.22
+Gulliver_37 292.077 25.347 1297.6 -0.775 -3.740 2.52
+Gulliver_38 300.808 34.435 1889.9 -0.921 -2.594 10.62
+Gulliver_44 127.249 -38.095 1093.9 -0.666 2.301 15.45
+Gulliver_48 316.334 50.733 842.3 -4.781 -6.671 -26.67
+Gulliver_51 30.335 63.801 1288.9 -4.892 -0.149 -57.36
+Gulliver_52 161.669 -59.508 1903.3 -4.755 1.470 -11.33
+Gulliver_54 81.297 33.688 1086.5 -0.595 -7.299 16.77
+Gulliver_57 141.203 -48.075 1205.3 -6.737 4.085 19.87
+Gulliver_58 191.515 -61.965 1898.9 -3.592 -0.353 -1.82
+Gulliver_6 83.278 -1.652 400.6 -0.007 -0.207 28.35
+Gulliver_9 126.998 -47.929 473.0 -5.992 6.915 23.30
+Haffner_13 115.209 -30.073 534.4 -6.184 5.879 34.22
+Haffner_3 106.027 -6.133 1966.8 -1.179 -0.906 54.30
+Haffner_5 109.493 -22.660 1428.9 0.965 -4.060 -6.93
+Harvard_10 244.859 -54.957 646.6 -1.919 -10.577 -17.22
+Harvard_13 255.999 -48.090 1068.0 -2.766 -7.190 -4.22
+Harvard_16 262.781 -36.813 1329.6 -0.636 -0.778 5.46
+Hogg_17 218.459 -61.326 1865.8 -5.201 -2.433 -43.76
+IC_1396 324.745 57.514 837.2 -2.355 -4.495 -19.04
+IC_1805 38.210 61.471 1729.1 -0.702 -0.669 -42.39
+IC_1848 42.855 60.419 1837.2 -0.372 -0.315 -53.36
+IC_2391 130.292 -52.991 149.0 -24.644 23.316 15.29
+IC_2395 130.531 -48.090 663.3 -4.464 3.293 17.66
+IC_2488 141.857 -57.004 1180.8 -7.761 5.698 -1.42
+IC_2602 160.613 -64.426 149.5 -17.582 10.700 17.44
+IC_2714 169.373 -62.719 1180.1 -7.597 2.639 -12.93
+IC_348 56.132 32.159 311.7 4.483 -6.447 19.71
+IC_4651 261.212 -49.917 843.6 -2.410 -5.064 -30.33
+IC_4665 266.554 5.615 333.7 -0.909 -8.520 -14.40
+IC_4725 277.937 -19.114 608.8 -1.688 -6.117 3.09
+IC_4756 279.649 5.435 450.1 1.260 -4.927 -24.74
+IC_4996 304.135 37.649 1622.5 -2.681 -5.348 -29.11
+IC_5146 328.372 47.246 745.1 -2.910 -2.490 -2.12
+Kharchenko_1 92.197 24.281 1823.1 0.767 -2.286 41.41
+King_1 5.505 64.383 1543.5 -4.947 -1.273 -53.20
+King_26 292.237 14.882 1841.6 -2.344 -4.935 25.01
+King_4 39.028 59.024 1972.3 -0.575 -0.084 -44.33
+King_6 51.982 56.444 678.0 3.864 -1.814 -21.88
+Koposov_12 90.245 35.287 1903.7 0.699 -1.732 20.31
+Koposov_36 84.218 31.210 1493.0 0.804 -3.668 52.26
+LDN_988e 316.027 50.245 579.8 1.181 -3.560 -27.98
+Loden_1194 212.006 -59.786 686.1 -7.762 -4.667 -24.79
+Loden_46 155.884 -54.667 996.1 -11.367 4.645 24.32
+Lynga_1 209.994 -62.152 1814.2 -5.303 -2.274 -32.03
+Lynga_2 216.085 -61.328 859.5 -6.716 -4.696 -12.35
+Lynga_6 241.218 -51.960 1952.7 -1.866 -2.757 -46.60
+Mamajek_1 130.637 -78.963 104.0 -29.834 26.990 16.69
+Mamajek_4 276.635 -50.772 425.0 4.646 -21.051 -26.32
+Melotte_101 160.535 -65.110 1759.3 -6.307 3.483 9.53
+Melotte_105 169.920 -63.486 1864.5 -6.771 2.133 1.49
+Melotte_20 51.617 48.975 172.5 22.864 -25.378 -0.10
+Melotte_22 56.601 24.114 133.8 20.077 -45.503 5.92
+Melotte_71 114.383 -12.065 1776.6 -2.446 4.210 51.26
+Muzzio_1 134.478 -47.761 1543.2 -5.261 4.224 135.64
+NGC_1027 40.677 61.616 989.2 -1.753 2.090 -4.06
+NGC_1039 40.531 42.722 481.2 0.722 -5.681 -7.16
+NGC_129 7.607 60.213 1562.8 -2.605 -1.096 -37.89
+NGC_1333 52.297 31.310 287.8 7.425 -9.865 1.92
+NGC_1342 52.894 37.380 613.2 0.520 -1.604 -9.95
+NGC_1444 57.361 52.658 1040.3 -0.746 -1.829 -36.90
+NGC_1496 61.111 52.668 1349.0 1.511 -0.756 -27.23
+NGC_1502 61.954 62.332 957.1 -0.571 -0.848 -14.76
+NGC_1513 62.470 49.504 1282.1 1.324 -3.679 -14.73
+NGC_1528 63.878 51.218 928.8 2.181 -2.246 -9.62
+NGC_1545 65.202 50.221 668.6 -1.957 -0.082 -11.36
+NGC_1582 67.985 43.718 890.7 2.216 -1.347 18.00
+NGC_1647 71.481 19.079 554.2 -1.057 -1.502 -6.69
+NGC_1662 72.198 10.882 395.5 -1.128 -1.962 -13.31
+NGC_1664 72.763 43.676 1158.4 1.703 -5.738 6.38
+NGC_1708 75.871 52.851 863.3 0.276 -1.360 7.20
+NGC_1750 75.926 23.695 671.2 -0.960 -2.366 -10.38
+NGC_1778 77.033 37.020 1408.9 0.506 -3.145 -26.24
+NGC_1817 78.139 16.696 1469.8 0.485 -0.890 66.07
+NGC_188 11.798 85.244 1571.4 -2.307 -0.960 -41.70
+NGC_189 9.885 61.090 1110.0 0.338 -3.306 -28.71
+NGC_1901 79.561 -68.294 402.1 1.537 12.670 0.85
+NGC_1907 82.033 35.330 1351.9 -0.040 -3.418 2.78
+NGC_1912 82.167 35.824 997.0 1.580 -4.424 -1.49
+NGC_1960 84.084 34.135 1036.9 -0.155 -3.388 7.03
+NGC_2099 88.074 32.545 1257.3 1.924 -5.648 8.03
+NGC_2112 88.452 0.403 993.9 -2.713 4.270 30.86
+NGC_2168 92.272 24.336 793.9 2.308 -2.905 -7.90
+NGC_2183 92.717 -6.213 746.2 -3.605 0.447 27.11
+NGC_2184 91.690 -2.000 544.0 -0.648 -0.288 42.03
+NGC_2186 93.031 5.453 1844.1 0.415 -1.993 21.98
+NGC_2215 95.199 -7.277 869.6 0.436 -3.673 -2.48
+NGC_2232 96.888 -4.749 312.8 -4.745 -1.840 25.35
+NGC_2244 98.045 4.914 1341.1 -1.598 0.179 75.18
+NGC_225 10.805 61.774 640.5 -5.373 -0.093 -4.12
+NGC_2251 98.680 8.337 1270.0 0.697 -3.806 26.10
+NGC_2264 100.217 9.877 674.2 -1.690 -3.727 20.22
+NGC_2281 102.091 41.060 493.7 -2.946 -8.321 19.58
+NGC_2286 101.916 -3.167 1867.3 0.188 -1.468 35.63
+NGC_2287 101.499 -20.716 671.7 -4.339 -1.381 23.52
+NGC_2301 102.943 0.465 791.5 -1.367 -2.179 26.53
+NGC_2302 102.977 -7.086 1076.4 -1.453 -0.228 38.54
+NGC_2309 104.020 -7.180 1916.8 -0.495 -0.634 55.64
+NGC_2318 104.854 -13.822 1183.9 -1.781 -2.198 8.66
+NGC_2323 105.684 -8.365 887.9 -0.688 -0.611 6.79
+NGC_2343 107.029 -10.619 973.3 0.193 -0.195 15.73
+NGC_2354 108.503 -25.724 1133.6 -2.885 1.832 34.38
+NGC_2355 109.247 13.772 1597.8 -3.802 -1.086 36.85
+NGC_2358 109.261 -17.143 839.9 -1.351 0.542 27.57
+NGC_2360 109.443 -15.631 970.1 0.383 5.603 28.30
+NGC_2362 109.671 -24.954 1147.7 -2.791 2.953 28.86
+NGC_2374 111.016 -13.235 1124.6 -4.665 0.659 53.72
+NGC_2422 114.147 -14.489 454.7 -7.057 0.993 36.18
+NGC_2423 114.299 -13.863 851.4 -0.735 -3.632 19.90
+NGC_2428 114.831 -16.550 1197.0 -3.316 2.461 52.88
+NGC_2432 115.223 -19.078 1608.2 -0.684 1.614 51.63
+NGC_2437 115.445 -14.844 1365.7 -3.838 0.365 49.04
+NGC_2447 116.141 -23.853 911.4 -3.551 5.068 21.99
+NGC_2448 116.034 -24.837 993.1 -3.432 2.941 36.98
+NGC_2451A 115.736 -38.264 188.9 -21.116 15.328 23.59
+NGC_2451B 116.128 -37.954 351.2 -9.671 4.702 16.78
+NGC_2477 118.046 -38.537 1259.5 -2.449 0.870 7.90
+NGC_2482 118.787 -24.263 1177.4 -4.722 2.189 39.13
+NGC_2489 119.064 -30.060 1682.4 -2.529 2.102 38.77
+NGC_2516 119.527 -60.800 392.8 -4.748 11.221 23.82
+NGC_2527 121.246 -28.122 600.7 -5.549 7.275 40.07
+NGC_2539 122.658 -12.834 1132.7 -2.331 -0.584 29.18
+NGC_2546 123.082 -37.661 859.7 -3.757 3.862 16.20
+NGC_2547 122.525 -49.198 372.8 -8.609 4.262 14.07
+NGC_2548 123.412 -5.726 705.3 -1.313 1.029 8.85
+NGC_2567 124.645 -30.631 1489.7 -2.955 2.580 36.79
+NGC_2627 129.309 -29.952 1537.3 -2.381 2.879 28.68
+NGC_2632 130.054 19.621 182.2 -36.090 -12.919 34.72
+NGC_2659 130.634 -44.999 1721.5 -5.336 5.028 16.55
+NGC_2669 131.611 -52.931 1027.0 -4.136 4.649 21.83
+NGC_2670 131.386 -48.801 1288.8 -5.379 3.621 5.15
+NGC_2671 131.557 -41.886 1225.4 -1.569 0.940 6.35
+NGC_2682 132.846 11.814 791.2 -10.986 -2.964 33.80
+NGC_2925 143.321 -53.413 702.5 -8.533 5.336 1.44
+NGC_2972 145.058 -50.326 1633.3 -5.085 2.489 21.13
+NGC_3033 147.145 -56.415 1511.8 -7.554 4.254 27.56
+NGC_3114 150.553 -60.041 923.3 -7.376 3.779 -1.22
+NGC_3228 155.378 -51.814 461.9 -14.867 -0.696 13.78
+NGC_3293 158.970 -58.231 1981.4 -7.671 3.344 -13.16
+NGC_3330 159.659 -54.148 1467.9 -7.705 2.996 -5.86
+NGC_3496 164.877 -60.335 1922.1 -7.408 2.668 9.62
+NGC_3532 166.417 -58.707 455.6 -10.385 5.175 5.37
+NGC_3572 167.640 -60.294 1980.6 -6.261 1.893 0.92
+NGC_3680 171.392 -43.240 941.7 -7.278 1.118 1.74
+NGC_3766 174.061 -61.616 1699.6 -6.731 0.961 -17.35
+NGC_3960 177.644 -55.679 1892.0 -6.522 1.853 -22.54
+NGC_433 18.798 60.133 1689.5 -1.422 -0.720 -34.94
+NGC_4349 186.048 -61.866 1616.1 -7.827 -0.296 -11.46
+NGC_4609 190.582 -62.995 1267.7 -4.870 -1.045 -25.22
+NGC_4755 193.415 -60.371 1693.3 -4.647 -1.134 9.50
+NGC_5269 206.147 -62.907 1698.2 -4.490 -1.918 -36.91
+NGC_5281 206.614 -62.916 1366.7 -4.628 -2.389 -19.10
+NGC_5316 208.516 -61.883 1259.8 -6.297 -1.515 -14.41
+NGC_5381 210.205 -59.578 1967.5 -6.034 -2.932 -38.61
+NGC_5460 211.847 -48.285 680.7 -6.599 -3.454 -4.61
+NGC_5617 217.452 -60.719 1890.5 -5.641 -3.172 -34.74
+NGC_5662 218.734 -56.640 705.6 -6.427 -7.243 -21.14
+NGC_5715 220.859 -57.578 1772.3 -3.487 -2.324 -26.16
+NGC_5749 222.204 -54.502 980.9 -2.756 -3.079 -18.04
+NGC_5764 223.389 -52.667 1662.5 -3.325 -2.318 -32.52
+NGC_581 23.339 60.659 1992.0 -1.384 -0.497 -45.33
+NGC_5822 226.051 -54.366 759.8 -7.422 -5.534 -28.15
+NGC_5823 226.365 -55.608 1538.7 -3.691 -2.443 -47.32
+NGC_5925 231.847 -54.515 1238.2 -4.319 -5.142 -20.62
+NGC_6025 240.779 -60.430 715.3 -2.901 -3.035 15.53
+NGC_6067 243.299 -54.227 1749.6 -1.907 -2.586 -38.90
+NGC_6087 244.721 -57.916 866.7 -1.567 -2.411 1.14
+NGC_6124 246.332 -40.661 593.1 -0.203 -2.094 -20.80
+NGC_6134 246.953 -49.161 1025.9 2.184 -4.483 -25.35
+NGC_6152 248.213 -52.629 1383.8 -2.511 -4.980 -35.70
+NGC_6167 248.662 -49.759 1279.3 -0.616 -2.854 -19.18
+NGC_6192 250.077 -43.355 1428.9 1.653 -0.188 -7.81
+NGC_6193 250.319 -48.777 1063.0 1.278 -4.111 -15.51
+NGC_6208 252.336 -53.714 1042.9 -0.966 -1.519 -32.15
+NGC_6231 253.545 -41.812 1392.3 -0.529 -2.177 -39.88
+NGC_6242 253.878 -39.474 1131.3 1.149 -0.825 -7.03
+NGC_6253 254.778 -52.712 1444.9 -4.537 -5.280 -27.97
+NGC_6259 255.195 -44.678 1864.3 -1.015 -2.892 -32.84
+NGC_6268 255.524 -39.721 1310.6 0.908 -0.781 -14.26
+NGC_6281 256.179 -37.948 499.5 -1.856 -4.017 -5.00
+NGC_6383 263.673 -32.573 998.5 2.596 -1.708 -54.74
+NGC_6400 265.062 -36.957 1079.5 0.499 -2.549 -13.06
+NGC_6405 265.069 -32.242 434.5 -1.306 -5.847 -9.47
+NGC_6416 266.014 -32.344 951.1 -1.946 -2.327 -22.43
+NGC_6425 266.733 -31.507 896.2 3.801 -1.647 -3.07
+NGC_6475 268.447 -34.841 270.2 3.099 -5.426 -14.84
+NGC_6494 269.237 -18.987 674.4 0.284 -1.809 -8.37
+NGC_6520 270.856 -27.884 1458.8 0.688 -0.418 -22.35
+NGC_6561 272.659 -16.740 1275.8 -0.002 -0.754 1.62
+NGC_6568 273.192 -21.612 939.1 0.593 -1.377 -43.70
+NGC_6583 273.962 -22.143 1844.8 1.303 0.110 -2.27
+NGC_6611 274.688 -13.792 1438.7 0.178 -1.576 3.70
+NGC_6633 276.845 6.615 376.8 1.198 -1.811 -28.62
+NGC_6645 278.158 -16.918 1489.0 1.340 -0.633 -3.93
+NGC_6649 278.359 -10.399 1678.4 -0.007 -0.055 -8.87
+NGC_6664 279.125 -8.194 1675.0 -0.089 -2.561 -4.44
+NGC_6694 281.317 -9.386 1531.9 0.144 -1.411 -10.54
+NGC_6704 282.687 -5.203 1775.0 -0.730 -3.139 25.49
+NGC_6705 282.766 -6.272 1799.4 -1.568 -4.144 36.01
+NGC_6709 282.836 10.334 962.0 1.414 -3.532 -10.21
+NGC_6716 283.616 -19.888 651.8 -1.476 -6.013 -0.09
+NGC_6728 284.715 -8.953 1504.4 1.312 -1.760 11.51
+NGC_6735 285.155 -0.498 1835.3 0.072 -1.274 7.04
+NGC_6755 286.942 4.224 1981.4 -0.734 -3.529 27.11
+NGC_6793 290.817 22.159 556.1 3.795 3.544 -16.59
+NGC_6800 291.664 25.008 924.1 0.438 -0.876 -13.29
+NGC_6811 294.340 46.378 1001.1 -3.399 -8.812 7.70
+NGC_6830 297.718 23.101 1808.3 -3.213 -5.766 2.62
+NGC_6866 300.983 44.158 1226.7 -1.365 -5.743 12.83
+NGC_6871 301.548 35.765 1554.8 -3.129 -6.437 4.38
+NGC_6910 305.797 40.771 1483.2 -3.415 -5.359 14.97
+NGC_6939 307.917 60.653 1574.4 -1.841 -5.413 -18.99
+NGC_6940 308.626 28.278 929.4 -1.954 -9.413 8.10
+NGC_6991 313.621 47.400 527.9 5.593 8.509 -12.46
+NGC_6997 314.128 44.640 796.4 -4.275 -6.882 -19.61
+NGC_7031 316.809 50.870 1200.9 -1.242 -4.205 -4.16
+NGC_7039 317.663 45.597 703.1 -0.320 -2.542 -10.59
+NGC_7058 320.448 50.822 349.8 7.432 2.889 -16.78
+NGC_7062 320.862 46.385 1898.3 -1.914 -4.045 -22.05
+NGC_7063 321.122 36.507 622.8 1.524 -2.482 4.43
+NGC_7082 322.186 47.103 1165.5 -0.293 -1.106 -24.85
+NGC_7086 322.624 51.593 1391.6 -1.656 -1.629 -22.34
+NGC_7092 322.889 48.247 288.6 -7.477 -19.738 -5.09
+NGC_7142 326.290 65.782 1920.1 -2.747 -1.288 -49.70
+NGC_7160 328.448 62.589 848.1 -3.472 -1.378 -28.00
+NGC_7209 331.224 46.508 1053.7 2.255 0.283 -18.42
+NGC_7243 333.788 49.830 803.2 0.433 -2.857 -2.90
+NGC_7296 337.000 52.321 1906.5 -2.958 -2.712 -29.85
+NGC_743 29.614 60.130 990.3 -0.030 -1.708 -18.16
+NGC_744 29.652 55.473 1165.2 -1.864 -1.790 -25.47
+NGC_752 29.223 37.794 422.3 9.810 -11.713 5.69
+NGC_7654 351.195 61.590 1379.4 -1.938 -1.131 -32.09
+NGC_7762 357.472 68.035 884.0 1.452 4.016 -45.40
+NGC_7789 359.334 56.726 1718.2 -0.922 -1.933 -54.15
+NGC_869 34.741 57.134 1893.8 -0.689 -1.082 -62.82
+NGC_884 35.584 57.149 1897.4 -0.628 -1.066 -43.01
+Patchick_3 79.120 45.584 1448.5 -1.609 -1.288 -31.02
+Pismis_12 140.007 -45.131 1785.5 -6.748 4.833 32.44
+Pismis_3 127.834 -38.640 1880.6 -4.809 6.645 30.33
+Pismis_4 128.790 -44.407 647.9 -8.236 5.337 11.59
+Platais_10 205.220 -59.271 233.3 -30.591 -10.215 -16.83
+Platais_3 69.976 71.280 174.0 3.616 -20.931 8.07
+Platais_8 136.718 -58.685 132.6 -15.596 14.474 20.64
+Platais_9 139.241 -43.862 178.7 -24.705 13.333 17.02
+Pozzo_1 122.374 -47.335 335.3 -6.516 9.530 18.67
+RSG_1 75.508 37.475 319.5 0.770 -12.330 14.69
+RSG_5 303.482 45.574 325.3 3.573 1.605 -6.91
+RSG_7 344.190 59.363 405.5 4.927 -1.865 -11.51
+RSG_8 344.983 59.371 427.6 5.343 -1.654 -9.64
+Roslund_2 296.261 23.977 1688.7 -1.741 -5.115 126.71
+Roslund_3 299.695 20.509 1400.8 -0.386 -5.108 -21.67
+Roslund_5 302.641 33.751 510.2 1.981 -1.164 -17.45
+Roslund_6 307.185 39.798 340.3 5.875 2.155 -12.89
+Roslund_7 313.196 37.847 1100.6 1.729 -0.360 -12.72
+Ruprecht_1 99.084 -14.157 1315.1 -0.316 -0.900 12.52
+Ruprecht_10 106.626 -20.125 1771.5 -0.849 0.564 33.94
+Ruprecht_105 188.694 -61.592 1699.0 -5.986 -0.001 -4.38
+Ruprecht_111 219.010 -59.975 1258.2 -7.214 -6.113 -34.51
+Ruprecht_119 247.039 -51.500 1778.7 -1.300 -3.413 -39.38
+Ruprecht_121 250.436 -46.159 1691.8 -1.073 -2.569 -52.95
+Ruprecht_128 266.063 -34.879 1595.5 1.889 -1.262 -39.79
+Ruprecht_130 266.900 -30.098 1931.5 0.477 -1.795 -41.84
+Ruprecht_134 268.184 -29.537 1922.2 -1.653 -2.432 -42.19
+Ruprecht_135 269.511 -11.646 970.7 1.420 -1.415 -14.33
+Ruprecht_145 282.636 -18.270 561.7 8.329 -4.080 -54.70
+Ruprecht_147 289.087 -16.333 296.0 -0.939 -26.576 41.84
+Ruprecht_167 215.150 -58.858 1347.1 -8.205 -4.838 -28.64
+Ruprecht_170 276.335 -9.995 1689.5 0.452 -0.132 0.29
+Ruprecht_171 278.012 -16.062 1334.8 7.677 1.091 5.61
+Ruprecht_174 310.856 37.031 1899.1 -3.154 -4.675 -12.89
+Ruprecht_26 114.271 -15.587 950.6 -3.200 0.071 13.19
+Ruprecht_27 114.423 -26.516 1673.3 -1.230 0.428 37.21
+Ruprecht_29 115.279 -24.377 1757.2 -2.138 1.617 44.62
+Ruprecht_33 116.445 -21.915 1833.1 -1.384 0.058 48.10
+Ruprecht_50 120.872 -30.873 1843.3 -1.726 2.352 51.08
+Ruprecht_71 132.316 -46.875 1625.8 -5.220 4.642 38.73
+Ruprecht_82 146.421 -54.004 1788.0 -6.443 4.348 2.08
+Ruprecht_84 147.281 -65.259 1613.5 -6.963 3.997 -8.63
+Ruprecht_91 161.964 -57.483 947.2 -11.179 2.421 0.74
+Ruprecht_93 166.037 -61.372 1768.3 -6.411 3.104 -24.40
+Ruprecht_98 179.715 -64.581 460.1 -4.114 -8.632 -5.09
+SAI_24 44.816 60.566 1738.1 -0.201 0.114 -3.64
+SAI_25 45.109 57.307 1996.2 0.608 -1.205 -66.26
+Skiff_J0458+43.0 74.547 43.036 1958.2 0.595 -1.109 -16.39
+Skiff_J0619+18.5 94.829 18.546 1293.3 -0.529 -1.284 11.47
+Skiff_J1942+38.6 295.611 38.645 1995.8 -3.131 -5.898 -18.20
+Stephenson_1 283.568 36.899 343.8 1.110 -3.010 -18.69
+Stock_1 294.146 25.163 388.1 6.034 0.302 -19.51
+Stock_10 84.808 37.850 346.3 -3.114 -0.464 -11.67
+Stock_12 353.923 52.685 418.5 8.527 -1.846 -4.20
+Stock_2 33.856 59.522 361.0 15.966 -13.627 8.19
+Stock_21 7.590 57.922 1564.6 -2.161 -1.787 -35.08
+Stock_23 49.075 60.377 574.0 -4.261 -0.865 -18.07
+Stock_5 31.119 64.365 875.7 -0.729 -2.069 -33.35
+Stock_7 37.431 60.627 636.8 -3.496 0.484 4.79
+Teutsch_126 333.455 55.712 1767.9 -1.820 -2.230 -33.73
+Teutsch_30 306.929 36.074 1496.3 -3.180 -5.692 94.08
+Teutsch_35 294.091 35.742 468.3 -0.683 -2.439 -7.66
+Teutsch_38 131.523 -38.025 613.2 -8.636 3.669 28.09
+Tombaugh_5 56.984 59.070 1449.3 0.515 -2.388 -23.10
+Trumpler_10 131.943 -42.566 413.9 -12.532 6.527 22.43
+Trumpler_14 160.986 -59.553 1944.3 -6.540 2.076 -10.53
+Trumpler_17 164.108 -59.230 1983.0 -4.631 2.216 105.27
+Trumpler_19 168.623 -57.563 1989.8 -1.675 -1.237 -26.38
+Trumpler_2 39.232 55.905 640.9 1.583 -5.352 -4.12
+Trumpler_22 217.783 -61.169 1941.0 -5.120 -2.683 -43.03
+Trumpler_25 261.125 -39.006 1884.6 0.358 -2.120 -26.79
+Trumpler_26 262.126 -29.487 1329.5 -0.873 -3.082 -7.59
+Trumpler_28 264.231 -32.469 1239.8 -0.851 -2.824 -23.47
+Trumpler_29 265.347 -40.158 1246.8 0.489 -2.308 -23.99
+Trumpler_3 48.004 63.218 629.1 -3.354 -0.112 -19.46
+Trumpler_30 269.182 -35.298 1196.7 1.243 -2.189 -18.36
+Trumpler_32 274.294 -13.349 1414.8 -1.052 1.158 16.52
+Trumpler_33 276.159 -19.711 1240.9 0.435 0.449 -3.71
+Turner_5 143.284 -36.358 399.7 0.092 -3.115 -3.49
+Turner_9 296.165 29.494 1445.6 0.346 -2.399 1.57
+vdBergh_83 100.025 -27.189 859.5 -2.896 3.199 15.78
+vdBergh_92 106.038 -11.475 1030.2 -4.540 1.618 27.99
diff --git a/tutorials/notebooks/astropy-coordinates/HD_219829_query_results.ecsv b/tutorials/notebooks/astropy-coordinates/HD_219829_query_results.ecsv
new file mode 100644
index 000000000..6800a6a42
--- /dev/null
+++ b/tutorials/notebooks/astropy-coordinates/HD_219829_query_results.ecsv
@@ -0,0 +1,528 @@
+# %ECSV 0.9
+# ---
+# datatype:
+# - name: solution_id
+# datatype: int64
+# description: Solution Identifier
+# meta: !!omap
+# - {ucd: meta.version}
+# - name: designation
+# datatype: object
+# description: Unique source designation (unique across all Data Releases)
+# meta: !!omap
+# - {ucd: meta.id;meta.main}
+# - {_votable_string_dtype: char}
+# - name: source_id
+# datatype: int64
+# description: Unique source identifier (unique within a particular Data Release)
+# meta: !!omap
+# - {ucd: meta.id}
+# - name: random_index
+# datatype: int64
+# description: Random index used to select subsets
+# meta: !!omap
+# - {ucd: meta.code}
+# - name: ref_epoch
+# unit: yr
+# datatype: float64
+# description: Reference epoch
+# meta: !!omap
+# - {ucd: meta.ref;time.epoch}
+# - name: ra
+# unit: deg
+# datatype: float64
+# description: Right ascension
+# meta: !!omap
+# - {ucd: pos.eq.ra;meta.main}
+# - {utype: Char.SpatialAxis.Coverage.Location.Coord.Position2D.Value2.C1}
+# - name: ra_error
+# unit: mas
+# datatype: float64
+# description: Standard error of right ascension
+# meta: !!omap
+# - {ucd: stat.error;pos.eq.ra}
+# - name: dec
+# unit: deg
+# datatype: float64
+# description: Declination
+# meta: !!omap
+# - {ucd: pos.eq.dec;meta.main}
+# - {utype: Char.SpatialAxis.Coverage.Location.Coord.Position2D.Value2.C2}
+# - name: dec_error
+# unit: mas
+# datatype: float64
+# description: Standard error of declination
+# meta: !!omap
+# - {ucd: stat.error;pos.eq.dec}
+# - name: parallax
+# unit: mas
+# datatype: float64
+# description: Parallax
+# meta: !!omap
+# - {ucd: pos.parallax}
+# - name: parallax_error
+# unit: mas
+# datatype: float64
+# description: Standard error of parallax
+# meta: !!omap
+# - {ucd: stat.error;pos.parallax}
+# - name: parallax_over_error
+# datatype: float32
+# description: Parallax divided by its error
+# meta: !!omap
+# - {ucd: arith.ratio}
+# - name: pmra
+# unit: mas / yr
+# datatype: float64
+# description: Proper motion in right ascension direction
+# meta: !!omap
+# - {ucd: pos.pm;pos.eq.ra}
+# - name: pmra_error
+# unit: mas / yr
+# datatype: float64
+# description: Standard error of proper motion in right ascension direction
+# meta: !!omap
+# - {ucd: stat.error;pos.pm;pos.eq.ra}
+# - name: pmdec
+# unit: mas / yr
+# datatype: float64
+# description: Proper motion in declination direction
+# meta: !!omap
+# - {ucd: pos.pm;pos.eq.dec}
+# - name: pmdec_error
+# unit: mas / yr
+# datatype: float64
+# description: Standard error of proper motion in declination direction
+# meta: !!omap
+# - {ucd: stat.error;pos.pm;pos.eq.dec}
+# - name: ra_dec_corr
+# datatype: float32
+# description: Correlation between right ascension and declination
+# meta: !!omap
+# - {ucd: stat.correlation;pos.eq.ra;pos.eq.dec}
+# - name: ra_parallax_corr
+# datatype: float32
+# description: Correlation between right ascension and parallax
+# meta: !!omap
+# - {ucd: stat.correlation;pos.eq.ra;pos.parallax}
+# - name: ra_pmra_corr
+# datatype: float32
+# description: Correlation between right ascension and proper motion in right ascension
+# meta: !!omap
+# - {ucd: stat.correlation;pos.eq.ra;pos.pm;pos.eq.ra}
+# - name: ra_pmdec_corr
+# datatype: float32
+# description: Correlation between right ascension and proper motion in declination
+# meta: !!omap
+# - {ucd: stat.correlation;pos.eq.ra;pos.pm;pos.eq.dec}
+# - name: dec_parallax_corr
+# datatype: float32
+# description: Correlation between declination and parallax
+# meta: !!omap
+# - {ucd: stat.correlation;pos.eq.dec;pos.parallax}
+# - name: dec_pmra_corr
+# datatype: float32
+# description: Correlation between declination and proper motion in right ascension
+# meta: !!omap
+# - {ucd: stat.correlation;pos.eq.dec;pos.pm;pos.eq.ra}
+# - name: dec_pmdec_corr
+# datatype: float32
+# description: Correlation between declination and proper motion in declination
+# meta: !!omap
+# - {ucd: stat.correlation;pos.eq.dec;pos.pm;pos.eq.dec}
+# - name: parallax_pmra_corr
+# datatype: float32
+# description: Correlation between parallax and proper motion in right ascension
+# meta: !!omap
+# - {ucd: stat.correlation;pos.parallax;pos.pm;pos.eq.ra}
+# - name: parallax_pmdec_corr
+# datatype: float32
+# description: Correlation between parallax and proper motion in declination
+# meta: !!omap
+# - {ucd: stat.correlation;pos.parallax;pos.pm;pos.eq.dec}
+# - name: pmra_pmdec_corr
+# datatype: float32
+# description: Correlation between proper motion in right ascension and proper motion in declination
+# meta: !!omap
+# - {ucd: stat.correlation;pos.pm;pos.eq.ra;pos.pm;pos.eq.dec}
+# - name: astrometric_n_obs_al
+# datatype: int32
+# description: Total number of observations AL
+# meta: !!omap
+# - {ucd: meta.number}
+# - name: astrometric_n_obs_ac
+# datatype: int32
+# description: Total number of observations AC
+# meta: !!omap
+# - {ucd: meta.number}
+# - name: astrometric_n_good_obs_al
+# datatype: int32
+# description: Number of good observations AL
+# meta: !!omap
+# - {ucd: meta.number}
+# - name: astrometric_n_bad_obs_al
+# datatype: int32
+# description: Number of bad observations AL
+# meta: !!omap
+# - {ucd: meta.number}
+# - name: astrometric_gof_al
+# datatype: float32
+# description: Goodness of fit statistic of model wrt along-scan observations
+# meta: !!omap
+# - {ucd: stat.fit.goodness}
+# - name: astrometric_chi2_al
+# datatype: float32
+# description: AL chi-square value
+# meta: !!omap
+# - {ucd: stat.fit.chi2}
+# - name: astrometric_excess_noise
+# unit: mas
+# datatype: float64
+# description: Excess noise of the source
+# meta: !!omap
+# - {ucd: stat.value}
+# - name: astrometric_excess_noise_sig
+# datatype: float64
+# description: Significance of excess noise
+# meta: !!omap
+# - {ucd: stat.value}
+# - name: astrometric_params_solved
+# datatype: int16
+# description: Which parameters have been solved for?
+# meta: !!omap
+# - {ucd: meta.number}
+# - name: astrometric_primary_flag
+# datatype: bool
+# description: Primary or seconday
+# meta: !!omap
+# - {ucd: meta.code}
+# - name: astrometric_weight_al
+# unit: 1 / mas2
+# datatype: float32
+# description: Mean astrometric weight of the source
+# meta: !!omap
+# - {ucd: stat.weight;stat.mean}
+# - name: astrometric_pseudo_colour
+# unit: 1 / um
+# datatype: float64
+# description: Astrometrically determined pseudocolour of the source
+# meta: !!omap
+# - {ucd: em.wavenumber}
+# - name: astrometric_pseudo_colour_error
+# unit: 1 / um
+# datatype: float64
+# description: Standard error of the pseudocolour of the source
+# meta: !!omap
+# - {ucd: em.wavenumber;stat.error}
+# - name: mean_varpi_factor_al
+# datatype: float32
+# description: Mean Parallax factor AL
+# meta: !!omap
+# - {ucd: arith.factor;pos.parallax}
+# - name: astrometric_matched_observations
+# datatype: int16
+# description: Matched FOV transits used in the AGIS solution
+# meta: !!omap
+# - {ucd: meta.number}
+# - name: visibility_periods_used
+# datatype: int16
+# description: Number of visibility periods used in Astrometric solution
+# meta: !!omap
+# - {ucd: meta.number}
+# - name: astrometric_sigma5d_max
+# unit: mas
+# datatype: float32
+# description: The longest semi-major axis of the 5-d error ellipsoid
+# meta: !!omap
+# - {ucd: pos.errorEllipse;stat.max}
+# - name: frame_rotator_object_type
+# datatype: int32
+# description: The type of the source mainly used for frame rotation
+# meta: !!omap
+# - {ucd: meta.code}
+# - name: matched_observations
+# datatype: int16
+# description: Amount of observations matched to this source
+# meta: !!omap
+# - {ucd: meta.number}
+# - name: duplicated_source
+# datatype: bool
+# description: Source with duplicate sources
+# meta: !!omap
+# - {ucd: meta.code.status}
+# - name: phot_g_n_obs
+# datatype: int32
+# description: Number of observations contributing to G photometry
+# meta: !!omap
+# - {ucd: meta.number}
+# - name: phot_g_mean_flux
+# unit: electron / s
+# datatype: float64
+# description: G-band mean flux
+# meta: !!omap
+# - {ucd: phot.flux;stat.mean;em.opt}
+# - name: phot_g_mean_flux_error
+# unit: electron / s
+# datatype: float64
+# description: Error on G-band mean flux
+# meta: !!omap
+# - {ucd: stat.error;phot.flux;stat.mean;em.opt}
+# - name: phot_g_mean_flux_over_error
+# datatype: float32
+# description: G-band mean flux divided by its error
+# meta: !!omap
+# - {ucd: arith.ratio}
+# - name: phot_g_mean_mag
+# unit: mag
+# datatype: float32
+# description: G-band mean magnitude
+# meta: !!omap
+# - {ucd: phot.mag;stat.mean;em.opt}
+# - name: phot_bp_n_obs
+# datatype: int32
+# description: Number of observations contributing to BP photometry
+# meta: !!omap
+# - {ucd: meta.number}
+# - name: phot_bp_mean_flux
+# unit: electron / s
+# datatype: float64
+# description: Integrated BP mean flux
+# meta: !!omap
+# - {ucd: phot.flux;stat.mean}
+# - name: phot_bp_mean_flux_error
+# unit: electron / s
+# datatype: float64
+# description: Error on the integrated BP mean flux
+# meta: !!omap
+# - {ucd: stat.error;phot.flux;stat.mean}
+# - name: phot_bp_mean_flux_over_error
+# datatype: float32
+# description: Integrated BP mean flux divided by its error
+# meta: !!omap
+# - {ucd: arith.ratio}
+# - name: phot_bp_mean_mag
+# unit: mag
+# datatype: float32
+# description: Integrated BP mean magnitude
+# meta: !!omap
+# - {ucd: phot.mag;stat.mean}
+# - name: phot_rp_n_obs
+# datatype: int32
+# description: Number of observations contributing to RP photometry
+# meta: !!omap
+# - {ucd: meta.number}
+# - name: phot_rp_mean_flux
+# unit: electron / s
+# datatype: float64
+# description: Integrated RP mean flux
+# meta: !!omap
+# - {ucd: phot.flux;stat.mean}
+# - name: phot_rp_mean_flux_error
+# unit: electron / s
+# datatype: float64
+# description: Error on the integrated RP mean flux
+# meta: !!omap
+# - {ucd: stat.error;phot.flux}
+# - name: phot_rp_mean_flux_over_error
+# datatype: float32
+# description: Integrated RP mean flux divided by its error
+# meta: !!omap
+# - {ucd: arith.ratio}
+# - name: phot_rp_mean_mag
+# unit: mag
+# datatype: float32
+# description: Integrated RP mean magnitude
+# meta: !!omap
+# - {ucd: phot.mag;stat.mean}
+# - {name: phot_bp_rp_excess_factor, datatype: float32, description: BP/RP excess factor}
+# - {name: phot_proc_mode, datatype: int16, description: Photometry processing mode}
+# - name: bp_rp
+# unit: mag
+# datatype: float32
+# description: BP - RP colour
+# meta: !!omap
+# - {ucd: phot.color}
+# - name: bp_g
+# unit: mag
+# datatype: float32
+# description: BP - G colour
+# meta: !!omap
+# - {ucd: phot.color}
+# - name: g_rp
+# unit: mag
+# datatype: float32
+# description: G - RP colour
+# meta: !!omap
+# - {ucd: phot.color}
+# - name: radial_velocity
+# unit: km / s
+# datatype: float64
+# description: Radial velocity
+# meta: !!omap
+# - {ucd: spect.dopplerVeloc.opt}
+# - name: radial_velocity_error
+# unit: km / s
+# datatype: float64
+# description: Radial velocity error
+# meta: !!omap
+# - {ucd: stat.error;spect.dopplerVeloc.opt}
+# - name: rv_nb_transits
+# datatype: int32
+# description: Number of transits used to compute radial velocity
+# meta: !!omap
+# - {ucd: meta.number}
+# - name: rv_template_teff
+# unit: K
+# datatype: float32
+# description: Teff of the template used to compute radial velocity
+# meta: !!omap
+# - {ucd: stat.fit.param}
+# - name: rv_template_logg
+# unit: log(cm.s**-2)
+# datatype: float32
+# description: logg of the template used to compute radial velocity
+# meta: !!omap
+# - {ucd: stat.fit.param}
+# - name: rv_template_fe_h
+# unit: dex
+# datatype: float32
+# description: Fe/H of the template used to compute radial velocity
+# meta: !!omap
+# - {ucd: stat.fit.param}
+# - name: phot_variable_flag
+# datatype: object
+# description: Photometric variability flag
+# meta: !!omap
+# - {ucd: meta.code;src.var}
+# - {_votable_string_dtype: char}
+# - name: l
+# unit: deg
+# datatype: float64
+# description: Galactic longitude
+# meta: !!omap
+# - {ucd: pos.galactic.lon}
+# - name: b
+# unit: deg
+# datatype: float64
+# description: Galactic latitude
+# meta: !!omap
+# - {ucd: pos.galactic.lat}
+# - name: ecl_lon
+# unit: deg
+# datatype: float64
+# description: Ecliptic longitude
+# meta: !!omap
+# - {ucd: pos.ecliptic.lon}
+# - name: ecl_lat
+# unit: deg
+# datatype: float64
+# description: Ecliptic latitude
+# meta: !!omap
+# - {ucd: pos.ecliptic.lat}
+# - name: priam_flags
+# datatype: int64
+# description: flags for the Apsis-Priam results
+# meta: !!omap
+# - {ucd: meta.code}
+# - name: teff_val
+# unit: K
+# datatype: float32
+# description: stellar effective temperature
+# meta: !!omap
+# - {ucd: phys.temperature.effective}
+# - name: teff_percentile_lower
+# unit: K
+# datatype: float32
+# description: teffVal lower uncertainty
+# meta: !!omap
+# - {ucd: phys.temperature.effective;stat.min}
+# - name: teff_percentile_upper
+# unit: K
+# datatype: float32
+# description: teffVal upper uncertainty
+# meta: !!omap
+# - {ucd: phys.temperature.effective;stat.max}
+# - name: a_g_val
+# unit: mag
+# datatype: float32
+# description: line-of-sight extinction in the G band, A_G)
+# meta: !!omap
+# - {ucd: phys.absorption.gal}
+# - name: a_g_percentile_lower
+# unit: mag
+# datatype: float32
+# description: aGVal lower uncertainty
+# meta: !!omap
+# - {ucd: phys.absorption.gal;stat.min}
+# - name: a_g_percentile_upper
+# unit: mag
+# datatype: float32
+# description: aGVal upper uncertainty
+# meta: !!omap
+# - {ucd: phys.absorption.gal;stat.max}
+# - {name: e_bp_min_rp_val, unit: mag, datatype: float32, description: line-of-sight reddening E(BP-RP)}
+# - {name: e_bp_min_rp_percentile_lower, unit: mag, datatype: float32, description: eBPminRPVal lower uncertainty}
+# - {name: e_bp_min_rp_percentile_upper, unit: mag, datatype: float32, description: eBPminRPVal upper uncertainty}
+# - name: flame_flags
+# datatype: int64
+# description: Flags for the Apsis-FLAME results
+# meta: !!omap
+# - {ucd: meta.code}
+# - name: radius_val
+# unit: Rsun
+# datatype: float32
+# description: stellar radius
+# meta: !!omap
+# - {ucd: phys.size.radius}
+# - name: radius_percentile_lower
+# unit: Rsun
+# datatype: float32
+# description: radiusVal lower uncertainty
+# meta: !!omap
+# - {ucd: phys.size.radius;stat.error}
+# - name: radius_percentile_upper
+# unit: Rsun
+# datatype: float32
+# description: radiusVal upper uncertainty
+# meta: !!omap
+# - {ucd: phys.size.radius;stat.error}
+# - name: lum_val
+# unit: Lsun
+# datatype: float32
+# description: stellar luminosity
+# meta: !!omap
+# - {ucd: phys.luminosity}
+# - name: lum_percentile_lower
+# unit: Lsun
+# datatype: float32
+# description: lumVal lower uncertainty
+# meta: !!omap
+# - {ucd: phys.luminosity;stat.error}
+# - name: lum_percentile_upper
+# unit: Lsun
+# datatype: float32
+# description: lumVal upper uncertainty
+# meta: !!omap
+# - {ucd: phys.luminosity;stat.error}
+# - name: datalink_url
+# datatype: object
+# description: datalink url
+# meta: !!omap
+# - {ucd: meta.ref.url}
+# - {utype: Acess.reference}
+# - {_votable_string_dtype: char}
+# - name: epoch_photometry_url
+# datatype: object
+# description: epoch photometry url
+# meta: !!omap
+# - {utype: Acess.reference}
+# - {_votable_string_dtype: char}
+# - {name: dist, datatype: float64}
+# schema: astropy-2.0
+solution_id designation source_id random_index ref_epoch ra ra_error dec dec_error parallax parallax_error parallax_over_error pmra pmra_error pmdec pmdec_error ra_dec_corr ra_parallax_corr ra_pmra_corr ra_pmdec_corr dec_parallax_corr dec_pmra_corr dec_pmdec_corr parallax_pmra_corr parallax_pmdec_corr pmra_pmdec_corr astrometric_n_obs_al astrometric_n_obs_ac astrometric_n_good_obs_al astrometric_n_bad_obs_al astrometric_gof_al astrometric_chi2_al astrometric_excess_noise astrometric_excess_noise_sig astrometric_params_solved astrometric_primary_flag astrometric_weight_al astrometric_pseudo_colour astrometric_pseudo_colour_error mean_varpi_factor_al astrometric_matched_observations visibility_periods_used astrometric_sigma5d_max frame_rotator_object_type matched_observations duplicated_source phot_g_n_obs phot_g_mean_flux phot_g_mean_flux_error phot_g_mean_flux_over_error phot_g_mean_mag phot_bp_n_obs phot_bp_mean_flux phot_bp_mean_flux_error phot_bp_mean_flux_over_error phot_bp_mean_mag phot_rp_n_obs phot_rp_mean_flux phot_rp_mean_flux_error phot_rp_mean_flux_over_error phot_rp_mean_mag phot_bp_rp_excess_factor phot_proc_mode bp_rp bp_g g_rp radial_velocity radial_velocity_error rv_nb_transits rv_template_teff rv_template_logg rv_template_fe_h phot_variable_flag l b ecl_lon ecl_lat priam_flags teff_val teff_percentile_lower teff_percentile_upper a_g_val a_g_percentile_lower a_g_percentile_upper e_bp_min_rp_val e_bp_min_rp_percentile_lower e_bp_min_rp_percentile_upper flame_flags radius_val radius_percentile_lower radius_percentile_upper lum_val lum_percentile_lower lum_percentile_upper datalink_url epoch_photometry_url dist
+1635721458409799680 "Gaia DR2 2661015604634933376" 2661015604634933376 1462977265 2015.5 349.71443808314274 0.08378571922869163 5.406350233734066 0.06981455319885849 0.6903548758382615 0.10463774397164591 6.5975704 -2.040609180770594 0.15831024111217917 -6.727220501613464 0.12727204562445724 0.10056114 0.41059625 -0.06951938 -0.29032317 -0.33375117 -0.20685387 -0.05722975 -0.02347639 -0.24349955 0.21937583 166 0 164 2 4.8880634 262.13422 0.2663134487782464 2.171809642664326 31 False 2.8542476 1.5514739804406905 0.016978433426132592 0.05109339 19 10 0.14950746 0 25 False 213 3543.567366333834 4.391155897486671 806.9783 16.814764 22 1556.5689066685113 8.889620901441209 175.09958 17.370968 22 2908.398474069353 12.687689613971845 229.22995 16.102785 1.2600205 0 1.2681828 0.55620384 0.7119789 "" "" 0 "" "" "" NOT_AVAILABLE 84.95495367917219 -50.51155224725024 352.69253586015975 9.041664774111247 100001 4882.8276 4719.0 5395.1875 "" "" "" "" "" "" "" "" "" "" "" "" "" https://gea.esac.esa.int/data-server/datalink/links?ID=Gaia+DR2+2661015604634933376 "" 0.009964971210843544
+1635721458409799680 "Gaia DR2 2661015810793360640" 2661015810793360640 445528008 2015.5 349.7110402948439 0.16941288934305035 5.412381636738937 0.17384712162982535 0.3185553977267934 0.24882616850465583 1.2802327 -1.3880934756827557 0.33746698300303346 -0.724554720226459 0.3098058592182854 0.094283886 0.34688985 0.045790747 -0.2295854 -0.5191395 0.014803272 0.29463488 -0.22077389 -0.41961917 0.40085238 124 0 122 2 0.6869756 127.12059 0.33455945030732376 0.958805018580522 31 False 0.87546533 1.4437486412836686 0.038719526885210846 0.13986896 14 9 0.34992754 0 22 False 167 1133.0685011406038 2.9375438138606 385.7197 18.052725 17 495.2567304822127 10.441309330782271 47.432434 18.614313 18 939.8572691150545 11.672303749069789 80.52029 17.329266 1.2665731 0 1.2850475 0.5615883 0.72345924 "" "" 0 "" "" "" NOT_AVAILABLE 84.95572883742342 -50.50465462729523 352.69181149042794 9.048542887522542 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" https://gea.esac.esa.int/data-server/datalink/links?ID=Gaia+DR2+2661015810793360640 "" 0.010381105060756268
+1635721458409799680 "Gaia DR2 2661015540210781568" 2661015540210781568 392933776 2015.5 349.72896715675495 0.3507449262151289 5.405115847648341 0.2754966431973364 29.00319440995681 0.420067397908447 69.04414 483.4165901889734 0.6304528339026761 -114.8633971841528 0.6218405635092622 0.11931643 0.590636 -0.11640657 -0.08865421 -0.16874471 -0.19063891 -0.29583436 0.13647223 0.083452486 0.31626296 175 175 172 3 95.94435 15203.307 1.425635421842276 487.07952921430655 31 True 0.46855804 1.7542147886298571 0.07386439068528583 0.158552 20 9 0.35701492 0 32 False 268 11766095.72548246 63091.9435541105 186.49126 8.011785 31 6864746.194927425 71221.50232088838 96.385864 8.259827 26 10431791.117108675 59648.871202286355 174.88664 7.216023 1.470032 0 1.0438037 0.2480421 0.7957616 "" "" 0 "" "" "" NOT_AVAILABLE 84.97288436651142 -50.52053841797158 352.70548749750327 9.034798992151346 102001 5095.6333 4515.74 5567.135 "" "" "" "" "" "" 200111 0.9924494 0.83145976 1.2637082 0.59827954 0.58807945 0.6084796 https://gea.esac.esa.int/data-server/datalink/links?ID=Gaia+DR2+2661015540210781568 "" 0.011269551575792706
+1635721458409799680 "Gaia DR2 2661015707714189184" 2661015707714189184 924300071 2015.5 349.7325640762333 0.27531281213241265 5.418079919788587 0.20537475568947308 1.5732410878793706 0.32694739400446454 4.8119087 0.4909678777132653 0.46152746362550745 -5.594393419558784 0.3814540101438963 0.119662344 0.5599697 -0.04842105 -0.3322206 -0.1301056 -0.20511477 -0.13745356 -0.082227394 -0.28557575 0.14430724 148 0 146 2 2.437362 185.21773 0.7263511480432564 1.7663414311099603 31 False 0.33277047 1.3171559769139742 0.055499499275174446 0.034256052 17 10 0.42479882 0 24 False 195 650.8177979952492 2.2851064810512614 284.80853 18.654716 19 167.91547268251236 7.287216794237041 23.042469 19.788662 20 828.841075240713 10.161745901753976 81.56483 17.465742 1.5315447 0 2.3229198 1.1339455 1.1889744 "" "" 0 "" "" "" NOT_AVAILABLE 84.98879753420717 -50.51167813980394 352.7140191392524 9.045282218570865 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" https://gea.esac.esa.int/data-server/datalink/links?ID=Gaia+DR2+2661015707714189184 "" 0.012013284432577832
+1635721458409799680 "Gaia DR2 2661015608930257920" 2661015608930257920 825796434 2015.5 349.7086448902422 0.07323571711597479 5.4087729260160655 0.05808282683067876 0.19582104254302538 0.08595094040527913 2.2782886 6.635767769631729 0.1395661923983293 -3.842791624074978 0.11951121462516086 0.11297976 0.4498689 -0.02993958 -0.2125153 -0.23179407 -0.19369368 -0.042317882 0.03244135 -0.10013225 0.28470865 161 0 161 0 -0.7516409 142.468 0.0 0.0 31 False 3.8972554 1.6003483589186642 0.01525096333098385 0.05435083 18 10 0.13667808 0 24 False 210 3676.6204656649393 3.6229447195114655 1014.8155 16.774744 22 1949.7530735631422 8.013553975023903 243.30692 17.12644 21 2515.686070709493 10.526838347453003 238.97832 16.260279 1.2145499 0 0.86616135 0.351696 0.51446533 "" "" 0 "" "" "" NOT_AVAILABLE 84.94947620732303 -50.506356276905095 352.6881462604411 9.046174761584277 100001 5783.0 5454.9854 6262.01 "" "" "" "" "" "" "" "" "" "" "" "" "" https://gea.esac.esa.int/data-server/datalink/links?ID=Gaia+DR2+2661015608930257920 "" 0.013557172703677567
+1635721458409799680 "Gaia DR2 2661015913872579200" 2661015913872579200 410476564 2015.5 349.7150602330541 1.4275506913539715 5.427438298209662 1.0676230144618029 -3.8129011453293926 1.5931269455104502 -2.3933442 8.260768485296449 2.352756770203742 -26.89516888183606 2.1124325560514534 -0.31860068 0.591721 -0.026548184 -0.15503657 -0.4724725 0.04315903 0.10519571 -0.117916964 -0.24485925 0.007941911 84 0 82 2 0.21026266 78.95901 0.0 0.0 31 False 0.0230128 1.732918181172017 0.3190097491902861 -0.08656725 13 9 2.0827143 0 13 False 88 92.72163319146276 1.6588316999681094 55.895744 20.770412 10 68.83626128535741 10.431328180260701 6.598993 20.756845 10 105.87928796587941 7.35504776533965 14.395459 19.699892 1.8843019 0 1.0569534 -0.013566971 1.0705204 "" "" 0 "" "" "" NOT_AVAILABLE 84.97400201557431 -50.494280734717535 352.7015746870559 9.060780518335404 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" https://gea.esac.esa.int/data-server/datalink/links?ID=Gaia+DR2+2661015913872579200 "" 0.015300302229762508
diff --git a/tutorials/notebooks/astropy-coordinates/dss_hd219829.fits b/tutorials/notebooks/astropy-coordinates/dss_hd219829.fits
new file mode 100644
index 000000000..624ba81e9
--- /dev/null
+++ b/tutorials/notebooks/astropy-coordinates/dss_hd219829.fits
@@ -0,0 +1,11 @@
+SIMPLE = T /FITS: Compliance BITPIX = 16 /FITS: I*2 Data NAXIS = 2 /FITS: 2-D Image Data NAXIS1 = 141 /FITS: X Dimension NAXIS2 = 141 /FITS: Y Dimension EXTEND = T /FITS: File can contain extensions DATE = '2019-12-15 ' /FITS: Creation Date ORIGIN = 'STScI/MAST' /GSSS: STScI Digitized Sky Survey SURVEY = 'POSSI-E ' /GSSS: Sky Survey REGION = 'XE582 ' /GSSS: Region Name PLATEID = '08YR ' /GSSS: Plate ID SCANNUM = '00 ' /GSSS: Scan Number DSCNDNUM= '00 ' /GSSS: Descendant Number TELESCID= 1 /GSSS: Telescope ID BANDPASS= 8 /GSSS: Bandpass Code COPYRGHT= 'STScI/AURA' /GSSS: Copyright Holder SITELAT = 33.356 /Observatory: Latitude SITELONG= 116.863 /Observatory: Longitude TELESCOP= 'Palomar Schmidt ' /Observatory: Telescope INSTRUME= 'Photographic Plate' /Detector: Photographic Plate EMULSION= '103aE ' /Detector: Emulsion FILTER = 'plexi ' /Detector: Filter PLTSCALE= 67.20 /Detector: Plate Scale arcsec per mm PLTSIZEX= 355.000 /Detector: Plate X Dimension mm PLTSIZEY= 355.000 /Detector: Plate Y Dimension mm PLATERA = 349.834770000 /Observation: Field centre RA degrees PLATEDEC= 6.73062040000 /Observation: Field centre Dec degrees PLTLABEL= 'E316 ' /Observation: Plate Label DATE-OBS= '1951-08-09T09:60:00' /Observation: Date/Time EXPOSURE= 50.0 /Observation: Exposure Minutes PLTGRADE= '1 ' /Observation: Plate Grade OBSHA = 0.283333 /Observation: Hour Angle OBSZD = 26.9293 /Observation: Zenith Distance AIRMASS = 1.12132 /Observation: Airmass REFBETA = 61.8196600000 /Observation: Refraction Coeff REFBETAP= -0.0820000000000 /Observation: Refraction Coeff REFK1 = 6724.45760000 /Observation: Refraction Coeff REFK2 = 103201.750000 /Observation: Refraction Coeff CNPIX1 = 7152 /Scan: X Corner CNPIX2 = 4123 /Scan: Y Corner XPIXELS = 14000 /Scan: X Dimension YPIXELS = 13999 /Scan: Y Dimension XPIXELSZ= 25.2845 /Scan: Pixel Size microns YPIXELSZ= 25.2845 /Scan: Pixel Size microns PPO1 = 0.000000000000 /Scan: Orientation Coeff PPO2 = 0.000000000000 /Scan: Orientation Coeff PPO3 = 177500.000000 /Scan: Orientation Coeff PPO4 = 0.000000000000 /Scan: Orientation Coeff PPO5 = 0.000000000000 /Scan: Orientation Coeff PPO6 = 177500.000000 /Scan: Orientation Coeff PLTRAH = 23 /Astrometry: Plate Centre H PLTRAM = 19 /Astrometry: Plate Centre M PLTRAS = 21.49 /Astrometry: Plate Centre S PLTDECSN= '+ ' /Astrometry: Plate Centre +/- PLTDECD = 6 /Astrometry: Plate Centre D PLTDECM = 47 /Astrometry: Plate Centre M PLTDECS = 32.2 /Astrometry: Plate Centre S EQUINOX = 2000.0 /Astrometry: Equinox AMDX1 = 67.2502846743 /Astrometry: GSC1 Coeff AMDX2 = 0.0211155472526 /Astrometry: GSC1 Coeff AMDX3 = -51.2853793598 /Astrometry: GSC1 Coeff AMDX4 = 6.20590125033E-006 /Astrometry: GSC1 Coeff AMDX5 = -2.60563128447E-005 /Astrometry: GSC1 Coeff AMDX6 = -4.95957429921E-006 /Astrometry: GSC1 Coeff AMDX7 = 0.000000000000 /Astrometry: GSC1 Coeff AMDX8 = 2.13587329349E-006 /Astrometry: GSC1 Coeff AMDX9 = -1.73709152358E-008 /Astrometry: GSC1 Coeff AMDX10 = 2.40110532330E-006 /Astrometry: GSC1 Coeff AMDX11 = -1.11949948907E-008 /Astrometry: GSC1 Coeff AMDX12 = 0.000000000000 /Astrometry: GSC1 Coeff AMDX13 = 0.000000000000 /Astrometry: GSC1 Coeff AMDX14 = 0.000000000000 /Astrometry: GSC1 Coeff AMDX15 = 0.000000000000 /Astrometry: GSC1 Coeff AMDX16 = 0.000000000000 /Astrometry: GSC1 Coeff AMDX17 = 0.000000000000 /Astrometry: GSC1 Coeff AMDX18 = 0.000000000000 /Astrometry: GSC1 Coeff AMDX19 = 0.000000000000 /Astrometry: GSC1 Coeff AMDX20 = 0.000000000000 /Astrometry: GSC1 Coeff AMDY1 = 67.2705676757 /Astrometry: GSC1 Coeff AMDY2 = -0.0204946917821 /Astrometry: GSC1 Coeff AMDY3 = -186.840773032 /Astrometry: GSC1 Coeff AMDY4 = -1.69337688809E-005 /Astrometry: GSC1 Coeff AMDY5 = -2.84331831211E-006 /Astrometry: GSC1 Coeff AMDY6 = -1.85507819229E-005 /Astrometry: GSC1 Coeff AMDY7 = 0.000000000000 /Astrometry: GSC1 Coeff AMDY8 = 2.08086317165E-006 /Astrometry: GSC1 Coeff AMDY9 = -7.54241041974E-009 /Astrometry: GSC1 Coeff AMDY10 = 2.38259906592E-006 /Astrometry: GSC1 Coeff AMDY11 = -2.12057887010E-009 /Astrometry: GSC1 Coeff AMDY12 = 0.000000000000 /Astrometry: GSC1 Coeff AMDY13 = 0.000000000000 /Astrometry: GSC1 Coeff AMDY14 = 0.000000000000 /Astrometry: GSC1 Coeff AMDY15 = 0.000000000000 /Astrometry: GSC1 Coeff AMDY16 = 0.000000000000 /Astrometry: GSC1 Coeff AMDY17 = 0.000000000000 /Astrometry: GSC1 Coeff AMDY18 = 0.000000000000 /Astrometry: GSC1 Coeff AMDY19 = 0.000000000000 /Astrometry: GSC1 Coeff AMDY20 = 0.000000000000 /Astrometry: GSC1 Coeff AMDREX1 = 67.2502415124 /Astrometry: GSC2 Coeff AMDREX2 = 0.0203790635350 /Astrometry: GSC2 Coeff AMDREX3 = -51.2677319440 /Astrometry: GSC2 Coeff AMDREX4 = 1.13997221372E-005 /Astrometry: GSC2 Coeff AMDREX5 = -1.29903134105E-005 /Astrometry: GSC2 Coeff AMDREX6 = -5.49716024574E-006 /Astrometry: GSC2 Coeff AMDREX7 = 0.000000000000 /Astrometry: GSC2 Coeff AMDREX8 = -2.56602671902E-007 /Astrometry: GSC2 Coeff AMDREX9 = -2.81036142770E-008 /Astrometry: GSC2 Coeff AMDREX10= 3.64259529443E-009 /Astrometry: GSC2 Coeff AMDREX11= 7.64826733095E-010 /Astrometry: GSC2 Coeff AMDREX12= 0.000000000000 /Astrometry: GSC2 Coeff AMDREX13= 0.000000000000 /Astrometry: GSC2 Coeff AMDREX14= 0.000000000000 /Astrometry: GSC2 Coeff AMDREX15= 0.000000000000 /Astrometry: GSC2 Coeff AMDREX16= 0.000000000000 /Astrometry: GSC2 Coeff AMDREX17= 0.000000000000 /Astrometry: GSC2 Coeff AMDREX18= 0.000000000000 /Astrometry: GSC2 Coeff AMDREX19= 0.000000000000 /Astrometry: GSC2 Coeff AMDREX20= 0.000000000000 /Astrometry: GSC2 Coeff AMDREY1 = 67.2654830394 /Astrometry: GSC2 Coeff AMDREY2 = -0.0202185038581 /Astrometry: GSC2 Coeff AMDREY3 = -186.818407761 /Astrometry: GSC2 Coeff AMDREY4 = 5.90151677039E-006 /Astrometry: GSC2 Coeff AMDREY5 = -6.63727042838E-007 /Astrometry: GSC2 Coeff AMDREY6 = -1.00272525425E-005 /Astrometry: GSC2 Coeff AMDREY7 = 0.000000000000 /Astrometry: GSC2 Coeff AMDREY8 = -3.07885327999E-007 /Astrometry: GSC2 Coeff AMDREY9 = -9.78334551569E-009 /Astrometry: GSC2 Coeff AMDREY10= -2.56955212773E-008 /Astrometry: GSC2 Coeff AMDREY11= -1.94842661290E-008 /Astrometry: GSC2 Coeff AMDREY12= 0.000000000000 /Astrometry: GSC2 Coeff AMDREY13= 0.000000000000 /Astrometry: GSC2 Coeff AMDREY14= 0.000000000000 /Astrometry: GSC2 Coeff AMDREY15= 0.000000000000 /Astrometry: GSC2 Coeff AMDREY16= 0.000000000000 /Astrometry: GSC2 Coeff AMDREY17= 0.000000000000 /Astrometry: GSC2 Coeff AMDREY18= 0.000000000000 /Astrometry: GSC2 Coeff AMDREY19= 0.000000000000 /Astrometry: GSC2 Coeff AMDREY20= 0.000000000000 /Astrometry: GSC2 Coeff ASTRMASK= 'xe.mask ' /Astrometry: GSC2 Mask WCSAXES = 2 /GetImage: Number WCS axes WCSNAME = 'DSS ' /GetImage: Local WCS approximation from full platRADESYS = 'ICRS ' /GetImage: GSC-II calibration using ICRS system CTYPE1 = 'RA---TAN ' /GetImage: RA-Gnomic projection CRPIX1 = 71.000000 /GetImage: X reference pixel CRVAL1 = 349.728797 /GetImage: RA of reference pixel CUNIT1 = 'deg ' /GetImage: degrees CTYPE2 = 'DEC--TAN ' /GetImage: Dec-Gnomic projection CRPIX2 = 71.000000 /GetImage: Y reference pixel CRVAL2 = 5.404938 /GetImage: Dec of reference pixel CUNIT2 = 'deg ' /Getimage: degrees CD1_1 = -0.0004722897 /GetImage: rotation matrix coefficient CD1_2 = 0.0000000404 /GetImage: rotation matrix coefficient CD2_1 = 0.0000000607 /GetImage: rotation matrix coefficient CD2_2 = 0.0004724376 /GetImage: rotation matrix coefficient OBJECT = 'data ' /GetImage: Requested Object Name DATAMIN = 2919 /GetImage: Minimum returned pixel value DATAMAX = 12833 /GetImage: Maximum returned pixel value OBJCTRA = '23 18 54.950 ' /GetImage: Requested Right Ascension (J2000) OBJCTDEC= '+05 24 18.42 ' /GetImage: Requested Declination (J2000) OBJCTX = 7222.16 /GetImage: Requested X on plate (pixels) OBJCTY = 4193.89 /GetImage: Requested Y on plate (pixels) END
u6cI
/
/
m
m
@@ZZ
&@ZZ
..[u..
A
A
}}7cc
77
77
II
u
ucc
@Z@@
&
&
cc
ll
Ic....uu[[[[
7
Ic}}c
I
I
Icc
d
d
77
IIII
u[
uII
@ZZZ
&
&.
I
I
llll
/I
u
u
..[[
[[[[
m
m
7
Icccc
Icc
I
I
~~
7777IIII
u[
uII
/
/
&@
mS
m
m@Z
&
&@@Z@
+llll
[[[
A
[[
m
cccccccc
777777I
/
u
ucIII
II
&@
m
m
m@Z
&
&@@Z@
+llll
uu[
A
A
A
m
cccccccc
777777I
/
u
u
uI
/
/
/
u
u
77((((111K11TT
'
''
TT''
TT
1
w
9
9
f
]]]]00gg
3
3qq
**
****
Wq
W=
W
W
E
E2((((11
111TT
'''
TT''
nn
111
w/
''9
9
99
]]]]
MM
MM
qq
**
DD**
qq
W
W
W
E
E
BB
11TT
:
:
TT
TTTT
wnnTT
9999
LL
9S
]]]]oo
3
3
**
*D*
qqqq
W
W
qq
__
((
11TT
TT
:
:
TTTT
11
]wTTTT
9999
99
9'
]]]]
3
3
**
*D*
qqqq
W
W
__
T
T
Tnnnn
K1
'A'
:T
:
:
TT
:
:
11
f
f
99
f
f
f
9Sw]
C
C
C]]
C
3
3qq
q
W
**
DD
2
T
T
Tnnnn
T
1
'
Tn
:
:
TT
:
:
11
9999
f
f
9w]
C
C]ww]MM!!!qq
q
W
**
1111
Tn
:
:
:
:
A'
TT
w
]CC
:
:
99
f
f
]
C
C]]www!!!!
*Dqqqq
W
DD
**DD
1111
Tn
:
:
:
:
A'''TT
w
]
]
]TTAAAA
f
f99
]
C]ww]]]
!!
*qqqq
**
****
(B
T
TT
:
:T
TTww
11w
]
ww
]
]
J0
]]]]
o
z
zgg
z
z!!!!MMM
3
z
z<<
h(B
::
T
:
:T
TT
]
]
w
]
ww
]
]
''''
ww8dJ
]]]]
o
gg
z
z!!!!MMgM<<\\nTTT
:
:T'
TT
1wwww
wwwwww
:T''www0
f
f]]]]99
ggMM
z`!!MMMg!!!!<<VV\\
TTT
:
:T'
TT
1
]
]
]
]
ww
]wwww
nT
ww0
f
f]]]]99
!!!!MMMM
z`
z
z
z
z
z
z!!g
3
3M!!!!<<VVnn
''
ww
eK1111''
99
00]
C
9S
Mggg
``
z
z!
z
zM
3
hnn
''ff
wwK1
11
99
''00]
C
Sm
3MMM
z
z
z
z!
z
zM
3
h
h
''
'''
]
]CC
]
]
wwww
ww1111
f
wwwwww
C
C9999]]]]
!!
gg
h
''
wwww
]
]ww
ww
11
wwwwww
]]99SS
C
C
C
C
f
!!
3
3N
h
:
:
TT
11
wwwww
]
]
BB
BB
0000000
1
1
((nn
<<
h))
2
<<<<
2
x
x
x
:
:
TT
f
1111
wwwww
BB
BB
000
KK
((nnVV
h
2VV<<
2
^
x
x
xTTTT
Tn
TT
ww
TTB
(
BBB
(000000K
1
1
1((n<<<<VpV<
222
VV_
x
x
xTTTT
Tn
'nn''
ww
''TTB
(
BB\B000000K
1KK((n
<<<<VpV<222
VV_
eK
x
xTTTT
nT
TTnn'
w
]
]w1
TT
o
o
BB00000
xB(
h
hVV<<<VVV___y2
e
x
x
xTTTT''
nTTTTT'
w
]w1
TT
o
o
BB0JJ00
xB(
h
h<<
"
"
"<VV___y2)e
x^
x
x
TTnTTnnn
ww
]
]
ww
11
BBBBBBJJJ0
0000\Bnn
h
h<<<<V<
y_
22Ke
x
x
x
:
:
nTTnnn
wwwwww
]
11
''00
(
(BBBBJ~~d
00JJ009\Bnn<<<<V<
y_
q
\Bnnnn
:
:
:
:'AA'
1111
'
TnTT
111K999
ff[6.99ww]]]w
KK
22
"
"<<
"
"__
\Bnn
:
:
:
:
'A'
1111'''
Tnnn
111Kff999
ffuE%$99]]]]]w
KK
22
"
"
"
"
"
"__
(Bn
T
TT
''
ww1111''
1111
f
'j%.)}
]ww]
]weKeK
y_2
"
"<
"
22
E
E
E_B\
n
T
TT''
ww1111''
1111
f
'6(c%.
]ww]
weK
y_2<<V<
22
E
E
E_7
TTnnnT
TT11
]
]
''
ww1111
ff
L
L
f.
J0]]
1
1
nn
nn
<<
h
E_
TTTTnT
:
:11
CC
''
ww11119
L
L
Lf.
0JwwKK
nnnn
<<
h
E_
((
nn
T
:
TTTTTT
:
:11
CC
T
:
''ww
f
L
Lfff
0000
1Knnn
<<
"
"__22LLVV
____
E((
T
:
TTTTTTTT11
]
]
T
:
ww
f
Lfff
JJ9Ken
nn
h
h
"
"
"
"__
22<<
____
qq
E
f
L
f
f
999S
f
f
f
]]
f
f
]]00ww
]]]]ffffBB0ffffffffff
q
!
N
NhhpV
<
<
<V
f
f
f
999S]]
f
f
]]ww
C
C]]99ffff\\0ffffffffff
q
!
N
N
N
NpV
<
<
<V
ff
f99
99
f
f99'
ww]]]]
f
f
f
f0
]]ww
]]ffBB000
ff
9
f
VVVV
VV
ff
f99
f
f99
fww]]
]]
f
f
f
f0
]]00ww
C
C
BB000
ff
9f
VVVV
VV
ff
f
f9
]]
f
f
]]
]]0000
C)))
Lf
\vmS
ffff
99^^;;
*
VV
D
*
*
*
ff
f
f
99
fS9
]]
]]
]]0000w]
C
C
Lf
vS9
ffff
SS22^^;;
*
VV
^DD
*
*9f
Lff
f
f99SS
f
C
C]]
'
L
f
]]]w0w]]S9f9999^^
hhVV
^^
fff
f
f
f
f99SS
]]]]
f
]]]w0]www
S99999^^
hh9VV
i
DD
ffff
9999
99
SS
]]wwfffff
mmJ0BB00002222
hh
yy
_
_
y
_
N
N
Nffff
99
99
99
SS
ww00ww00ffmmJ0BB
hh
y
_
_
y
_
N
N
Nffff
9999
S9
9Sm]]00JJJ000
SmdJBB2h
N
hh
_
_yyyy
N
N
ffff
f
99
S9
99S
C
C00JddJ0
00
99mdJBB00L2h
hh
yyyy
_
_yyyy
N
N
L
L
Lff
L
9mSSS9
f
f
S9
wwww]]wS9
0Jv\^^D^hh
3yy
3MM3!!
ff
L
Lff
9
S9
f
fSSS9
'mS
wwww]]wmS00Jv\DDD^hh
3Myy
MggM!!
L
L
99
f
9999999
99
f
f
]www]]]]mmdJ0\\\\^^D^U;;;33MM33
yygg
hff
SS''
99999
99
f
f
f
C]]]
C
C
00]]S
Sm~J0vvvvDDD^U;;;3333
yyMM
N11
C
C
KK
x
x
x
xw]]]
99
999B(
nnAA'mS00\v7~dJvvvvvv33
MM3M
q
11
C
C
KK
99
x
x
w]]]
99B(nn
'Am00v7~dJvvvvvvMM
ggM3
qK1
C]00
KKKK99
C
C]w]]
f
SSeeBBn''''SSJJkv00vv\\MMMMpp
_yMM
q
q
K1
]w00
KKKK
]]]www
SSee\\n''
SSJJ \\\\MM33pp**
_yyyMM
11
www0
ww''
9999KK
xKKJ0
99KKKKeee/SS
'' Nkd~JJMM
Vppp****333
3
33
wJ0
]]
99
ee
x
KKJ0
99KKKKKKKeI/nnSS
''?4~dd33
VpVV**MM3
3
MM
JJ
f
fS9
1KKeJ0
]]
f9999
1
1
1ennn99Sm%YN!`Q%~dJJJv3MMMVV
*DMM
33
_E
ww00
f
f
f9
KeKe0
]]
f9999
1
1
1
1nnSSSmY$ Y?~dJJJMgggVV
*DMM
33y
_
:
:
]]]]
f
f
KKnn
T
9999((((99Smmj $n"`` ?%Q77::***DV
<**pVVphh
TT
00]]]]
f
f
x
x
KKn
99SSBBBB999S P":&$Jzz sYQv::yy***DV
<
*DpVVph
NhTT
''000
KK
((
LL
LL9S
999PP_ $(I%!! ,7\\:
**VVVVVVpV
Nhh
:
:
KK
((/
f
f
f
f
9
999.. y!'/*}(%#U!`F,Q\\ **VV
pp
<
<V
<
Nhh
''
]]
1KK
1
nn((
f
(B9Wq! $n)c+)&8"] ),Q7vggpVVV
VVVV
h
N
!''''
C
C
KeK
1
nn((
f
B\96P !#T&*},,)%#w" ,Q7vggpppVVVV
h
!
Keee
1
1
nn((
SS99
SS99((\B9SmS9S[WW #%')-..{+-'&$"!;F,kQTTpppppp
pph
f
f
f
f
KeKKKK
T
T((
9999
SSSS((\B99SSm[=q#
&)),$./.{-a+-*(%%# o!,k::ppVV
pp**
VVhff
]]
x
x
T
Tnnnnnneeee
mSSSG{{ #B&),-r.///=/=- - *(%!xP
+<VppV<VpV<
g
****
W
W
f
]]00
x
x((
nnnnnneeee
mSSS-a{{#&),.F.////=/=/=/=- *&" $
+<VppV<<VpV
Mg
W
W
q
]]
00
x
xB(nn
nnnnS9
mmSSSm.-aa{i"%S(7+-.//0303/=/=/=/=.+b).%!_Ec/pVVVpppVVVgM
3
3
*qqqq
D
]]
0J000
xB(
T
T
nn
x
S9SSmmm.-aa{#&m)Q,.//////=/=/=/=.-*H&$ !3IppppppVVVgMMM
*
^
]]
ww
x
xKKnn
BBB(emm !1#e&*,////`/`/`/`////..- )&%v%v(+>%w]]]ppp
*DqDDDD
]]w]
ee\\\B99&.Hb #WWW #e%&'*,5-O/////`/`/`/`///////=.#,*,-,-r*$# G-\Q\(D^qDD^^999]]]]
]
C
CwR8KKeeBB\\\\v\\\999S&&.|#=2 #e%&'**,/////`/`/`/`/////=/=.-+)Q)Q)Q&$_8ww11F%oBDDx99SS9]]]]
]
C]
1
1KKnnnnBB\\BB\BBB9
mmmHb|{ "K#(Z+-///`/`/`/`/////=/=-*H&#" w)]wCB$Uv**^
00
++ .
KK
nnnne
SmSS00JJGa"D"$)
+,X.//`/`/`/`///=/=..+b(#!Ty
+1I} y_
'[
^***
"
.+/E$Ab
KK
nnnnKe
SmSS00JJw-G ^"&*$-r./`/`/`/`///=/=.,|).%!T yE!%
+:y_q**DD
''H
x
KKnn
nnn
T
(BBnneeeeeeSSJJJJww-G ^"%/(}+>-r../`/`0W/=/=.#- *($9 :>
+C)CCpr#c
E
E
qqqqDDqq
q
000
b=
x
KKnnnnn
T
(BvneeeemmJJJJww-iDD $'*$,./`/`0W/=.#- *(&m" $C)CC<__:qq**
qq
\\BB
0
99'AA'
KKB(nn
T
TB(999Sm'
ZZt< !T$'+>-r./.-+)&$"E+CCCC)y:T
***
D\\
(
(
0
KK(
T
T
T
TnB(S999SSSm
@@Zt" !T$'*$-r.-*H'%S#!x+CCCC)yyyy : DDD*
D
B\
f
f
KK
((
T
T
T
T
n999SS
JJJ~&@@t"!$'+-- (%S# ^**j6u[yyy
qqq^^^DD***
(B
f
f
KK
((
nnnnSS
00JJ@t{y :#'c+*&m# Du[__y_
W
WqxxD*
nn
T
T
T
T
T
T
wwww
C
C
C
C]]]]
'
'.Pj==Wq L%*6)
+# :rXt@@eeC]lw
__qq
W
W
W
W
U!
VVV
nnnn
T
T
wwww
C
C]]
C
C
C
C
'
'
'6P##=W#(&!TX>t@&&C]RG__qq
W
Wqq
!!
VVp
T
Tnnn
T
nn]]]]
]]
00
'SS
'
'A[|=W!&["_EZ&eC]822y_
qqMMMM
pp
''
T
Tnnn
T
nn]]
]]
00]]
SS
'
A[AuuuHb #$' _+Z&e)CC22y_
qqMMMMpp
nnBB
((((
w]
SmmS
'SSmmAA
'm.[u|q gX$}}}888R8VVVV<<__qq
gg
z
zVppp
TTBB
((((
w]
f
f9SmS
'SSSS''
'A[Hb#>
+}cII8R8ppVV
"
"__22qqqq
MM
z
z
<VVV
:
:
((nnn((BB((0
]]]]
C
C
00
'
ff
'AA q}cI//VVVV
"<2222qqqq
!
<VVV
:
:
BBnnnBBBB((0
]]]]]]
00
'
''
A'ff
''mW}cII///88VVVV<V22qq
!!Vppp*nT
(
nnn
C
C]w
]]
C
C
]w
''9
''SS00 88[[)pVV<
h
h**qqqqMMnT
(
nnn
T
T
T
C
C]w
]]]]
C]''S9
9900 5&88nnAA
pVV<
h
h
h**qqqqMMTn
B(((nn
T
Tnn
T
T
]]00wwww0
C
C]]
S9SS
999900vvvv?s&nn''
<<VV<<
**
qqM
3
MM
3
:T
(BBB
T
Tnnnn
]]
00]]
]]
0
C
C]]
f
fSm'
SS99vvvv%YnnAA
<<VVVV**qqM
3MM
3TTTTff'n
BBBB
T
T
((]])
C]]]]
]]
9mS9
vvB\kt@ennVV
qqq
3MMM
_nnTT
'n
((((
T
T
((]]
C]ww]]
000]]009SS#mS
vv\vvQ@ennnnVV)qqq
Mggg
_TT
'n
T
C
C
C]ww]]]]
0000SSSSSS
vvvvvveKKKeKnTVV
h
h
qqDD
gggg3333
_
TT
'n
T
]]]wwwwwww0000
99SSSSSS
vvvvvve111KKKnTVV
h
h
W
W
**
ggMM3333
_
\\
99mm
000Jw]
0
xKK
KKeK11KeKeKKKKnnnn^^^^^D
*
*!!!!!;
<
<pV
q
BB
99SS
0]
C
0
xKKKKK
1
xeeK1KeKKKKnnnn^^^^^DDD!!!!;UVVpV
q\BB\00]]]
C
999999
f
f
w]
C
C000
ee118RTTnn''
^DDD
;;
pppVVV
q\BB\00]]]
C
999999
f
f
w]
C
C00
ee
11
8RTTnn''
x^DD
zz
!!
VVVppp\\BB
C
C
f
f
ww
0]]
1
1KeeeKKeeeew
1111KKu[nnnnnnnT
'xDDD
zz
!!
<
<
***
BBBB]]
f
f
ww
0]]
1
1KeeeKKeeeew111111[ATTnnnnnT
'xDDD!!
<
<
***
BB]wwwww
99
f
f
]]]]]]00
eeeeKK
KeeeKK
1KKK111K
nT
x^;;;!
<V
^
\\
C]]]]]99
f
f
C
C
C
C
C
C
eeeeKK
1KKKKK
1KKK111Kn
^D;;;!
<V**
D
o00
]]9
SS
f9999
]]
SSeKKeKK
KK111KKK
www'''Ann^^^DDD
DD33
y
_
y
_y!!
o
o0J0]]S9
SS
f
f9999]]
99K
1Keee
9KK111KKK
]
]
w'''
nn^^^D^^DDMMy
y
_
_y!!
o
oJ0]]99
f
f
00]]
SS
1KKKK
1
x11Ke
w88''nnD
*
*D^^^DDD
_y;!!
o
o0
]]
99
f
f
]]
99
1KKK
1
xKKew88
nnD
*
*DDDD
*
*
*
_yU;
f
f
f
]www]
C
C
C9
xK
1
x
xKeeKKKKeK1
q^^
q
qMM333
_yhh
N
f
f
f
0]w]]]
C
C
C
9
xK
1
1KeeK1
KKKeK1
qDD
q
qMMMM3
y
_
N
N
h
BB
f
f
SS
]]
C]
C
C
eKKK9KKeeKeK11111KK1K'
q
q
D
*
*
*
q
q
q
q
33MM
3333yyy
BB
f
f
SS
f
C
C
C]]]
K
1KK9KKKK
1KK11111KK1K'
q
q
D
*DD
q
q
33MM33
_
_y
(B
C
C
C
C
]]
1
1
1Knnnn
00
SS9
C]w]
C
C
]
]wwww
]
]
TTwwwwKKKe
*
*
q
q
_E
MgD*
B
(
]]]]
]]
1
1
1Knn
T
T
000
f
f999
C]]w
C
C
wwwwww
]
]
TT
wwwwKKKe8DD
q
q
y
_3M*
o
BBB\]w]]]]
x
KKnn
T
T
00
]]
]w
ww
TTTTKKKKKe^D
S
*
o
(
(
(B]www]]
x
KK
T
T
T
T
000
99]]
]w
:
:
:n11KKK1
^D
b#
q
*
BBBB
00S9999999KKKK
::
(B00
0099
eK
ww
KKww
*Db#
q
yy
33
yyyy
*
BBBB
S9999999KKKK
T
T
(
00
00099
K1
''ww
KK
*^922
q
yyMMyyyy
o
BB\\
9S9999eeKKKK
gg)
C]]00
990000J9S'
11
'AAu[
KKw
^^
q
qy
_
MM33yyyy
o
BB\\
99999eeeeKK
C]
C
C
99
000JSmA'
1111
'Aul
11w
^^
y
_
3333yyyy
B\\\0
99nnn
1
1
99
0J
wwww
'''''MP
''
DD
q
VVVV
(B\\
999999
nnnKK
99
0wwww]]
'''''$,-,&6
AA
DD
VV
<
<
BB
BB
SS999
T
TneK
SS99
0JJwwww
SS'A
''/!.F12!,!T'
AA
q
q^^2
qVVV
<
VV
33MBB
BB009999
9
T
T
nK
1
9999
000
wwww
99'A''''/".F11-!T'
AA
q
q^^
2
qppV
<
pp3333M
o
o]]
f
nnnnBB
x
x
f
f]w
C
C
f
f
f
f
f
f
[j"n-,0z0z(_['TT[A'AAA
q
q
q
qDDDDDD*
*ppVV
M
o
oww
'
''BB
x
x
f
f
]w
C
C
f
f
'A#B((![''TT/u[A'''
q
q
q
qDD
DDDD**ppVV
M
]]
nn((
x
x
f
f
]]
C]
]]'
''
TTA'[r!A''
n'A
q
q
q
q
D^****
VVyy
g
o
o
]]
f
f
nn
((
x
x
f
f]]
C]
]]
f
f''
TTA''A>}[A''
n[A
q
q
q
D^**
VV
_
_
g
L
L
]]
nn
((eeK
1>X>
$
jaa
aa,FFFsssOO 55{{aaVOO
'q2222
pV<<
h
;ff
]]
nn
((eeeK>XX>
jP
G
G
{{F,FFsssOO##
|
|
5
aaaa
OO^9$%+
22
V<<<
h
h
h!!!ff
C]]]
nn((
eeeK>X
GaaaF,
sssiiiO#
a{iD'--) *____
<
"
"<
h
h
h
!ff9
w]]]BBKKeK>X
j
j
GaaaF,
sssiiiO
|
| #5
a{*DH)/[1I1I0/)Hx____<
"
"<
!ff
]w]]BB
j
j
j
j
ssssss iiiO
|
|aaaa
<**^%-1I1I1I0.%+A2fL22))
"<
!!
ff
]w
]]((
x
x
j
j
j
j
ssssss iiiO55{{{{Vx'/0/0/0/1/'_uLfLL
<
"
zz
00]]]w
]]BBB(
x
x
j
j
j
j55
G
G
ssss
#5555
5{e"5 |^x'",0/000.$'=LLy_
E
h
h
)<<
h
h
!
]]]w]]
BBB(
x
G
G
ssss
55555O)$D*[%+,//.'[=#22y_
E_
h
h
))VV)
h
h!;
XTENSION= 'TABLE ' / ASCII table extension BITPIX = 8 / 8 bit bytes NAXIS = 2 / 2-dimensional ASCII table NAXIS1 = 24 / Width of table in bytes NAXIS2 = 1600 / Number of rows in table PCOUNT = 0 / Size of special data area GCOUNT = 1 / one data group (required keyword) TFIELDS = 4 / Number of fields in each row EXTNAME = 'xe.mask ' /FITS: Name of Table TTYPE1 = 'XI ' / TBCOL1 = 1 / TFORM1 = 'F6.2 ' / TUNIT1 = 'DEGREES ' / TTYPE2 = 'ETA ' / TBCOL2 = 7 / TFORM2 = 'F6.2 ' / TUNIT2 = 'DEGREES ' / TTYPE3 = 'XI_CORR ' / TBCOL3 = 13 / TFORM3 = 'F6.2 ' / TUNIT3 = 'ARCSEC ' / TTYPE4 = 'ETA_CORR' / TBCOL4 = 19 / TFORM4 = 'F6.2 ' / TUNIT4 = 'ARCSEC ' / END -3.12 -3.12 0.16 0.19 -2.96 -3.12 0.04 0.25 -2.80 -3.12 -0.16 0.30 -2.64 -3.12 -0.34 0.33 -2.48 -3.12 -0.49 0.36 -2.32 -3.12 -0.60 0.39 -2.16 -3.12 -0.69 0.38 -2.00 -3.12 -0.73 0.32 -1.84 -3.12 -0.81 0.19 -1.68 -3.12 -0.86 0.11 -1.52 -3.12 -0.88 0.05 -1.36 -3.12 -0.86 -0.11 -1.20 -3.12 -0.83 -0.16 -1.04 -3.12 -0.79 -0.13 -0.88 -3.12 -0.76 -0.26 -0.72 -3.12 -0.68 -0.41 -0.56 -3.12 -0.57 -0.48 -0.40 -3.12 -0.44 -0.52 -0.24 -3.12 -0.28 -0.51 -0.08 -3.12 -0.10 -0.46 0.08 -3.12 0.03 -0.47 0.24 -3.12 0.13 -0.52 0.40 -3.12 0.33 -0.59 0.56 -3.12 0.50 -0.54 0.72 -3.12 0.55 -0.43 0.88 -3.12 0.55 -0.34 1.04 -3.12 0.57 -0.30 1.20 -3.12 0.66 -0.21 1.36 -3.12 0.73 -0.11 1.52 -3.12 0.75 -0.02 1.68 -3.12 0.65 0.10 1.84 -3.12 0.59 0.18 2.00 -3.12 0.50 0.22 2.16 -3.12 0.38 0.30 2.32 -3.12 0.21 0.40 2.48 -3.12 0.10 0.39 2.64 -3.12 0.00 0.35 2.80 -3.12 -0.14 0.29 2.96 -3.12 -0.36 0.23 3.12 -3.12 -0.47 0.19 -3.12 -2.96 0.18 0.08 -2.96 -2.96 0.09 0.17 -2.80 -2.96 -0.06 0.27 -2.64 -2.96 -0.20 0.34 -2.48 -2.96 -0.36 0.35 -2.32 -2.96 -0.48 0.35 -2.16 -2.96 -0.55 0.35 -2.00 -2.96 -0.61 0.26 -1.84 -2.96 -0.66 0.13 -1.68 -2.96 -0.70 0.09 -1.52 -2.96 -0.72 0.02 -1.36 -2.96 -0.70 -0.10 -1.20 -2.96 -0.66 -0.16 -1.04 -2.96 -0.65 -0.20 -0.88 -2.96 -0.61 -0.28 -0.72 -2.96 -0.57 -0.39 -0.56 -2.96 -0.46 -0.43 -0.40 -2.96 -0.35 -0.45 -0.24 -2.96 -0.25 -0.44 -0.08 -2.96 -0.11 -0.42 0.08 -2.96 -0.01 -0.41 0.24 -2.96 0.10 -0.47 0.40 -2.96 0.21 -0.47 0.56 -2.96 0.36 -0.45 0.72 -2.96 0.41 -0.39 0.88 -2.96 0.45 -0.33 1.04 -2.96 0.51 -0.26 1.20 -2.96 0.57 -0.21 1.36 -2.96 0.61 -0.14 1.52 -2.96 0.59 -0.06 1.68 -2.96 0.54 0.06 1.84 -2.96 0.48 0.15 2.00 -2.96 0.40 0.21 2.16 -2.96 0.29 0.30 2.32 -2.96 0.14 0.37 2.48 -2.96 0.06 0.32 2.64 -2.96 -0.08 0.27 2.80 -2.96 -0.21 0.23 2.96 -2.96 -0.37 0.17 3.12 -2.96 -0.49 0.13 -3.12 -2.80 0.32 -0.01 -2.96 -2.80 0.24 0.04 -2.80 -2.80 0.11 0.16 -2.64 -2.80 -0.00 0.26 -2.48 -2.80 -0.16 0.27 -2.32 -2.80 -0.30 0.25 -2.16 -2.80 -0.42 0.22 -2.00 -2.80 -0.45 0.16 -1.84 -2.80 -0.46 0.09 -1.68 -2.80 -0.46 0.03 -1.52 -2.80 -0.49 -0.06 -1.36 -2.80 -0.49 -0.15 -1.20 -2.80 -0.46 -0.22 -1.04 -2.80 -0.42 -0.25 -0.88 -2.80 -0.42 -0.33 -0.72 -2.80 -0.37 -0.36 -0.56 -2.80 -0.31 -0.37 -0.40 -2.80 -0.26 -0.36 -0.24 -2.80 -0.21 -0.34 -0.08 -2.80 -0.12 -0.31 0.08 -2.80 -0.04 -0.31 0.24 -2.80 0.01 -0.30 0.40 -2.80 0.07 -0.30 0.56 -2.80 0.17 -0.31 0.72 -2.80 0.25 -0.31 0.88 -2.80 0.31 -0.27 1.04 -2.80 0.37 -0.24 1.20 -2.80 0.41 -0.19 1.36 -2.80 0.41 -0.18 1.52 -2.80 0.38 -0.11 1.68 -2.80 0.35 -0.02 1.84 -2.80 0.32 0.07 2.00 -2.80 0.27 0.16 2.16 -2.80 0.16 0.24 2.32 -2.80 0.05 0.29 2.48 -2.80 -0.03 0.22 2.64 -2.80 -0.15 0.16 2.80 -2.80 -0.31 0.14 2.96 -2.80 -0.47 0.11 3.12 -2.80 -0.55 0.02 -3.12 -2.64 0.50 -0.08 -2.96 -2.64 0.45 -0.01 -2.80 -2.64 0.31 0.04 -2.64 -2.64 0.13 0.08 -2.48 -2.64 -0.01 0.12 -2.32 -2.64 -0.18 0.13 -2.16 -2.64 -0.30 0.09 -2.00 -2.64 -0.32 0.08 -1.84 -2.64 -0.31 0.05 -1.68 -2.64 -0.32 -0.02 -1.52 -2.64 -0.33 -0.15 -1.36 -2.64 -0.33 -0.24 -1.20 -2.64 -0.28 -0.26 -1.04 -2.64 -0.27 -0.25 -0.88 -2.64 -0.24 -0.28 -0.72 -2.64 -0.22 -0.28 -0.56 -2.64 -0.20 -0.28 -0.40 -2.64 -0.21 -0.27 -0.24 -2.64 -0.19 -0.23 -0.08 -2.64 -0.12 -0.21 0.08 -2.64 -0.07 -0.18 0.24 -2.64 -0.06 -0.15 0.40 -2.64 -0.03 -0.14 0.56 -2.64 0.05 -0.18 0.72 -2.64 0.13 -0.18 0.88 -2.64 0.16 -0.17 1.04 -2.64 0.19 -0.16 1.20 -2.64 0.23 -0.15 1.36 -2.64 0.21 -0.10 1.52 -2.64 0.20 -0.09 1.68 -2.64 0.19 -0.05 1.84 -2.64 0.21 -0.03 2.00 -2.64 0.14 0.07 2.16 -2.64 0.07 0.16 2.32 -2.64 -0.02 0.20 2.48 -2.64 -0.11 0.16 2.64 -2.64 -0.25 0.12 2.80 -2.64 -0.37 0.04 2.96 -2.64 -0.50 -0.09 3.12 -2.64 -0.55 -0.19 -3.12 -2.48 0.59 -0.19 -2.96 -2.48 0.53 -0.12 -2.80 -2.48 0.40 -0.04 -2.64 -2.48 0.21 -0.05 -2.48 -2.48 0.04 -0.04 -2.32 -2.48 -0.06 0.02 -2.16 -2.48 -0.11 0.04 -2.00 -2.48 -0.16 0.02 -1.84 -2.48 -0.20 -0.01 -1.68 -2.48 -0.23 -0.05 -1.52 -2.48 -0.22 -0.15 -1.36 -2.48 -0.18 -0.20 -1.20 -2.48 -0.14 -0.18 -1.04 -2.48 -0.12 -0.13 -0.88 -2.48 -0.10 -0.11 -0.72 -2.48 -0.09 -0.13 -0.56 -2.48 -0.11 -0.17 -0.40 -2.48 -0.17 -0.17 -0.24 -2.48 -0.16 -0.16 -0.08 -2.48 -0.12 -0.15 0.08 -2.48 -0.10 -0.10 0.24 -2.48 -0.10 -0.06 0.40 -2.48 -0.07 -0.03 0.56 -2.48 -0.01 -0.04 0.72 -2.48 0.01 -0.04 0.88 -2.48 0.01 -0.02 1.04 -2.48 0.01 -0.00 1.20 -2.48 0.02 0.01 1.36 -2.48 0.03 0.02 1.52 -2.48 0.04 0.04 1.68 -2.48 0.09 -0.02 1.84 -2.48 0.08 -0.05 2.00 -2.48 0.03 0.01 2.16 -2.48 -0.05 0.13 2.32 -2.48 -0.10 0.15 2.48 -2.48 -0.17 0.11 2.64 -2.48 -0.31 0.08 2.80 -2.48 -0.42 -0.06 2.96 -2.48 -0.51 -0.26 3.12 -2.48 -0.53 -0.40 -3.12 -2.32 0.57 -0.35 -2.96 -2.32 0.51 -0.25 -2.80 -2.32 0.37 -0.14 -2.64 -2.32 0.19 -0.09 -2.48 -2.32 0.10 -0.05 -2.32 -2.32 0.05 0.00 -2.16 -2.32 0.04 0.04 -2.00 -2.32 -0.04 0.02 -1.84 -2.32 -0.10 -0.02 -1.68 -2.32 -0.10 -0.02 -1.52 -2.32 -0.03 -0.02 -1.36 -2.32 0.01 -0.02 -1.20 -2.32 0.05 0.01 -1.04 -2.32 0.04 0.05 -0.88 -2.32 0.03 0.02 -0.72 -2.32 0.01 -0.06 -0.56 -2.32 -0.02 -0.08 -0.40 -2.32 -0.06 -0.11 -0.24 -2.32 -0.07 -0.13 -0.08 -2.32 -0.08 -0.15 0.08 -2.32 -0.08 -0.12 0.24 -2.32 -0.07 -0.08 0.40 -2.32 -0.04 0.00 0.56 -2.32 -0.05 0.06 0.72 -2.32 -0.09 0.08 0.88 -2.32 -0.12 0.10 1.04 -2.32 -0.16 0.15 1.20 -2.32 -0.16 0.18 1.36 -2.32 -0.15 0.17 1.52 -2.32 -0.08 0.15 1.68 -2.32 -0.02 0.07 1.84 -2.32 -0.01 0.01 2.00 -2.32 -0.08 0.08 2.16 -2.32 -0.13 0.14 2.32 -2.32 -0.17 0.14 2.48 -2.32 -0.21 0.06 2.64 -2.32 -0.30 -0.01 2.80 -2.32 -0.43 -0.13 2.96 -2.32 -0.49 -0.33 3.12 -2.32 -0.52 -0.44 -3.12 -2.16 0.52 -0.44 -2.96 -2.16 0.44 -0.38 -2.80 -2.16 0.28 -0.25 -2.64 -2.16 0.14 -0.13 -2.48 -2.16 0.11 -0.02 -2.32 -2.16 0.07 0.04 -2.16 -2.16 0.06 0.07 -2.00 -2.16 0.03 0.06 -1.84 -2.16 0.04 0.09 -1.68 -2.16 0.09 0.13 -1.52 -2.16 0.15 0.15 -1.36 -2.16 0.19 0.15 -1.20 -2.16 0.19 0.17 -1.04 -2.16 0.16 0.14 -0.88 -2.16 0.11 0.06 -0.72 -2.16 0.06 -0.02 -0.56 -2.16 0.05 -0.06 -0.40 -2.16 0.04 -0.07 -0.24 -2.16 0.01 -0.09 -0.08 -2.16 -0.02 -0.13 0.08 -2.16 -0.03 -0.12 0.24 -2.16 -0.03 -0.08 0.40 -2.16 -0.05 0.00 0.56 -2.16 -0.09 0.07 0.72 -2.16 -0.15 0.14 0.88 -2.16 -0.19 0.16 1.04 -2.16 -0.22 0.24 1.20 -2.16 -0.26 0.29 1.36 -2.16 -0.26 0.31 1.52 -2.16 -0.20 0.26 1.68 -2.16 -0.13 0.17 1.84 -2.16 -0.12 0.11 2.00 -2.16 -0.14 0.13 2.16 -2.16 -0.15 0.15 2.32 -2.16 -0.14 0.06 2.48 -2.16 -0.20 -0.00 2.64 -2.16 -0.30 -0.08 2.80 -2.16 -0.39 -0.21 2.96 -2.16 -0.46 -0.36 3.12 -2.16 -0.45 -0.46 -3.12 -2.00 0.48 -0.50 -2.96 -2.00 0.36 -0.42 -2.80 -2.00 0.22 -0.31 -2.64 -2.00 0.13 -0.19 -2.48 -2.00 0.07 -0.08 -2.32 -2.00 0.05 0.04 -2.16 -2.00 0.03 0.09 -2.00 -2.00 0.10 0.14 -1.84 -2.00 0.17 0.21 -1.68 -2.00 0.22 0.25 -1.52 -2.00 0.26 0.25 -1.36 -2.00 0.25 0.22 -1.20 -2.00 0.24 0.21 -1.04 -2.00 0.20 0.17 -0.88 -2.00 0.13 0.11 -0.72 -2.00 0.08 0.04 -0.56 -2.00 0.07 0.01 -0.40 -2.00 0.07 -0.01 -0.24 -2.00 0.04 -0.04 -0.08 -2.00 -0.01 -0.07 0.08 -2.00 -0.02 -0.05 0.24 -2.00 -0.08 -0.03 0.40 -2.00 -0.11 0.01 0.56 -2.00 -0.15 0.07 0.72 -2.00 -0.17 0.13 0.88 -2.00 -0.20 0.17 1.04 -2.00 -0.22 0.24 1.20 -2.00 -0.27 0.32 1.36 -2.00 -0.30 0.36 1.52 -2.00 -0.27 0.33 1.68 -2.00 -0.24 0.26 1.84 -2.00 -0.21 0.21 2.00 -2.00 -0.18 0.17 2.16 -2.00 -0.14 0.11 2.32 -2.00 -0.09 0.01 2.48 -2.00 -0.12 -0.09 2.64 -2.00 -0.20 -0.17 2.80 -2.00 -0.31 -0.30 2.96 -2.00 -0.33 -0.48 3.12 -2.00 -0.34 -0.60 -3.12 -1.84 0.33 -0.58 -2.96 -1.84 0.29 -0.46 -2.80 -1.84 0.18 -0.33 -2.64 -1.84 0.09 -0.24 -2.48 -1.84 0.02 -0.15 -2.32 -1.84 -0.00 -0.01 -2.16 -1.84 0.07 0.14 -2.00 -1.84 0.18 0.24 -1.84 -1.84 0.27 0.29 -1.68 -1.84 0.29 0.31 -1.52 -1.84 0.28 0.26 -1.36 -1.84 0.26 0.21 -1.20 -1.84 0.20 0.18 -1.04 -1.84 0.16 0.19 -0.88 -1.84 0.12 0.15 -0.72 -1.84 0.07 0.11 -0.56 -1.84 0.04 0.07 -0.40 -1.84 0.04 0.03 -0.24 -1.84 0.01 -0.01 -0.08 -1.84 -0.00 -0.03 0.08 -1.84 -0.07 -0.01 0.24 -1.84 -0.11 0.03 0.40 -1.84 -0.15 0.05 0.56 -1.84 -0.15 0.06 0.72 -1.84 -0.17 0.09 0.88 -1.84 -0.20 0.13 1.04 -1.84 -0.24 0.20 1.20 -1.84 -0.26 0.28 1.36 -1.84 -0.28 0.33 1.52 -1.84 -0.31 0.35 1.68 -1.84 -0.30 0.33 1.84 -1.84 -0.28 0.29 2.00 -1.84 -0.21 0.25 2.16 -1.84 -0.15 0.15 2.32 -1.84 -0.07 -0.01 2.48 -1.84 -0.04 -0.14 2.64 -1.84 -0.11 -0.21 2.80 -1.84 -0.22 -0.30 2.96 -1.84 -0.26 -0.51 3.12 -1.84 -0.23 -0.66 -3.12 -1.68 0.19 -0.56 -2.96 -1.68 0.20 -0.43 -2.80 -1.68 0.17 -0.30 -2.64 -1.68 0.06 -0.24 -2.48 -1.68 -0.01 -0.17 -2.32 -1.68 0.02 0.02 -2.16 -1.68 0.10 0.18 -2.00 -1.68 0.24 0.29 -1.84 -1.68 0.30 0.31 -1.68 -1.68 0.30 0.29 -1.52 -1.68 0.29 0.23 -1.36 -1.68 0.25 0.19 -1.20 -1.68 0.17 0.17 -1.04 -1.68 0.11 0.17 -0.88 -1.68 0.08 0.15 -0.72 -1.68 0.04 0.13 -0.56 -1.68 0.01 0.09 -0.40 -1.68 0.00 0.04 -0.24 -1.68 -0.01 -0.01 -0.08 -1.68 -0.00 -0.02 0.08 -1.68 -0.05 0.02 0.24 -1.68 -0.12 0.05 0.40 -1.68 -0.13 0.07 0.56 -1.68 -0.11 0.05 0.72 -1.68 -0.14 0.06 0.88 -1.68 -0.21 0.10 1.04 -1.68 -0.25 0.16 1.20 -1.68 -0.26 0.22 1.36 -1.68 -0.27 0.29 1.52 -1.68 -0.29 0.32 1.68 -1.68 -0.31 0.33 1.84 -1.68 -0.30 0.31 2.00 -1.68 -0.26 0.28 2.16 -1.68 -0.17 0.17 2.32 -1.68 -0.06 -0.01 2.48 -1.68 0.01 -0.18 2.64 -1.68 -0.03 -0.20 2.80 -1.68 -0.13 -0.31 2.96 -1.68 -0.15 -0.51 3.12 -1.68 -0.12 -0.67 -3.12 -1.52 0.09 -0.53 -2.96 -1.52 0.12 -0.42 -2.80 -1.52 0.05 -0.32 -2.64 -1.52 -0.03 -0.25 -2.48 -1.52 -0.03 -0.13 -2.32 -1.52 0.05 0.07 -2.16 -1.52 0.15 0.23 -2.00 -1.52 0.25 0.30 -1.84 -1.52 0.29 0.30 -1.68 -1.52 0.29 0.25 -1.52 -1.52 0.26 0.21 -1.36 -1.52 0.22 0.19 -1.20 -1.52 0.15 0.20 -1.04 -1.52 0.09 0.18 -0.88 -1.52 0.05 0.15 -0.72 -1.52 0.03 0.13 -0.56 -1.52 0.01 0.08 -0.40 -1.52 -0.01 0.04 -0.24 -1.52 -0.02 0.01 -0.08 -1.52 -0.02 0.02 0.08 -1.52 -0.08 0.04 0.24 -1.52 -0.13 0.08 0.40 -1.52 -0.14 0.08 0.56 -1.52 -0.11 0.07 0.72 -1.52 -0.13 0.07 0.88 -1.52 -0.19 0.09 1.04 -1.52 -0.24 0.13 1.20 -1.52 -0.25 0.21 1.36 -1.52 -0.25 0.27 1.52 -1.52 -0.26 0.31 1.68 -1.52 -0.30 0.31 1.84 -1.52 -0.31 0.29 2.00 -1.52 -0.30 0.25 2.16 -1.52 -0.25 0.15 2.32 -1.52 -0.12 0.01 2.48 -1.52 -0.01 -0.12 2.64 -1.52 0.02 -0.20 2.80 -1.52 -0.01 -0.31 2.96 -1.52 0.01 -0.53 3.12 -1.52 0.03 -0.71 -3.12 -1.36 0.04 -0.51 -2.96 -1.36 0.01 -0.44 -2.80 -1.36 -0.09 -0.35 -2.64 -1.36 -0.14 -0.26 -2.48 -1.36 -0.09 -0.12 -2.32 -1.36 0.06 0.07 -2.16 -1.36 0.15 0.20 -2.00 -1.36 0.22 0.27 -1.84 -1.36 0.24 0.25 -1.68 -1.36 0.24 0.21 -1.52 -1.36 0.20 0.17 -1.36 -1.36 0.16 0.17 -1.20 -1.36 0.13 0.18 -1.04 -1.36 0.09 0.21 -0.88 -1.36 0.06 0.16 -0.72 -1.36 0.04 0.12 -0.56 -1.36 -0.00 0.11 -0.40 -1.36 -0.00 0.07 -0.24 -1.36 -0.02 0.04 -0.08 -1.36 -0.07 0.05 0.08 -1.36 -0.10 0.08 0.24 -1.36 -0.13 0.09 0.40 -1.36 -0.16 0.09 0.56 -1.36 -0.15 0.09 0.72 -1.36 -0.15 0.09 0.88 -1.36 -0.16 0.10 1.04 -1.36 -0.19 0.12 1.20 -1.36 -0.22 0.17 1.36 -1.36 -0.22 0.25 1.52 -1.36 -0.22 0.27 1.68 -1.36 -0.26 0.28 1.84 -1.36 -0.28 0.25 2.00 -1.36 -0.30 0.22 2.16 -1.36 -0.28 0.14 2.32 -1.36 -0.18 0.04 2.48 -1.36 -0.04 -0.09 2.64 -1.36 0.04 -0.17 2.80 -1.36 0.10 -0.33 2.96 -1.36 0.16 -0.54 3.12 -1.36 0.20 -0.71 -3.12 -1.20 -0.07 -0.53 -2.96 -1.20 -0.11 -0.49 -2.80 -1.20 -0.18 -0.38 -2.64 -1.20 -0.22 -0.25 -2.48 -1.20 -0.16 -0.11 -2.32 -1.20 0.01 0.04 -2.16 -1.20 0.12 0.15 -2.00 -1.20 0.16 0.20 -1.84 -1.20 0.19 0.20 -1.68 -1.20 0.19 0.16 -1.52 -1.20 0.14 0.13 -1.36 -1.20 0.11 0.12 -1.20 -1.20 0.10 0.15 -1.04 -1.20 0.10 0.17 -0.88 -1.20 0.08 0.14 -0.72 -1.20 0.03 0.10 -0.56 -1.20 0.00 0.09 -0.40 -1.20 -0.03 0.10 -0.24 -1.20 -0.08 0.06 -0.08 -1.20 -0.10 0.07 0.08 -1.20 -0.11 0.07 0.24 -1.20 -0.12 0.07 0.40 -1.20 -0.16 0.07 0.56 -1.20 -0.17 0.08 0.72 -1.20 -0.14 0.08 0.88 -1.20 -0.12 0.10 1.04 -1.20 -0.14 0.11 1.20 -1.20 -0.17 0.16 1.36 -1.20 -0.17 0.22 1.52 -1.20 -0.18 0.24 1.68 -1.20 -0.21 0.23 1.84 -1.20 -0.21 0.23 2.00 -1.20 -0.21 0.20 2.16 -1.20 -0.21 0.16 2.32 -1.20 -0.16 0.07 2.48 -1.20 -0.07 -0.04 2.64 -1.20 0.02 -0.13 2.80 -1.20 0.15 -0.30 2.96 -1.20 0.28 -0.50 3.12 -1.20 0.33 -0.62 -3.12 -1.04 -0.24 -0.59 -2.96 -1.04 -0.23 -0.50 -2.80 -1.04 -0.25 -0.40 -2.64 -1.04 -0.23 -0.28 -2.48 -1.04 -0.14 -0.13 -2.32 -1.04 -0.00 0.02 -2.16 -1.04 0.06 0.09 -2.00 -1.04 0.09 0.15 -1.84 -1.04 0.12 0.16 -1.68 -1.04 0.13 0.13 -1.52 -1.04 0.11 0.09 -1.36 -1.04 0.10 0.10 -1.20 -1.04 0.10 0.11 -1.04 -1.04 0.10 0.12 -0.88 -1.04 0.07 0.09 -0.72 -1.04 0.04 0.05 -0.56 -1.04 -0.02 0.06 -0.40 -1.04 -0.07 0.07 -0.24 -1.04 -0.09 0.05 -0.08 -1.04 -0.07 0.04 0.08 -1.04 -0.06 0.03 0.24 -1.04 -0.08 0.03 0.40 -1.04 -0.12 0.04 0.56 -1.04 -0.12 0.06 0.72 -1.04 -0.08 0.07 0.88 -1.04 -0.05 0.07 1.04 -1.04 -0.10 0.09 1.20 -1.04 -0.12 0.15 1.36 -1.04 -0.14 0.18 1.52 -1.04 -0.14 0.19 1.68 -1.04 -0.15 0.23 1.84 -1.04 -0.13 0.19 2.00 -1.04 -0.11 0.18 2.16 -1.04 -0.08 0.11 2.32 -1.04 -0.09 0.06 2.48 -1.04 -0.01 -0.03 2.64 -1.04 0.09 -0.13 2.80 -1.04 0.21 -0.29 2.96 -1.04 0.35 -0.46 3.12 -1.04 0.45 -0.57 -3.12 -0.88 -0.38 -0.60 -2.96 -0.88 -0.34 -0.51 -2.80 -0.88 -0.29 -0.40 -2.64 -0.88 -0.23 -0.30 -2.48 -0.88 -0.12 -0.15 -2.32 -0.88 -0.01 -0.00 -2.16 -0.88 0.01 0.07 -2.00 -0.88 0.04 0.11 -1.84 -0.88 0.06 0.12 -1.68 -0.88 0.06 0.09 -1.52 -0.88 0.08 0.07 -1.36 -0.88 0.11 0.07 -1.20 -0.88 0.10 0.07 -1.04 -0.88 0.10 0.07 -0.88 -0.88 0.09 0.06 -0.72 -0.88 0.04 0.04 -0.56 -0.88 -0.02 0.04 -0.40 -0.88 -0.08 0.03 -0.24 -0.88 -0.06 0.02 -0.08 -0.88 -0.03 0.00 0.08 -0.88 -0.05 -0.01 0.24 -0.88 -0.08 0.01 0.40 -0.88 -0.09 0.04 0.56 -0.88 -0.08 0.07 0.72 -0.88 -0.05 0.04 0.88 -0.88 -0.02 0.02 1.04 -0.88 -0.06 0.05 1.20 -0.88 -0.10 0.10 1.36 -0.88 -0.12 0.13 1.52 -0.88 -0.11 0.17 1.68 -0.88 -0.09 0.19 1.84 -0.88 -0.07 0.18 2.00 -0.88 -0.06 0.13 2.16 -0.88 -0.05 0.08 2.32 -0.88 -0.05 0.03 2.48 -0.88 0.02 -0.04 2.64 -0.88 0.13 -0.11 2.80 -0.88 0.28 -0.28 2.96 -0.88 0.43 -0.45 3.12 -0.88 0.56 -0.54 -3.12 -0.72 -0.48 -0.52 -2.96 -0.72 -0.40 -0.46 -2.80 -0.72 -0.34 -0.37 -2.64 -0.72 -0.24 -0.28 -2.48 -0.72 -0.14 -0.16 -2.32 -0.72 -0.07 -0.04 -2.16 -0.72 -0.03 0.04 -2.00 -0.72 -0.01 0.06 -1.84 -0.72 0.03 0.08 -1.68 -0.72 0.05 0.07 -1.52 -0.72 0.08 0.06 -1.36 -0.72 0.11 0.05 -1.20 -0.72 0.11 0.05 -1.04 -0.72 0.10 0.05 -0.88 -0.72 0.08 0.05 -0.72 -0.72 0.02 0.06 -0.56 -0.72 -0.04 0.01 -0.40 -0.72 -0.06 -0.02 -0.24 -0.72 -0.03 -0.05 -0.08 -0.72 -0.04 -0.05 0.08 -0.72 -0.08 -0.04 0.24 -0.72 -0.06 -0.02 0.40 -0.72 -0.06 0.04 0.56 -0.72 -0.07 0.06 0.72 -0.72 -0.03 0.03 0.88 -0.72 -0.01 0.01 1.04 -0.72 -0.05 0.03 1.20 -0.72 -0.09 0.06 1.36 -0.72 -0.09 0.08 1.52 -0.72 -0.07 0.12 1.68 -0.72 -0.05 0.15 1.84 -0.72 -0.02 0.12 2.00 -0.72 -0.02 0.09 2.16 -0.72 -0.03 0.05 2.32 -0.72 -0.01 0.00 2.48 -0.72 0.05 -0.05 2.64 -0.72 0.14 -0.10 2.80 -0.72 0.32 -0.24 2.96 -0.72 0.49 -0.42 3.12 -0.72 0.57 -0.51 -3.12 -0.56 -0.51 -0.41 -2.96 -0.56 -0.50 -0.37 -2.80 -0.56 -0.37 -0.29 -2.64 -0.56 -0.25 -0.23 -2.48 -0.56 -0.17 -0.16 -2.32 -0.56 -0.12 -0.06 -2.16 -0.56 -0.06 0.01 -2.00 -0.56 -0.03 0.03 -1.84 -0.56 0.01 0.05 -1.68 -0.56 0.05 0.06 -1.52 -0.56 0.08 0.07 -1.36 -0.56 0.10 0.05 -1.20 -0.56 0.10 0.05 -1.04 -0.56 0.08 0.05 -0.88 -0.56 0.06 0.04 -0.72 -0.56 0.01 0.01 -0.56 -0.56 -0.02 0.00 -0.40 -0.56 -0.02 -0.07 -0.24 -0.56 -0.03 -0.09 -0.08 -0.56 -0.08 -0.10 0.08 -0.56 -0.11 -0.08 0.24 -0.56 -0.09 -0.06 0.40 -0.56 -0.07 -0.01 0.56 -0.56 -0.08 0.03 0.72 -0.56 -0.05 0.02 0.88 -0.56 0.00 -0.00 1.04 -0.56 -0.02 0.02 1.20 -0.56 -0.06 0.04 1.36 -0.56 -0.04 0.05 1.52 -0.56 -0.02 0.07 1.68 -0.56 -0.00 0.09 1.84 -0.56 0.01 0.07 2.00 -0.56 0.02 0.07 2.16 -0.56 0.05 0.05 2.32 -0.56 0.06 0.01 2.48 -0.56 0.09 -0.05 2.64 -0.56 0.17 -0.10 2.80 -0.56 0.33 -0.19 2.96 -0.56 0.49 -0.33 3.12 -0.56 0.59 -0.45 -3.12 -0.40 -0.57 -0.29 -2.96 -0.40 -0.52 -0.25 -2.80 -0.40 -0.37 -0.19 -2.64 -0.40 -0.22 -0.18 -2.48 -0.40 -0.18 -0.16 -2.32 -0.40 -0.17 -0.09 -2.16 -0.40 -0.10 0.00 -2.00 -0.40 -0.05 0.04 -1.84 -0.40 0.01 0.05 -1.68 -0.40 0.04 0.06 -1.52 -0.40 0.06 0.07 -1.36 -0.40 0.08 0.05 -1.20 -0.40 0.08 0.03 -1.04 -0.40 0.08 0.03 -0.88 -0.40 0.04 0.01 -0.72 -0.40 0.02 -0.04 -0.56 -0.40 0.02 -0.07 -0.40 -0.40 -0.01 -0.08 -0.24 -0.40 -0.04 -0.11 -0.08 -0.40 -0.09 -0.09 0.08 -0.40 -0.10 -0.07 0.24 -0.40 -0.08 -0.07 0.40 -0.40 -0.04 -0.04 0.56 -0.40 -0.05 0.01 0.72 -0.40 -0.03 0.00 0.88 -0.40 0.01 -0.03 1.04 -0.40 0.00 0.00 1.20 -0.40 -0.01 0.05 1.36 -0.40 -0.01 0.06 1.52 -0.40 0.02 0.06 1.68 -0.40 0.04 0.05 1.84 -0.40 0.04 0.02 2.00 -0.40 0.08 0.02 2.16 -0.40 0.12 0.04 2.32 -0.40 0.13 0.01 2.48 -0.40 0.13 -0.06 2.64 -0.40 0.21 -0.10 2.80 -0.40 0.37 -0.17 2.96 -0.40 0.52 -0.27 3.12 -0.40 0.59 -0.35 -3.12 -0.24 -0.59 -0.13 -2.96 -0.24 -0.52 -0.12 -2.80 -0.24 -0.37 -0.12 -2.64 -0.24 -0.21 -0.16 -2.48 -0.24 -0.16 -0.15 -2.32 -0.24 -0.18 -0.09 -2.16 -0.24 -0.14 0.01 -2.00 -0.24 -0.04 0.06 -1.84 -0.24 0.02 0.08 -1.68 -0.24 0.02 0.08 -1.52 -0.24 0.04 0.06 -1.36 -0.24 0.04 0.02 -1.20 -0.24 0.05 -0.01 -1.04 -0.24 0.05 -0.02 -0.88 -0.24 0.06 -0.04 -0.72 -0.24 0.07 -0.08 -0.56 -0.24 0.05 -0.06 -0.40 -0.24 0.01 -0.06 -0.24 -0.24 -0.03 -0.07 -0.08 -0.24 -0.06 -0.06 0.08 -0.24 -0.07 -0.03 0.24 -0.24 -0.05 -0.05 0.40 -0.24 -0.03 -0.02 0.56 -0.24 -0.02 0.02 0.72 -0.24 -0.01 -0.01 0.88 -0.24 -0.00 -0.06 1.04 -0.24 0.02 -0.04 1.20 -0.24 -0.00 0.02 1.36 -0.24 -0.01 0.07 1.52 -0.24 0.02 0.06 1.68 -0.24 0.05 0.03 1.84 -0.24 0.08 -0.01 2.00 -0.24 0.13 -0.01 2.16 -0.24 0.15 -0.01 2.32 -0.24 0.14 -0.00 2.48 -0.24 0.12 -0.05 2.64 -0.24 0.21 -0.08 2.80 -0.24 0.40 -0.13 2.96 -0.24 0.56 -0.19 3.12 -0.24 0.59 -0.23 -3.12 -0.08 -0.56 0.05 -2.96 -0.08 -0.53 0.01 -2.80 -0.08 -0.36 -0.06 -2.64 -0.08 -0.20 -0.11 -2.48 -0.08 -0.14 -0.09 -2.32 -0.08 -0.17 -0.03 -2.16 -0.08 -0.13 0.06 -2.00 -0.08 -0.05 0.10 -1.84 -0.08 -0.00 0.11 -1.68 -0.08 0.03 0.08 -1.52 -0.08 0.02 0.02 -1.36 -0.08 0.03 -0.03 -1.20 -0.08 0.02 -0.04 -1.04 -0.08 0.01 -0.03 -0.88 -0.08 0.02 -0.05 -0.72 -0.08 0.05 -0.07 -0.56 -0.08 0.02 -0.06 -0.40 -0.08 -0.01 -0.07 -0.24 -0.08 -0.02 -0.06 -0.08 -0.08 -0.05 -0.02 0.08 -0.08 -0.05 -0.02 0.24 -0.08 -0.03 -0.00 0.40 -0.08 -0.04 0.00 0.56 -0.08 -0.06 0.02 0.72 -0.08 -0.05 -0.01 0.88 -0.08 -0.01 -0.03 1.04 -0.08 -0.01 -0.03 1.20 -0.08 -0.02 0.03 1.36 -0.08 -0.02 0.06 1.52 -0.08 0.01 0.07 1.68 -0.08 0.04 0.02 1.84 -0.08 0.07 -0.03 2.00 -0.08 0.12 -0.06 2.16 -0.08 0.17 -0.06 2.32 -0.08 0.17 -0.04 2.48 -0.08 0.14 -0.05 2.64 -0.08 0.21 -0.08 2.80 -0.08 0.40 -0.09 2.96 -0.08 0.54 -0.08 3.12 -0.08 0.57 -0.10 -3.12 0.08 -0.60 0.19 -2.96 0.08 -0.53 0.15 -2.80 0.08 -0.39 0.07 -2.64 0.08 -0.20 -0.02 -2.48 0.08 -0.16 -0.01 -2.32 0.08 -0.14 0.04 -2.16 0.08 -0.11 0.08 -2.00 0.08 -0.06 0.10 -1.84 0.08 -0.04 0.10 -1.68 0.08 -0.01 0.06 -1.52 0.08 0.01 -0.02 -1.36 0.08 0.01 -0.06 -1.20 0.08 -0.00 -0.05 -1.04 0.08 -0.01 -0.03 -0.88 0.08 -0.01 -0.03 -0.72 0.08 -0.01 -0.04 -0.56 0.08 -0.00 -0.05 -0.40 0.08 -0.01 -0.05 -0.24 0.08 -0.03 -0.03 -0.08 0.08 -0.04 -0.03 0.08 0.08 -0.05 -0.02 0.24 0.08 -0.06 -0.02 0.40 0.08 -0.09 0.01 0.56 0.08 -0.12 0.00 0.72 0.08 -0.09 -0.01 0.88 0.08 -0.03 -0.03 1.04 0.08 -0.01 -0.01 1.20 0.08 -0.01 0.02 1.36 0.08 0.00 0.06 1.52 0.08 0.06 0.04 1.68 0.08 0.06 -0.01 1.84 0.08 0.04 -0.06 2.00 0.08 0.08 -0.08 2.16 0.08 0.14 -0.08 2.32 0.08 0.16 -0.07 2.48 0.08 0.17 -0.05 2.64 0.08 0.24 -0.02 2.80 0.08 0.39 0.03 2.96 0.08 0.53 0.06 3.12 0.08 0.56 0.09 -3.12 0.24 -0.64 0.32 -2.96 0.24 -0.58 0.30 -2.80 0.24 -0.39 0.20 -2.64 0.24 -0.24 0.09 -2.48 0.24 -0.16 0.05 -2.32 0.24 -0.14 0.07 -2.16 0.24 -0.09 0.08 -2.00 0.24 -0.04 0.08 -1.84 0.24 -0.04 0.06 -1.68 0.24 -0.02 0.00 -1.52 0.24 -0.01 -0.05 -1.36 0.24 0.01 -0.06 -1.20 0.24 0.00 -0.01 -1.04 0.24 0.01 -0.00 -0.88 0.24 -0.01 -0.03 -0.72 0.24 -0.03 -0.05 -0.56 0.24 -0.02 -0.01 -0.40 0.24 -0.04 -0.00 -0.24 0.24 -0.05 -0.04 -0.08 0.24 -0.07 -0.04 0.08 0.24 -0.08 -0.03 0.24 0.24 -0.08 -0.02 0.40 0.24 -0.10 -0.02 0.56 0.24 -0.08 0.01 0.72 0.24 -0.07 -0.01 0.88 0.24 -0.02 -0.02 1.04 0.24 -0.02 -0.04 1.20 0.24 -0.01 0.00 1.36 0.24 0.03 0.02 1.52 0.24 0.09 0.01 1.68 0.24 0.10 -0.03 1.84 0.24 0.06 -0.05 2.00 0.24 0.03 -0.05 2.16 0.24 0.08 -0.05 2.32 0.24 0.13 -0.06 2.48 0.24 0.15 -0.02 2.64 0.24 0.24 0.07 2.80 0.24 0.38 0.13 2.96 0.24 0.52 0.18 3.12 0.24 0.62 0.21 -3.12 0.40 -0.63 0.48 -2.96 0.40 -0.56 0.41 -2.80 0.40 -0.43 0.28 -2.64 0.40 -0.24 0.16 -2.48 0.40 -0.17 0.08 -2.32 0.40 -0.13 0.06 -2.16 0.40 -0.09 0.07 -2.00 0.40 -0.07 0.09 -1.84 0.40 -0.04 0.04 -1.68 0.40 -0.00 -0.00 -1.52 0.40 -0.00 -0.04 -1.36 0.40 -0.00 -0.03 -1.20 0.40 0.02 0.00 -1.04 0.40 0.01 0.01 -0.88 0.40 0.02 -0.05 -0.72 0.40 0.01 -0.03 -0.56 0.40 -0.02 0.02 -0.40 0.40 -0.03 0.03 -0.24 0.40 -0.05 -0.03 -0.08 0.40 -0.08 -0.05 0.08 0.40 -0.08 -0.01 0.24 0.40 -0.08 0.01 0.40 0.40 -0.06 -0.01 0.56 0.40 -0.05 0.00 0.72 0.40 -0.04 -0.01 0.88 0.40 -0.01 -0.05 1.04 0.40 -0.02 -0.06 1.20 0.40 -0.02 -0.05 1.36 0.40 0.02 -0.03 1.52 0.40 0.08 -0.02 1.68 0.40 0.08 -0.03 1.84 0.40 0.04 -0.04 2.00 0.40 0.06 -0.01 2.16 0.40 0.05 -0.02 2.32 0.40 0.08 -0.01 2.48 0.40 0.11 0.06 2.64 0.40 0.22 0.14 2.80 0.40 0.37 0.23 2.96 0.40 0.52 0.29 3.12 0.40 0.60 0.34 -3.12 0.56 -0.50 0.59 -2.96 0.56 -0.49 0.50 -2.80 0.56 -0.38 0.35 -2.64 0.56 -0.23 0.19 -2.48 0.56 -0.14 0.09 -2.32 0.56 -0.10 0.05 -2.16 0.56 -0.09 0.05 -2.00 0.56 -0.08 0.07 -1.84 0.56 -0.05 0.06 -1.68 0.56 -0.00 0.01 -1.52 0.56 0.01 -0.02 -1.36 0.56 0.01 -0.01 -1.20 0.56 0.02 0.00 -1.04 0.56 0.04 -0.00 -0.88 0.56 0.03 -0.03 -0.72 0.56 0.02 -0.01 -0.56 0.56 0.02 0.04 -0.40 0.56 -0.02 0.02 -0.24 0.56 -0.02 -0.04 -0.08 0.56 -0.05 -0.05 0.08 0.56 -0.06 0.01 0.24 0.56 -0.05 0.05 0.40 0.56 -0.05 0.05 0.56 0.56 -0.06 0.02 0.72 0.56 -0.07 -0.01 0.88 0.56 -0.04 -0.03 1.04 0.56 -0.04 -0.04 1.20 0.56 -0.03 -0.04 1.36 0.56 -0.01 -0.05 1.52 0.56 0.02 -0.07 1.68 0.56 0.02 -0.07 1.84 0.56 0.04 -0.06 2.00 0.56 0.05 -0.04 2.16 0.56 0.05 -0.03 2.32 0.56 0.01 -0.00 2.48 0.56 0.05 0.06 2.64 0.56 0.21 0.17 2.80 0.56 0.40 0.27 2.96 0.56 0.51 0.39 3.12 0.56 0.55 0.46 -3.12 0.72 -0.45 0.64 -2.96 0.72 -0.42 0.56 -2.80 0.72 -0.32 0.38 -2.64 0.72 -0.18 0.23 -2.48 0.72 -0.10 0.09 -2.32 0.72 -0.04 0.02 -2.16 0.72 -0.03 -0.01 -2.00 0.72 -0.04 0.02 -1.84 0.72 -0.04 -0.00 -1.68 0.72 -0.03 -0.02 -1.52 0.72 0.01 -0.04 -1.36 0.72 0.03 -0.02 -1.20 0.72 0.05 -0.02 -1.04 0.72 0.06 -0.01 -0.88 0.72 0.05 -0.01 -0.72 0.72 0.03 0.00 -0.56 0.72 0.02 0.03 -0.40 0.72 0.01 0.05 -0.24 0.72 -0.01 -0.02 -0.08 0.72 -0.01 -0.04 0.08 0.72 -0.03 0.04 0.24 0.72 -0.02 0.10 0.40 0.72 -0.04 0.07 0.56 0.72 -0.07 0.05 0.72 0.72 -0.09 0.02 0.88 0.72 -0.08 -0.00 1.04 0.72 -0.08 -0.01 1.20 0.72 -0.05 -0.04 1.36 0.72 -0.04 -0.10 1.52 0.72 -0.03 -0.14 1.68 0.72 0.00 -0.13 1.84 0.72 0.02 -0.14 2.00 0.72 0.04 -0.12 2.16 0.72 -0.00 -0.10 2.32 0.72 -0.03 -0.03 2.48 0.72 0.01 0.06 2.64 0.72 0.21 0.19 2.80 0.72 0.40 0.34 2.96 0.72 0.49 0.49 3.12 0.72 0.49 0.56 -3.12 0.88 -0.43 0.71 -2.96 0.88 -0.37 0.59 -2.80 0.88 -0.29 0.41 -2.64 0.88 -0.17 0.24 -2.48 0.88 -0.06 0.08 -2.32 0.88 0.01 -0.04 -2.16 0.88 0.04 -0.06 -2.00 0.88 0.03 -0.04 -1.84 0.88 -0.00 -0.07 -1.68 0.88 0.02 -0.10 -1.52 0.88 0.06 -0.08 -1.36 0.88 0.06 -0.02 -1.20 0.88 0.08 -0.01 -1.04 0.88 0.07 0.02 -0.88 0.88 0.04 0.01 -0.72 0.88 0.02 0.01 -0.56 0.88 0.02 0.04 -0.40 0.88 0.01 0.04 -0.24 0.88 0.01 -0.00 -0.08 0.88 -0.03 -0.02 0.08 0.88 -0.03 0.04 0.24 0.88 -0.02 0.09 0.40 0.88 -0.01 0.08 0.56 0.88 -0.05 0.04 0.72 0.88 -0.10 0.03 0.88 0.88 -0.12 0.02 1.04 0.88 -0.14 0.00 1.20 0.88 -0.12 -0.05 1.36 0.88 -0.08 -0.11 1.52 0.88 -0.04 -0.15 1.68 0.88 -0.02 -0.17 1.84 0.88 -0.01 -0.19 2.00 0.88 -0.03 -0.20 2.16 0.88 -0.05 -0.17 2.32 0.88 -0.06 -0.07 2.48 0.88 -0.01 0.10 2.64 0.88 0.12 0.26 2.80 0.88 0.29 0.40 2.96 0.88 0.41 0.56 3.12 0.88 0.40 0.67 -3.12 1.04 -0.30 0.71 -2.96 1.04 -0.28 0.60 -2.80 1.04 -0.25 0.41 -2.64 1.04 -0.18 0.23 -2.48 1.04 -0.05 0.03 -2.32 1.04 0.04 -0.09 -2.16 1.04 0.08 -0.13 -2.00 1.04 0.07 -0.12 -1.84 1.04 0.08 -0.14 -1.68 1.04 0.10 -0.14 -1.52 1.04 0.13 -0.12 -1.36 1.04 0.11 -0.06 -1.20 1.04 0.09 -0.03 -1.04 1.04 0.06 -0.02 -0.88 1.04 0.03 0.00 -0.72 1.04 0.01 0.01 -0.56 1.04 -0.01 0.01 -0.40 1.04 0.01 0.02 -0.24 1.04 -0.01 0.01 -0.08 1.04 -0.03 0.01 0.08 1.04 -0.05 0.05 0.24 1.04 -0.01 0.10 0.40 1.04 -0.01 0.06 0.56 1.04 -0.04 0.03 0.72 1.04 -0.08 0.01 0.88 1.04 -0.13 0.00 1.04 1.04 -0.16 -0.01 1.20 1.04 -0.14 -0.03 1.36 1.04 -0.10 -0.07 1.52 1.04 -0.09 -0.12 1.68 1.04 -0.09 -0.16 1.84 1.04 -0.10 -0.19 2.00 1.04 -0.09 -0.22 2.16 1.04 -0.10 -0.20 2.32 1.04 -0.07 -0.06 2.48 1.04 -0.01 0.14 2.64 1.04 0.06 0.33 2.80 1.04 0.18 0.47 2.96 1.04 0.28 0.62 3.12 1.04 0.35 0.74 -3.12 1.20 -0.19 0.69 -2.96 1.20 -0.19 0.59 -2.80 1.20 -0.21 0.41 -2.64 1.20 -0.18 0.20 -2.48 1.20 -0.06 0.00 -2.32 1.20 0.04 -0.13 -2.16 1.20 0.09 -0.19 -2.00 1.20 0.14 -0.19 -1.84 1.20 0.18 -0.17 -1.68 1.20 0.20 -0.16 -1.52 1.20 0.19 -0.14 -1.36 1.20 0.18 -0.11 -1.20 1.20 0.12 -0.10 -1.04 1.20 0.04 -0.08 -0.88 1.20 0.01 -0.04 -0.72 1.20 -0.00 -0.02 -0.56 1.20 -0.01 -0.01 -0.40 1.20 -0.01 0.00 -0.24 1.20 0.01 0.00 -0.08 1.20 -0.01 0.02 0.08 1.20 -0.01 0.06 0.24 1.20 -0.01 0.08 0.40 1.20 -0.02 0.03 0.56 1.20 -0.03 0.00 0.72 1.20 -0.06 -0.02 0.88 1.20 -0.12 -0.04 1.04 1.20 -0.15 -0.05 1.20 1.20 -0.14 -0.01 1.36 1.20 -0.12 -0.07 1.52 1.20 -0.15 -0.12 1.68 1.20 -0.17 -0.16 1.84 1.20 -0.14 -0.19 2.00 1.20 -0.15 -0.23 2.16 1.20 -0.15 -0.17 2.32 1.20 -0.10 -0.06 2.48 1.20 -0.03 0.15 2.64 1.20 0.07 0.37 2.80 1.20 0.11 0.54 2.96 1.20 0.19 0.68 3.12 1.20 0.30 0.81 -3.12 1.36 -0.10 0.72 -2.96 1.36 -0.13 0.61 -2.80 1.36 -0.16 0.40 -2.64 1.36 -0.14 0.19 -2.48 1.36 -0.08 0.00 -2.32 1.36 0.03 -0.15 -2.16 1.36 0.10 -0.23 -2.00 1.36 0.18 -0.24 -1.84 1.36 0.23 -0.23 -1.68 1.36 0.21 -0.21 -1.52 1.36 0.22 -0.20 -1.36 1.36 0.23 -0.17 -1.20 1.36 0.16 -0.12 -1.04 1.36 0.07 -0.10 -0.88 1.36 0.00 -0.07 -0.72 1.36 0.03 -0.05 -0.56 1.36 0.02 0.01 -0.40 1.36 0.03 0.03 -0.24 1.36 0.03 0.03 -0.08 1.36 0.02 0.03 0.08 1.36 0.01 0.05 0.24 1.36 -0.01 0.07 0.40 1.36 -0.01 0.02 0.56 1.36 -0.04 0.01 0.72 1.36 -0.04 -0.04 0.88 1.36 -0.11 -0.07 1.04 1.36 -0.14 -0.07 1.20 1.36 -0.12 -0.03 1.36 1.36 -0.14 -0.08 1.52 1.36 -0.19 -0.15 1.68 1.36 -0.16 -0.20 1.84 1.36 -0.17 -0.23 2.00 1.36 -0.18 -0.23 2.16 1.36 -0.19 -0.14 2.32 1.36 -0.12 -0.00 2.48 1.36 0.00 0.19 2.64 1.36 0.09 0.39 2.80 1.36 0.10 0.60 2.96 1.36 0.12 0.75 3.12 1.36 0.17 0.85 -3.12 1.52 -0.02 0.77 -2.96 1.52 -0.05 0.63 -2.80 1.52 -0.08 0.40 -2.64 1.52 -0.08 0.18 -2.48 1.52 -0.06 0.01 -2.32 1.52 -0.01 -0.14 -2.16 1.52 0.12 -0.22 -2.00 1.52 0.22 -0.25 -1.84 1.52 0.24 -0.25 -1.68 1.52 0.22 -0.27 -1.52 1.52 0.23 -0.25 -1.36 1.52 0.24 -0.21 -1.20 1.52 0.19 -0.12 -1.04 1.52 0.09 -0.07 -0.88 1.52 0.07 -0.08 -0.72 1.52 0.07 -0.06 -0.56 1.52 0.07 0.00 -0.40 1.52 0.09 0.06 -0.24 1.52 0.06 0.04 -0.08 1.52 0.01 0.02 0.08 1.52 -0.03 0.04 0.24 1.52 -0.01 0.03 0.40 1.52 -0.02 0.01 0.56 1.52 -0.05 0.02 0.72 1.52 -0.06 -0.03 0.88 1.52 -0.10 -0.08 1.04 1.52 -0.12 -0.10 1.20 1.52 -0.13 -0.07 1.36 1.52 -0.15 -0.12 1.52 1.52 -0.17 -0.20 1.68 1.52 -0.15 -0.26 1.84 1.52 -0.14 -0.27 2.00 1.52 -0.16 -0.24 2.16 1.52 -0.17 -0.12 2.32 1.52 -0.10 0.03 2.48 1.52 -0.00 0.21 2.64 1.52 0.05 0.42 2.80 1.52 0.04 0.65 2.96 1.52 0.03 0.82 3.12 1.52 0.03 0.90 -3.12 1.68 0.05 0.77 -2.96 1.68 0.03 0.61 -2.80 1.68 -0.03 0.39 -2.64 1.68 -0.05 0.19 -2.48 1.68 -0.07 0.03 -2.32 1.68 0.01 -0.09 -2.16 1.68 0.14 -0.17 -2.00 1.68 0.26 -0.24 -1.84 1.68 0.29 -0.28 -1.68 1.68 0.27 -0.30 -1.52 1.68 0.26 -0.29 -1.36 1.68 0.26 -0.24 -1.20 1.68 0.19 -0.15 -1.04 1.68 0.16 -0.11 -0.88 1.68 0.13 -0.07 -0.72 1.68 0.12 -0.03 -0.56 1.68 0.09 0.05 -0.40 1.68 0.08 0.03 -0.24 1.68 0.07 0.01 -0.08 1.68 0.00 0.02 0.08 1.68 -0.03 0.04 0.24 1.68 -0.05 0.04 0.40 1.68 -0.05 0.01 0.56 1.68 -0.06 0.02 0.72 1.68 -0.06 -0.02 0.88 1.68 -0.08 -0.06 1.04 1.68 -0.12 -0.09 1.20 1.68 -0.16 -0.10 1.36 1.68 -0.18 -0.17 1.52 1.68 -0.19 -0.24 1.68 1.68 -0.17 -0.28 1.84 1.68 -0.14 -0.28 2.00 1.68 -0.12 -0.23 2.16 1.68 -0.11 -0.11 2.32 1.68 -0.06 0.04 2.48 1.68 -0.02 0.20 2.64 1.68 -0.04 0.36 2.80 1.68 -0.06 0.61 2.96 1.68 -0.09 0.82 3.12 1.68 -0.11 0.94 -3.12 1.84 0.14 0.69 -2.96 1.84 0.12 0.52 -2.80 1.84 0.07 0.31 -2.64 1.84 0.00 0.16 -2.48 1.84 -0.02 0.06 -2.32 1.84 0.04 -0.06 -2.16 1.84 0.13 -0.13 -2.00 1.84 0.23 -0.20 -1.84 1.84 0.30 -0.27 -1.68 1.84 0.31 -0.30 -1.52 1.84 0.32 -0.29 -1.36 1.84 0.28 -0.25 -1.20 1.84 0.22 -0.20 -1.04 1.84 0.17 -0.13 -0.88 1.84 0.16 -0.06 -0.72 1.84 0.12 0.01 -0.56 1.84 0.06 0.04 -0.40 1.84 0.05 0.04 -0.24 1.84 0.04 0.00 -0.08 1.84 0.02 0.04 0.08 1.84 -0.02 0.08 0.24 1.84 -0.06 0.08 0.40 1.84 -0.07 0.05 0.56 1.84 -0.06 0.02 0.72 1.84 -0.06 -0.04 0.88 1.84 -0.09 -0.06 1.04 1.84 -0.14 -0.08 1.20 1.84 -0.18 -0.13 1.36 1.84 -0.19 -0.21 1.52 1.84 -0.21 -0.30 1.68 1.84 -0.18 -0.33 1.84 1.84 -0.13 -0.32 2.00 1.84 -0.08 -0.26 2.16 1.84 -0.06 -0.13 2.32 1.84 -0.03 0.03 2.48 1.84 -0.05 0.15 2.64 1.84 -0.14 0.28 2.80 1.84 -0.19 0.53 2.96 1.84 -0.21 0.76 3.12 1.84 -0.24 0.91 -3.12 2.00 0.24 0.57 -2.96 2.00 0.22 0.41 -2.80 2.00 0.15 0.22 -2.64 2.00 0.08 0.09 -2.48 2.00 0.02 0.01 -2.32 2.00 0.05 -0.07 -2.16 2.00 0.12 -0.12 -2.00 2.00 0.17 -0.15 -1.84 2.00 0.23 -0.21 -1.68 2.00 0.29 -0.27 -1.52 2.00 0.31 -0.29 -1.36 2.00 0.30 -0.27 -1.20 2.00 0.24 -0.18 -1.04 2.00 0.20 -0.10 -0.88 2.00 0.16 -0.01 -0.72 2.00 0.11 0.03 -0.56 2.00 0.04 0.05 -0.40 2.00 0.04 0.07 -0.24 2.00 0.06 0.08 -0.08 2.00 0.03 0.08 0.08 2.00 -0.02 0.10 0.24 2.00 -0.05 0.11 0.40 2.00 -0.06 0.08 0.56 2.00 -0.06 0.04 0.72 2.00 -0.07 -0.03 0.88 2.00 -0.10 -0.07 1.04 2.00 -0.16 -0.10 1.20 2.00 -0.16 -0.13 1.36 2.00 -0.19 -0.22 1.52 2.00 -0.21 -0.30 1.68 2.00 -0.16 -0.33 1.84 2.00 -0.07 -0.30 2.00 2.00 -0.01 -0.25 2.16 2.00 0.02 -0.14 2.32 2.00 -0.02 -0.02 2.48 2.00 -0.09 0.08 2.64 2.00 -0.20 0.23 2.80 2.00 -0.25 0.46 2.96 2.00 -0.30 0.71 3.12 2.00 -0.36 0.80 -3.12 2.16 0.37 0.43 -2.96 2.16 0.34 0.31 -2.80 2.16 0.23 0.15 -2.64 2.16 0.12 0.01 -2.48 2.16 0.06 -0.06 -2.32 2.16 0.06 -0.10 -2.16 2.16 0.07 -0.11 -2.00 2.16 0.10 -0.09 -1.84 2.16 0.14 -0.08 -1.68 2.16 0.18 -0.17 -1.52 2.16 0.22 -0.25 -1.36 2.16 0.23 -0.22 -1.20 2.16 0.22 -0.15 -1.04 2.16 0.20 -0.05 -0.88 2.16 0.18 -0.01 -0.72 2.16 0.11 0.02 -0.56 2.16 0.07 0.05 -0.40 2.16 0.06 0.10 -0.24 2.16 0.06 0.14 -0.08 2.16 0.03 0.15 0.08 2.16 -0.01 0.13 0.24 2.16 -0.04 0.11 0.40 2.16 -0.08 0.10 0.56 2.16 -0.10 0.07 0.72 2.16 -0.09 0.02 0.88 2.16 -0.12 -0.05 1.04 2.16 -0.14 -0.11 1.20 2.16 -0.17 -0.16 1.36 2.16 -0.19 -0.19 1.52 2.16 -0.15 -0.22 1.68 2.16 -0.09 -0.22 1.84 2.16 0.00 -0.23 2.00 2.16 0.07 -0.20 2.16 2.16 0.08 -0.14 2.32 2.16 0.02 -0.08 2.48 2.16 -0.10 0.01 2.64 2.16 -0.21 0.16 2.80 2.16 -0.25 0.43 2.96 2.16 -0.34 0.64 3.12 2.16 -0.42 0.74 -3.12 2.32 0.47 0.31 -2.96 2.32 0.40 0.24 -2.80 2.32 0.27 0.08 -2.64 2.32 0.14 -0.07 -2.48 2.32 0.07 -0.13 -2.32 2.32 0.06 -0.15 -2.16 2.32 0.05 -0.11 -2.00 2.32 0.06 -0.04 -1.84 2.32 0.08 -0.00 -1.68 2.32 0.09 -0.04 -1.52 2.32 0.09 -0.10 -1.36 2.32 0.11 -0.10 -1.20 2.32 0.16 -0.05 -1.04 2.32 0.19 -0.04 -0.88 2.32 0.17 -0.02 -0.72 2.32 0.13 0.02 -0.56 2.32 0.08 0.09 -0.40 2.32 0.06 0.14 -0.24 2.32 0.03 0.17 -0.08 2.32 0.01 0.16 0.08 2.32 -0.01 0.15 0.24 2.32 -0.05 0.14 0.40 2.32 -0.10 0.11 0.56 2.32 -0.11 0.10 0.72 2.32 -0.11 0.07 0.88 2.32 -0.07 -0.01 1.04 2.32 -0.08 -0.07 1.20 2.32 -0.11 -0.10 1.36 2.32 -0.07 -0.09 1.52 2.32 -0.02 -0.06 1.68 2.32 0.03 -0.06 1.84 2.32 0.06 -0.12 2.00 2.32 0.07 -0.18 2.16 2.32 0.10 -0.16 2.32 2.32 0.08 -0.10 2.48 2.32 -0.02 -0.04 2.64 2.32 -0.16 0.11 2.80 2.32 -0.28 0.31 2.96 2.32 -0.41 0.52 3.12 2.32 -0.53 0.60 -3.12 2.48 0.49 0.24 -2.96 2.48 0.43 0.13 -2.80 2.48 0.30 -0.03 -2.64 2.48 0.18 -0.19 -2.48 2.48 0.08 -0.22 -2.32 2.48 0.06 -0.21 -2.16 2.48 0.04 -0.15 -2.00 2.48 0.03 -0.09 -1.84 2.48 0.01 -0.01 -1.68 2.48 0.00 0.05 -1.52 2.48 -0.04 0.07 -1.36 2.48 -0.01 0.10 -1.20 2.48 0.06 0.11 -1.04 2.48 0.10 0.06 -0.88 2.48 0.08 0.03 -0.72 2.48 0.05 0.08 -0.56 2.48 0.03 0.15 -0.40 2.48 0.01 0.19 -0.24 2.48 -0.01 0.19 -0.08 2.48 -0.05 0.19 0.08 2.48 -0.04 0.19 0.24 2.48 -0.06 0.19 0.40 2.48 -0.07 0.18 0.56 2.48 -0.08 0.16 0.72 2.48 -0.03 0.12 0.88 2.48 0.02 0.09 1.04 2.48 0.04 0.06 1.20 2.48 0.08 0.05 1.36 2.48 0.12 0.05 1.52 2.48 0.18 0.03 1.68 2.48 0.18 0.00 1.84 2.48 0.18 -0.06 2.00 2.48 0.11 -0.20 2.16 2.48 0.13 -0.22 2.32 2.48 0.14 -0.18 2.48 2.48 0.05 -0.11 2.64 2.48 -0.11 -0.01 2.80 2.48 -0.29 0.13 2.96 2.48 -0.48 0.29 3.12 2.48 -0.60 0.42 -3.12 2.64 0.44 0.15 -2.96 2.64 0.39 0.02 -2.80 2.64 0.29 -0.22 -2.64 2.64 0.17 -0.36 -2.48 2.64 0.07 -0.35 -2.32 2.64 0.02 -0.30 -2.16 2.64 0.01 -0.28 -2.00 2.64 -0.01 -0.20 -1.84 2.64 -0.06 -0.06 -1.68 2.64 -0.11 0.03 -1.52 2.64 -0.12 0.11 -1.36 2.64 -0.10 0.17 -1.20 2.64 -0.07 0.23 -1.04 2.64 -0.04 0.21 -0.88 2.64 -0.05 0.18 -0.72 2.64 -0.06 0.19 -0.56 2.64 -0.06 0.26 -0.40 2.64 -0.05 0.31 -0.24 2.64 -0.07 0.32 -0.08 2.64 -0.08 0.33 0.08 2.64 -0.08 0.31 0.24 2.64 -0.03 0.30 0.40 2.64 -0.01 0.30 0.56 2.64 0.05 0.29 0.72 2.64 0.09 0.24 0.88 2.64 0.14 0.20 1.04 2.64 0.19 0.19 1.20 2.64 0.26 0.18 1.36 2.64 0.30 0.12 1.52 2.64 0.33 0.03 1.68 2.64 0.34 -0.05 1.84 2.64 0.32 -0.10 2.00 2.64 0.27 -0.21 2.16 2.64 0.20 -0.33 2.32 2.64 0.15 -0.35 2.48 2.64 0.08 -0.28 2.64 2.64 -0.03 -0.17 2.80 2.64 -0.23 -0.06 2.96 2.64 -0.46 0.10 3.12 2.64 -0.55 0.22 -3.12 2.80 0.38 -0.04 -2.96 2.80 0.31 -0.20 -2.80 2.80 0.19 -0.39 -2.64 2.80 0.08 -0.49 -2.48 2.80 -0.01 -0.48 -2.32 2.80 -0.04 -0.47 -2.16 2.80 -0.11 -0.41 -2.00 2.80 -0.14 -0.29 -1.84 2.80 -0.21 -0.16 -1.68 2.80 -0.24 -0.01 -1.52 2.80 -0.23 0.07 -1.36 2.80 -0.22 0.16 -1.20 2.80 -0.26 0.27 -1.04 2.80 -0.23 0.33 -0.88 2.80 -0.17 0.34 -0.72 2.80 -0.18 0.38 -0.56 2.80 -0.17 0.45 -0.40 2.80 -0.14 0.49 -0.24 2.80 -0.12 0.52 -0.08 2.80 -0.10 0.54 0.08 2.80 -0.04 0.52 0.24 2.80 0.02 0.49 0.40 2.80 0.10 0.46 0.56 2.80 0.18 0.47 0.72 2.80 0.26 0.41 0.88 2.80 0.29 0.33 1.04 2.80 0.32 0.28 1.20 2.80 0.40 0.25 1.36 2.80 0.45 0.15 1.52 2.80 0.46 0.01 1.68 2.80 0.45 -0.13 1.84 2.80 0.48 -0.19 2.00 2.80 0.44 -0.29 2.16 2.80 0.34 -0.44 2.32 2.80 0.21 -0.57 2.48 2.80 0.16 -0.49 2.64 2.80 0.06 -0.37 2.80 2.80 -0.12 -0.22 2.96 2.80 -0.33 -0.12 3.12 2.80 -0.43 -0.06 -3.12 2.96 0.25 -0.25 -2.96 2.96 0.16 -0.38 -2.80 2.96 0.04 -0.54 -2.64 2.96 -0.04 -0.61 -2.48 2.96 -0.08 -0.70 -2.32 2.96 -0.14 -0.66 -2.16 2.96 -0.21 -0.56 -2.00 2.96 -0.27 -0.40 -1.84 2.96 -0.28 -0.24 -1.68 2.96 -0.34 -0.04 -1.52 2.96 -0.36 0.07 -1.36 2.96 -0.40 0.15 -1.20 2.96 -0.42 0.29 -1.04 2.96 -0.39 0.41 -0.88 2.96 -0.31 0.48 -0.72 2.96 -0.29 0.58 -0.56 2.96 -0.29 0.62 -0.40 2.96 -0.24 0.62 -0.24 2.96 -0.17 0.65 -0.08 2.96 -0.09 0.73 0.08 2.96 0.01 0.74 0.24 2.96 0.12 0.69 0.40 2.96 0.22 0.64 0.56 2.96 0.33 0.60 0.72 2.96 0.39 0.48 0.88 2.96 0.46 0.41 1.04 2.96 0.47 0.35 1.20 2.96 0.51 0.28 1.36 2.96 0.56 0.16 1.52 2.96 0.58 -0.01 1.68 2.96 0.55 -0.20 1.84 2.96 0.57 -0.32 2.00 2.96 0.53 -0.40 2.16 2.96 0.45 -0.51 2.32 2.96 0.34 -0.61 2.48 2.96 0.26 -0.64 2.64 2.96 0.15 -0.49 2.80 2.96 -0.02 -0.36 2.96 2.96 -0.20 -0.26 3.12 2.96 -0.31 -0.20 -3.12 3.12 0.06 -0.32 -2.96 3.12 0.04 -0.44 -2.80 3.12 -0.06 -0.61 -2.64 3.12 -0.11 -0.72 -2.48 3.12 -0.13 -0.80 -2.32 3.12 -0.21 -0.78 -2.16 3.12 -0.28 -0.66 -2.00 3.12 -0.29 -0.49 -1.84 3.12 -0.32 -0.28 -1.68 3.12 -0.38 -0.02 -1.52 3.12 -0.48 0.08 -1.36 3.12 -0.52 0.16 -1.20 3.12 -0.50 0.29 -1.04 3.12 -0.45 0.46 -0.88 3.12 -0.41 0.59 -0.72 3.12 -0.38 0.68 -0.56 3.12 -0.36 0.72 -0.40 3.12 -0.29 0.65 -0.24 3.12 -0.19 0.67 -0.08 3.12 -0.06 0.82 0.08 3.12 0.04 0.84 0.24 3.12 0.17 0.78 0.40 3.12 0.30 0.74 0.56 3.12 0.40 0.63 0.72 3.12 0.46 0.49 0.88 3.12 0.54 0.43 1.04 3.12 0.60 0.42 1.20 3.12 0.58 0.31 1.36 3.12 0.61 0.14 1.52 3.12 0.65 -0.02 1.68 3.12 0.64 -0.22 1.84 3.12 0.62 -0.40 2.00 3.12 0.58 -0.46 2.16 3.12 0.50 -0.50 2.32 3.12 0.43 -0.61 2.48 3.12 0.34 -0.60 2.64 3.12 0.16 -0.61 2.80 3.12 0.05 -0.42 2.96 3.12 -0.13 -0.24 3.12 3.12 -0.24 -0.22
\ No newline at end of file
diff --git a/tutorials/notebooks/astropy-coordinates/gaia_results.fits b/tutorials/notebooks/astropy-coordinates/gaia_results.fits
new file mode 100644
index 000000000..c0c812380
--- /dev/null
+++ b/tutorials/notebooks/astropy-coordinates/gaia_results.fits
@@ -0,0 +1,1069 @@
+SIMPLE = T / conforms to FITS standard BITPIX = 8 / array data type NAXIS = 0 / number of array dimensions EXTEND = T END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 76 / length of dimension 1 NAXIS2 = 4938 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 11 / number of table fields TTYPE1 = 'source_id' TFORM1 = 'K ' TTYPE2 = 'ra ' TFORM2 = 'D ' TUNIT2 = 'deg ' TTYPE3 = 'dec ' TFORM3 = 'D ' TUNIT3 = 'deg ' TTYPE4 = 'parallax' TFORM4 = 'D ' TUNIT4 = 'mas ' TTYPE5 = 'parallax_error' TFORM5 = 'D ' TUNIT5 = 'mas ' TTYPE6 = 'pmra ' TFORM6 = 'D ' TUNIT6 = 'mas yr-1' TTYPE7 = 'pmdec ' TFORM7 = 'D ' TUNIT7 = 'mas yr-1' TTYPE8 = 'radial_velocity' TFORM8 = 'D ' TUNIT8 = 'km s-1 ' TTYPE9 = 'phot_g_mean_mag' TFORM9 = 'E ' TUNIT9 = 'mag ' TTYPE10 = 'phot_bp_mean_mag' TFORM10 = 'E ' TUNIT10 = 'mag ' TTYPE11 = 'phot_rp_mean_mag' TFORM11 = 'E ' TUNIT11 = 'mag ' COMMENT --BEGIN-ASTROPY-SERIALIZED-COLUMNS-- COMMENT datatype: COMMENT - name: source_id COMMENT datatype: int64 COMMENT description: Unique source identifier (unique within a particular Da\ COMMENT ta Release) COMMENT meta: !!omap COMMENT - {ucd: meta.id} COMMENT - name: ra COMMENT unit: deg COMMENT datatype: float64 COMMENT description: Right ascension COMMENT meta: !!omap COMMENT - {ucd: pos.eq.ra;meta.main} COMMENT - {utype: Char.SpatialAxis.Coverage.Location.Coord.Position2D.Value2\ COMMENT .C1} COMMENT - name: dec COMMENT unit: deg COMMENT datatype: float64 COMMENT description: Declination COMMENT meta: !!omap COMMENT - {ucd: pos.eq.dec;meta.main} COMMENT - {utype: Char.SpatialAxis.Coverage.Location.Coord.Position2D.Value2\ COMMENT .C2} COMMENT - name: parallax COMMENT unit: mas COMMENT datatype: float64 COMMENT description: Parallax COMMENT meta: !!omap COMMENT - {ucd: pos.parallax} COMMENT - name: parallax_error COMMENT unit: mas COMMENT datatype: float64 COMMENT description: Standard error of parallax COMMENT meta: !!omap COMMENT - {ucd: stat.error;pos.parallax} COMMENT - name: pmra COMMENT unit: mas / yr COMMENT datatype: float64 COMMENT description: Proper motion in right ascension direction COMMENT meta: !!omap COMMENT - {ucd: pos.pm;pos.eq.ra} COMMENT - name: pmdec COMMENT unit: mas / yr COMMENT datatype: float64 COMMENT description: Proper motion in declination direction COMMENT meta: !!omap COMMENT - {ucd: pos.pm;pos.eq.dec} COMMENT - name: radial_velocity COMMENT unit: km / s COMMENT datatype: float64 COMMENT description: Radial velocity COMMENT meta: !!omap COMMENT - {ucd: spect.dopplerVeloc.opt} COMMENT - name: phot_g_mean_mag COMMENT unit: mag COMMENT datatype: float32 COMMENT description: G-band mean magnitude COMMENT meta: !!omap COMMENT - {ucd: phot.mag;stat.mean;em.opt} COMMENT - name: phot_bp_mean_mag COMMENT unit: mag COMMENT datatype: float32 COMMENT description: Integrated BP mean magnitude COMMENT meta: !!omap COMMENT - {ucd: phot.mag;stat.mean} COMMENT - name: phot_rp_mean_mag COMMENT unit: mag COMMENT datatype: float32 COMMENT description: Integrated RP mean magnitude COMMENT meta: !!omap COMMENT - {ucd: phot.mag;stat.mean} COMMENT meta: COMMENT __serialized_columns__: {} COMMENT --END-ASTROPY-SERIALIZED-COLUMNS-- END $@(2XC@UPH'?ټ?g@~¶=@lR{Dx@Au-A{WAkQ $@(K