From be6b080fc992ec2f0c63c59d89a49bcff8924acd Mon Sep 17 00:00:00 2001 From: Allen Downey Date: Fri, 26 Mar 2021 11:13:23 -0400 Subject: [PATCH] Updating solutions --- soln/03_motion.ipynb | 256 ++++++++++++++++++----------------- soln/04_select.ipynb | 119 ++++++++-------- soln/05_join.ipynb | 314 ++++++++++++++++++++++++++++++++----------- soln/06_photo.ipynb | 224 +++++++++++++----------------- soln/07_plot.ipynb | 143 ++++++++------------ 5 files changed, 577 insertions(+), 479 deletions(-) diff --git a/soln/03_motion.ipynb b/soln/03_motion.ipynb index 537298c..da44587 100644 --- a/soln/03_motion.ipynb +++ b/soln/03_motion.ipynb @@ -103,7 +103,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 55, "metadata": { "tags": [ "remove-cell" @@ -117,7 +117,7 @@ "IN_COLAB = 'google.colab' in sys.modules\n", "\n", "if IN_COLAB:\n", - " !pip install astroquery astro-gala wget" + " !pip install astroquery astro-gala" ] }, { @@ -135,7 +135,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 56, "metadata": {}, "outputs": [], "source": [ @@ -161,7 +161,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 57, "metadata": {}, "outputs": [], "source": [ @@ -182,7 +182,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 58, "metadata": {}, "outputs": [ { @@ -195,10 +195,11 @@ " ra float64 deg Right ascension\n", " dec float64 deg Declination\n", " pmra float64 mas / yr Proper motion in right ascension direction\n", - " pmdec float64 mas / yr Proper motion in declination direction" + " pmdec float64 mas / yr Proper motion in declination direction\n", + " parallax float64 mas Parallax" ] }, - "execution_count": 3, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } @@ -220,16 +221,16 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "['source_id', 'ra', 'dec', 'pmra', 'pmdec']" + "['source_id', 'ra', 'dec', 'pmra', 'pmdec', 'parallax']" ] }, - "execution_count": 4, + "execution_count": 59, "metadata": {}, "output_type": "execute_result" } @@ -247,7 +248,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 60, "metadata": {}, "outputs": [ { @@ -311,7 +312,7 @@ " 143.7702681295401" ] }, - "execution_count": 5, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } @@ -329,7 +330,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 61, "metadata": {}, "outputs": [ { @@ -338,7 +339,7 @@ "astropy.table.column.Column" ] }, - "execution_count": 6, + "execution_count": 61, "metadata": {}, "output_type": "execute_result" } @@ -356,30 +357,30 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/html": [ "Row index=0\n", - "\n", - "\n", - "\n", - "\n", - "\n", + "
source_idradecpmrapmdec
degdegmas / yrmas / yr
int64float64float64float64float64
637987125186749568142.4830193599102321.75771616932985-2.51683846838757662.941813096629439
\n", + "\n", + "\n", + "\n", + "\n", "
source_idradecpmrapmdecparallax
degdegmas / yrmas / yrmas
int64float64float64float64float64float64
637987125186749568142.4830193599102321.75771616932985-2.51683846838757662.941813096629439-0.2573448962333354
" ], "text/plain": [ "\n", - " source_id ra dec pmra pmdec \n", - " deg deg mas / yr mas / yr \n", - " int64 float64 float64 float64 float64 \n", - "------------------ ------------------ ----------------- ------------------- -----------------\n", - "637987125186749568 142.48301935991023 21.75771616932985 -2.5168384683875766 2.941813096629439" + " source_id ra dec pmra pmdec parallax \n", + " deg deg mas / yr mas / yr mas \n", + " int64 float64 float64 float64 float64 float64 \n", + "------------------ ------------------ ----------------- ------------------- ----------------- -------------------\n", + "637987125186749568 142.48301935991023 21.75771616932985 -2.5168384683875766 2.941813096629439 -0.2573448962333354" ] }, - "execution_count": 7, + "execution_count": 62, "metadata": {}, "output_type": "execute_result" } @@ -397,7 +398,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 63, "metadata": {}, "outputs": [ { @@ -406,7 +407,7 @@ "astropy.table.row.Row" ] }, - "execution_count": 8, + "execution_count": 63, "metadata": {}, "output_type": "execute_result" } @@ -427,7 +428,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 64, "metadata": {}, "outputs": [ { @@ -436,7 +437,7 @@ "142.48301935991023" ] }, - "execution_count": 9, + "execution_count": 64, "metadata": {}, "output_type": "execute_result" } @@ -454,7 +455,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 65, "metadata": {}, "outputs": [ { @@ -463,7 +464,7 @@ "142.48301935991023" ] }, - "execution_count": 10, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } @@ -493,7 +494,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 66, "metadata": {}, "outputs": [], "source": [ @@ -533,7 +534,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 67, "metadata": {}, "outputs": [ { @@ -589,7 +590,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 68, "metadata": { "tags": [ "hide-cell" @@ -627,7 +628,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 69, "metadata": {}, "outputs": [], "source": [ @@ -649,7 +650,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 70, "metadata": {}, "outputs": [], "source": [ @@ -679,7 +680,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 71, "metadata": {}, "outputs": [], "source": [ @@ -724,7 +725,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 72, "metadata": {}, "outputs": [], "source": [ @@ -748,7 +749,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 73, "metadata": { "scrolled": true }, @@ -793,7 +794,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 74, "metadata": {}, "outputs": [ { @@ -802,7 +803,7 @@ "astropy.table.table.Table" ] }, - "execution_count": 19, + "execution_count": 74, "metadata": {}, "output_type": "execute_result" } @@ -820,7 +821,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 75, "metadata": {}, "outputs": [ { @@ -829,7 +830,7 @@ "astropy.coordinates.sky_coordinate.SkyCoord" ] }, - "execution_count": 20, + "execution_count": 75, "metadata": {}, "output_type": "execute_result" } @@ -857,7 +858,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 76, "metadata": {}, "outputs": [], "source": [ @@ -875,16 +876,16 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(140339, 5)" + "(140339, 6)" ] }, - "execution_count": 23, + "execution_count": 77, "metadata": {}, "output_type": "execute_result" } @@ -902,7 +903,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 78, "metadata": {}, "outputs": [ { @@ -931,6 +932,7 @@ " dec\n", " pmra\n", " pmdec\n", + " parallax\n", " \n", " \n", " \n", @@ -941,6 +943,7 @@ " 21.757716\n", " -2.516838\n", " 2.941813\n", + " -0.257345\n", " \n", " \n", " 1\n", @@ -949,6 +952,7 @@ " 22.476168\n", " 2.662702\n", " -12.165984\n", + " 0.422728\n", " \n", " \n", " 2\n", @@ -957,6 +961,7 @@ " 22.166932\n", " 18.306747\n", " -7.950660\n", + " 0.103640\n", " \n", " \n", " 3\n", @@ -965,6 +970,7 @@ " 22.227920\n", " 0.987786\n", " -2.584105\n", + " -0.857327\n", " \n", " \n", " 4\n", @@ -973,21 +979,22 @@ " 22.110783\n", " 0.244439\n", " -4.941079\n", + " 0.099625\n", " \n", " \n", "\n", "" ], "text/plain": [ - " source_id ra dec pmra pmdec\n", - "0 637987125186749568 142.483019 21.757716 -2.516838 2.941813\n", - "1 638285195917112960 142.254529 22.476168 2.662702 -12.165984\n", - "2 638073505568978688 142.645286 22.166932 18.306747 -7.950660\n", - "3 638086386175786752 142.577394 22.227920 0.987786 -2.584105\n", - "4 638049655615392384 142.589136 22.110783 0.244439 -4.941079" + " source_id ra dec pmra pmdec parallax\n", + "0 637987125186749568 142.483019 21.757716 -2.516838 2.941813 -0.257345\n", + "1 638285195917112960 142.254529 22.476168 2.662702 -12.165984 0.422728\n", + "2 638073505568978688 142.645286 22.166932 18.306747 -7.950660 0.103640\n", + "3 638086386175786752 142.577394 22.227920 0.987786 -2.584105 -0.857327\n", + "4 638049655615392384 142.589136 22.110783 0.244439 -4.941079 0.099625" ] }, - "execution_count": 24, + "execution_count": 78, "metadata": {}, "output_type": "execute_result" } @@ -1012,16 +1019,16 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(140339, 7)" + "(140339, 8)" ] }, - "execution_count": 25, + "execution_count": 79, "metadata": {}, "output_type": "execute_result" } @@ -1041,16 +1048,16 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(140339, 9)" + "(140339, 10)" ] }, - "execution_count": 26, + "execution_count": 80, "metadata": {}, "output_type": "execute_result" } @@ -1082,7 +1089,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 81, "metadata": {}, "outputs": [ { @@ -1111,6 +1118,7 @@ " dec\n", " pmra\n", " pmdec\n", + " parallax\n", " phi1\n", " phi2\n", " pm_phi1\n", @@ -1129,6 +1137,7 @@ " 140339.000000\n", " 140339.000000\n", " 140339.000000\n", + " 140339.000000\n", " \n", " \n", " mean\n", @@ -1137,6 +1146,7 @@ " 26.780285\n", " -2.484404\n", " -6.100777\n", + " 0.179492\n", " -50.091158\n", " -1.803301\n", " -0.868963\n", @@ -1149,6 +1159,7 @@ " 3.052592\n", " 5.913939\n", " 7.202047\n", + " 0.759590\n", " 2.892344\n", " 3.444398\n", " 6.657714\n", @@ -1161,6 +1172,7 @@ " 19.286617\n", " -106.755260\n", " -138.065163\n", + " -15.287602\n", " -54.999989\n", " -8.029159\n", " -115.275637\n", @@ -1173,6 +1185,7 @@ " 24.592490\n", " -5.038789\n", " -8.341561\n", + " -0.035981\n", " -52.602952\n", " -4.750426\n", " -2.948723\n", @@ -1185,6 +1198,7 @@ " 26.746261\n", " -1.834943\n", " -4.689596\n", + " 0.362708\n", " -50.147362\n", " -1.671502\n", " 0.585037\n", @@ -1197,6 +1211,7 @@ " 28.990500\n", " 0.452893\n", " -1.937809\n", + " 0.657637\n", " -47.593279\n", " 1.160514\n", " 3.001768\n", @@ -1209,6 +1224,7 @@ " 34.285481\n", " 104.319923\n", " 20.981070\n", + " 0.999957\n", " -44.999985\n", " 4.014609\n", " 39.802471\n", @@ -1229,28 +1245,28 @@ "75% 6.976579e+17 146.607350 28.990500 0.452893 \n", "max 7.974418e+17 152.777393 34.285481 104.319923 \n", "\n", - " pmdec phi1 phi2 pm_phi1 \\\n", + " pmdec parallax phi1 phi2 \\\n", "count 140339.000000 140339.000000 140339.000000 140339.000000 \n", - "mean -6.100777 -50.091158 -1.803301 -0.868963 \n", - "std 7.202047 2.892344 3.444398 6.657714 \n", - "min -138.065163 -54.999989 -8.029159 -115.275637 \n", - "25% -8.341561 -52.602952 -4.750426 -2.948723 \n", - "50% -4.689596 -50.147362 -1.671502 0.585037 \n", - "75% -1.937809 -47.593279 1.160514 3.001768 \n", - "max 20.981070 -44.999985 4.014609 39.802471 \n", + "mean -6.100777 0.179492 -50.091158 -1.803301 \n", + "std 7.202047 0.759590 2.892344 3.444398 \n", + "min -138.065163 -15.287602 -54.999989 -8.029159 \n", + "25% -8.341561 -0.035981 -52.602952 -4.750426 \n", + "50% -4.689596 0.362708 -50.147362 -1.671502 \n", + "75% -1.937809 0.657637 -47.593279 1.160514 \n", + "max 20.981070 0.999957 -44.999985 4.014609 \n", "\n", - " pm_phi2 \n", - "count 140339.000000 \n", - "mean 1.409208 \n", - "std 6.518615 \n", - "min -161.150142 \n", - "25% -1.107128 \n", - "50% 1.987149 \n", - "75% 4.628965 \n", - "max 79.275199 " + " pm_phi1 pm_phi2 \n", + "count 140339.000000 140339.000000 \n", + "mean -0.868963 1.409208 \n", + "std 6.657714 6.518615 \n", + "min -115.275637 -161.150142 \n", + "25% -2.948723 -1.107128 \n", + "50% 0.585037 1.987149 \n", + "75% 3.001768 4.628965 \n", + "max 39.802471 79.275199 " ] }, - "execution_count": 27, + "execution_count": 81, "metadata": {}, "output_type": "execute_result" } @@ -1274,7 +1290,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 82, "metadata": { "tags": [ "hide-cell" @@ -1324,7 +1340,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 83, "metadata": {}, "outputs": [ { @@ -1359,7 +1375,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 84, "metadata": {}, "outputs": [ { @@ -1414,7 +1430,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 85, "metadata": {}, "outputs": [ { @@ -1423,7 +1439,7 @@ "pandas.core.series.Series" ] }, - "execution_count": 31, + "execution_count": 85, "metadata": {}, "output_type": "execute_result" } @@ -1444,7 +1460,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 86, "metadata": {}, "outputs": [ { @@ -1453,7 +1469,7 @@ "pandas.core.series.Series" ] }, - "execution_count": 32, + "execution_count": 86, "metadata": {}, "output_type": "execute_result" } @@ -1475,7 +1491,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 87, "metadata": {}, "outputs": [ { @@ -1489,7 +1505,7 @@ "Name: phi2, dtype: bool" ] }, - "execution_count": 33, + "execution_count": 87, "metadata": {}, "output_type": "execute_result" } @@ -1508,7 +1524,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 88, "metadata": {}, "outputs": [], "source": [ @@ -1533,7 +1549,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 89, "metadata": {}, "outputs": [ { @@ -1542,7 +1558,7 @@ "25084" ] }, - "execution_count": 35, + "execution_count": 89, "metadata": {}, "output_type": "execute_result" } @@ -1560,7 +1576,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 90, "metadata": {}, "outputs": [ { @@ -1569,7 +1585,7 @@ "pandas.core.frame.DataFrame" ] }, - "execution_count": 36, + "execution_count": 90, "metadata": {}, "output_type": "execute_result" } @@ -1591,7 +1607,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 91, "metadata": {}, "outputs": [ { @@ -1600,7 +1616,7 @@ "25084" ] }, - "execution_count": 37, + "execution_count": 91, "metadata": {}, "output_type": "execute_result" } @@ -1618,7 +1634,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 92, "metadata": {}, "outputs": [ { @@ -1627,7 +1643,7 @@ "0.1787386257562046" ] }, - "execution_count": 53, + "execution_count": 92, "metadata": {}, "output_type": "execute_result" } @@ -1654,7 +1670,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 93, "metadata": {}, "outputs": [], "source": [ @@ -1683,7 +1699,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 94, "metadata": {}, "outputs": [ { @@ -1733,7 +1749,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 95, "metadata": {}, "outputs": [], "source": [ @@ -1752,7 +1768,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 96, "metadata": {}, "outputs": [], "source": [ @@ -1765,7 +1781,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 97, "metadata": {}, "outputs": [], "source": [ @@ -1782,7 +1798,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 98, "metadata": {}, "outputs": [ { @@ -1814,7 +1830,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 99, "metadata": {}, "outputs": [], "source": [ @@ -1832,7 +1848,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 100, "metadata": {}, "outputs": [], "source": [ @@ -1852,7 +1868,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 101, "metadata": {}, "outputs": [ { @@ -1861,7 +1877,7 @@ "1049" ] }, - "execution_count": 46, + "execution_count": 101, "metadata": {}, "output_type": "execute_result" } @@ -1879,7 +1895,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 102, "metadata": {}, "outputs": [ { @@ -1888,7 +1904,7 @@ "1049" ] }, - "execution_count": 47, + "execution_count": 102, "metadata": {}, "output_type": "execute_result" } @@ -1907,7 +1923,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 103, "metadata": {}, "outputs": [ { @@ -1952,7 +1968,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 104, "metadata": {}, "outputs": [ { @@ -1961,7 +1977,7 @@ "astropy.table.table.Table" ] }, - "execution_count": 49, + "execution_count": 104, "metadata": {}, "output_type": "execute_result" } @@ -2004,7 +2020,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 105, "metadata": {}, "outputs": [], "source": [ @@ -2037,7 +2053,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 106, "metadata": { "tags": [ "hide-cell" @@ -2059,16 +2075,16 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "2.0090408325195312" + "2.2084197998046875" ] }, - "execution_count": 56, + "execution_count": 107, "metadata": {}, "output_type": "execute_result" } @@ -2089,7 +2105,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 108, "metadata": {}, "outputs": [ { diff --git a/soln/04_select.ipynb b/soln/04_select.ipynb index 5507820..a29734a 100644 --- a/soln/04_select.ipynb +++ b/soln/04_select.ipynb @@ -93,7 +93,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 37, "metadata": { "tags": [ "remove-cell" @@ -107,7 +107,7 @@ "IN_COLAB = 'google.colab' in sys.modules\n", "\n", "if IN_COLAB:\n", - " !pip install astroquery astro-gala wget" + " !pip install astroquery astro-gala" ] }, { @@ -116,12 +116,12 @@ "source": [ "## Reload the data\n", "\n", - "The following cells download the data from the previous lesson, if necessary, and load it into a Pandas `DataFrame`." + "You can [download the data from the previous lesson](https://github.com/AllenDowney/AstronomicalData/raw/main/data/gd1_data.hdf) or run the following cell, which downloads it if necessary." ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 38, "metadata": {}, "outputs": [], "source": [ @@ -138,9 +138,16 @@ " 'data/gd1_data.hdf')" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can reload `centerline_df` and `selected_df`." + ] + }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ @@ -178,7 +185,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 40, "metadata": {}, "outputs": [], "source": [ @@ -190,7 +197,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 41, "metadata": {}, "outputs": [], "source": [ @@ -203,7 +210,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 42, "metadata": {}, "outputs": [], "source": [ @@ -220,7 +227,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ @@ -257,7 +264,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -292,7 +299,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -346,7 +353,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -355,7 +362,7 @@ "(1049, 2)" ] }, - "execution_count": 10, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -383,16 +390,16 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 11, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -413,7 +420,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 48, "metadata": {}, "outputs": [ { @@ -423,7 +430,7 @@ " 971, 967, 1001, 969, 940], dtype=int32)" ] }, - "execution_count": 12, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -441,7 +448,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -465,7 +472,7 @@ " [ -4.42442296, -14.74641176]])" ] }, - "execution_count": 13, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } @@ -484,7 +491,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 50, "metadata": {}, "outputs": [], "source": [ @@ -502,7 +509,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 51, "metadata": {}, "outputs": [ { @@ -555,7 +562,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 52, "metadata": {}, "outputs": [], "source": [ @@ -584,7 +591,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 53, "metadata": {}, "outputs": [], "source": [ @@ -605,7 +612,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 54, "metadata": {}, "outputs": [], "source": [ @@ -622,7 +629,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 55, "metadata": {}, "outputs": [], "source": [ @@ -647,7 +654,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 56, "metadata": {}, "outputs": [], "source": [ @@ -660,7 +667,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 57, "metadata": {}, "outputs": [ { @@ -669,7 +676,7 @@ "'135.306, 8.39862, 126.51, 13.4449, 163.017, 54.2424, 172.933, 46.4726, 135.306, 8.39862'" ] }, - "execution_count": 21, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } @@ -688,7 +695,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 58, "metadata": {}, "outputs": [], "source": [ @@ -704,7 +711,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 59, "metadata": {}, "outputs": [ { @@ -751,7 +758,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 60, "metadata": {}, "outputs": [ { @@ -760,7 +767,7 @@ "'[ -4.05037121,-14.75623261, -3.41981085,-14.72365546, -3.03521988,-14.44357135, -2.26847919,-13.7140236 , -2.61172203,-13.24797471, -2.73471401,-13.09054471, -3.19923146,-12.5942653 , -3.34082546,-12.47611926, -5.67489413,-11.16083338, -5.95159272,-11.10547884, -6.42394023,-11.05981295, -7.09631023,-11.95187806, -7.30641519,-12.24559977, -7.04016696,-12.88580702, -6.00347705,-13.75912098, -4.42442296,-14.74641176]'" ] }, - "execution_count": 24, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } @@ -781,7 +788,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 61, "metadata": { "scrolled": true }, @@ -792,7 +799,7 @@ "' -4.05037121,-14.75623261, -3.41981085,-14.72365546, -3.03521988,-14.44357135, -2.26847919,-13.7140236 , -2.61172203,-13.24797471, -2.73471401,-13.09054471, -3.19923146,-12.5942653 , -3.34082546,-12.47611926, -5.67489413,-11.16083338, -5.95159272,-11.10547884, -6.42394023,-11.05981295, -7.09631023,-11.95187806, -7.30641519,-12.24559977, -7.04016696,-12.88580702, -6.00347705,-13.75912098, -4.42442296,-14.74641176'" ] }, - "execution_count": 25, + "execution_count": 61, "metadata": {}, "output_type": "execute_result" } @@ -813,7 +820,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 62, "metadata": { "tags": [ "hide-cell" @@ -846,7 +853,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 63, "metadata": { "tags": [ "hide-cell" @@ -888,7 +895,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 64, "metadata": { "scrolled": true }, @@ -897,16 +904,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "Created TAP+ (v1.2.1) - Connection:\n", - "\tHost: gea.esac.esa.int\n", - "\tUse HTTPS: True\n", - "\tPort: 443\n", - "\tSSL Port: 443\n", - "Created TAP+ (v1.2.1) - Connection:\n", - "\tHost: geadata.esac.esa.int\n", - "\tUse HTTPS: True\n", - "\tPort: 443\n", - "\tSSL Port: 443\n", "INFO: Query finished. [astroquery.utils.tap.core]\n", "\n", " name dtype unit description \n", @@ -916,10 +913,10 @@ " dec float64 deg Declination\n", " pmra float64 mas / yr Proper motion in right ascension direction\n", " pmdec float64 mas / yr Proper motion in declination direction\n", - "Jobid: 1615933496807O\n", + "Jobid: 1616771462206O\n", "Phase: COMPLETED\n", "Owner: None\n", - "Output file: async_20210316182456.vot\n", + "Output file: async_20210326111102.vot\n", "Results: None\n" ] } @@ -940,7 +937,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 65, "metadata": {}, "outputs": [ { @@ -949,7 +946,7 @@ "7345" ] }, - "execution_count": 29, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } @@ -975,7 +972,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 66, "metadata": {}, "outputs": [ { @@ -985,7 +982,7 @@ " 'pm_point_list': ' -4.05037121,-14.75623261, -3.41981085,-14.72365546, -3.03521988,-14.44357135, -2.26847919,-13.7140236 , -2.61172203,-13.24797471, -2.73471401,-13.09054471, -3.19923146,-12.5942653 , -3.34082546,-12.47611926, -5.67489413,-11.16083338, -5.95159272,-11.10547884, -6.42394023,-11.05981295, -7.09631023,-11.95187806, -7.30641519,-12.24559977, -7.04016696,-12.88580702, -6.00347705,-13.75912098, -4.42442296,-14.74641176'}" ] }, - "execution_count": 30, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" } @@ -1004,7 +1001,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 67, "metadata": {}, "outputs": [ { @@ -1015,7 +1012,7 @@ "dtype: object" ] }, - "execution_count": 31, + "execution_count": 67, "metadata": {}, "output_type": "execute_result" } @@ -1034,7 +1031,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 68, "metadata": {}, "outputs": [], "source": [ @@ -1053,7 +1050,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 69, "metadata": {}, "outputs": [ { @@ -1090,7 +1087,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 70, "metadata": {}, "outputs": [], "source": [ @@ -1132,7 +1129,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 71, "metadata": {}, "outputs": [], "source": [ @@ -1148,7 +1145,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 72, "metadata": {}, "outputs": [ { diff --git a/soln/05_join.ipynb b/soln/05_join.ipynb index b75d4fb..e486cf1 100644 --- a/soln/05_join.ipynb +++ b/soln/05_join.ipynb @@ -85,7 +85,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 28, "metadata": { "tags": [ "remove-cell" @@ -162,23 +162,13 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Created TAP+ (v1.2.1) - Connection:\n", - "\tHost: gea.esac.esa.int\n", - "\tUse HTTPS: True\n", - "\tPort: 443\n", - "\tSSL Port: 443\n", - "Created TAP+ (v1.2.1) - Connection:\n", - "\tHost: geadata.esac.esa.int\n", - "\tUse HTTPS: True\n", - "\tPort: 443\n", - "\tSSL Port: 443\n", "Retrieving table 'gaiadr2.panstarrs1_best_neighbour'\n", "Parsing table 'gaiadr2.panstarrs1_best_neighbour'...\n", "Done.\n" @@ -193,7 +183,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -222,7 +212,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -267,7 +257,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -280,7 +270,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -297,7 +287,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 34, "metadata": { "scrolled": true }, @@ -306,7 +296,7 @@ "data": { "text/html": [ "Table length=5\n", - "
\n", + "
\n", "\n", "\n", "\n", @@ -328,7 +318,7 @@ "6757061941303252736 1 0 69742856540241198" ] }, - "execution_count": 7, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -349,7 +339,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -368,7 +358,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -458,7 +448,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -518,7 +508,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 38, "metadata": {}, "outputs": [], "source": [ @@ -531,7 +521,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -548,7 +538,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 40, "metadata": { "scrolled": true }, @@ -557,7 +547,7 @@ "data": { "text/html": [ "Table length=5\n", - "
source_idnumber_of_neighboursnumber_of_matesoriginal_ext_source_id
int64int32int16int64
67459389724334807041069742925668851205
\n", + "
\n", "\n", "\n", "\n", @@ -581,7 +571,7 @@ "67553513677687787 -- 21.2831001281738" ] }, - "execution_count": 13, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -625,7 +615,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 41, "metadata": {}, "outputs": [], "source": [ @@ -648,7 +638,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -667,7 +657,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 43, "metadata": { "scrolled": true }, @@ -676,7 +666,7 @@ "data": { "text/html": [ "Table length=10\n", - "
obj_idg_mean_psf_magi_mean_psf_mag
mag
int64float64float64
\n", + "
\n", "\n", "\n", "\n", @@ -708,7 +698,7 @@ "3322773930696322176" ] }, - "execution_count": 16, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -728,7 +718,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 44, "metadata": {}, "outputs": [], "source": [ @@ -750,7 +740,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -783,7 +773,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -800,7 +790,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 47, "metadata": { "scrolled": true }, @@ -809,7 +799,7 @@ "data": { "text/html": [ "Table length=594\n", - "
source_id
int64
3322773965056065536
\n", + "
\n", "\n", "\n", "\n", @@ -863,7 +853,7 @@ "3322962015904143872 88.74740822271643 ... 0.5565841272341593" ] }, - "execution_count": 20, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -893,7 +883,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 48, "metadata": {}, "outputs": [], "source": [ @@ -925,7 +915,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -961,7 +951,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -978,7 +968,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 51, "metadata": { "scrolled": true }, @@ -987,7 +977,7 @@ "data": { "text/html": [ "Table length=490\n", - "
source_idradecpmrapmdec
degdegmas / yrmas / yr
int64float64float64float64float64
\n", + "
\n", "\n", "\n", "\n", @@ -1041,7 +1031,7 @@ "3322962015904143872 88.74740822271643 ... 0" ] }, - "execution_count": 24, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } @@ -1079,9 +1069,90 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 52, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SELECT \n", + "gaia.source_id, gaia.ra, gaia.dec, gaia.pmra, gaia.pmdec, best.best_neighbour_multiplicity, best.number_of_mates, ps.g_mean_psf_mag, ps.i_mean_psf_mag\n", + "FROM gaiadr2.gaia_source as gaia\n", + "JOIN gaiadr2.panstarrs1_best_neighbour as best\n", + " ON gaia.source_id = best.source_id\n", + "JOIN gaiadr2.panstarrs1_original_valid as ps\n", + " ON best.original_ext_source_id = ps.obj_id\n", + "WHERE 1=CONTAINS(\n", + " POINT(gaia.ra, gaia.dec),\n", + " CIRCLE(88.8, 7.4, 0.08333333))\n", + "\n", + "INFO: Query finished. [astroquery.utils.tap.core]\n" + ] + }, + { + "data": { + "text/html": [ + "Table length=490\n", + "
source_idradecpmrapmdecbest_neighbour_multiplicitynumber_of_mates
degdegmas / yrmas / yr
int64float64float64float64float64int16int16
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_idradecpmrapmdecbest_neighbour_multiplicitynumber_of_matesg_mean_psf_magi_mean_psf_mag
degdegmas / yrmas / yrmag
int64float64float64float64float64int16int16float64float64
332277396505606553688.781780201833757.3349365305831410.2980633722108194-2.50570369647369071019.943199157714817.4221992492676
332277406813427110488.82060921880337.353158142762173-1.1065462654445488-1.52608894458580441018.621200561523416.6007995605469
332277393069632051288.808433392903487.3348531622999282.6074384482375215-0.929210439544571710--20.2203998565674
332277437737442572888.868061081822657.3712877312759393.9555477866915383-3.86766248309024351018.067600250244116.9762001037598
332277372453789145688.813086028134347.3248857449205951.34995462741039-33.0781334309520861020.190700531005917.8700008392334
332277372453789132888.815703292087437.32230197723248551.93899884989518450.31105269315765761022.630800247192419.6004009246826
332277393069632179288.80507367703317.3323714722065832.2640148344763111.07727555051380081021.211999893188518.3528003692627
332277372453789094488.812416515405337.327864052479726-0.36003627434304625-6.3939392915413331020.809400558471718.1343002319336
332277393069632217688.801286825748247.334292036448643----1019.7306003570557--
...........................
332296235950148108888.850377229082717.4021627170535842.058216493648542-2.2492553225585841017.403499603271515.9040002822876
332296239386122854488.821082349761557.4044425496203-0.916760881643629-1.111331905386144110----
332295583115125491288.746203477995087.3427286191458550.1559833902071379-1.7505984559597341018.496099472045917.3892993927002
332296211898335603288.761096377229497.380564308268047----1018.064399719238316.7395000457764
332296352773258598488.788137017048237.4566968897595241.1363354614104264-2.462512969619791017.803499221801816.1214008331299
332296177538596902488.797232158623697.3597565529065352.121021366548921-6.6057117925729641018.207000732421915.9947996139526
332296208462531251288.782867563138687.384598632215225-0.093507178109964871.34959036805712261016.797899246215815.1180000305176
332296293932269260888.732893578186797.407688975612043-0.110029347835697041.0021268139914551017.1863002777116.3645992279053
332296345901311180888.803489318428457.4386999012048710.800833828337078-3.378065546636462610--16.294900894165
332296201590414387288.747408222716437.387057037713974-0.72011785332501120.55658412723415931018.470699310302716.8038005828857
" + ], + "text/plain": [ + "\n", + " source_id ra ... g_mean_psf_mag i_mean_psf_mag \n", + " deg ... mag \n", + " int64 float64 ... float64 float64 \n", + "------------------- ----------------- ... ---------------- ----------------\n", + "3322773965056065536 88.78178020183375 ... 19.9431991577148 17.4221992492676\n", + "3322774068134271104 88.8206092188033 ... 18.6212005615234 16.6007995605469\n", + "3322773930696320512 88.80843339290348 ... -- 20.2203998565674\n", + "3322774377374425728 88.86806108182265 ... 18.0676002502441 16.9762001037598\n", + "3322773724537891456 88.81308602813434 ... 20.1907005310059 17.8700008392334\n", + "3322773724537891328 88.81570329208743 ... 22.6308002471924 19.6004009246826\n", + "3322773930696321792 88.8050736770331 ... 21.2119998931885 18.3528003692627\n", + "3322773724537890944 88.81241651540533 ... 20.8094005584717 18.1343002319336\n", + "3322773930696322176 88.80128682574824 ... 19.7306003570557 --\n", + " ... ... ... ... ...\n", + "3322962359501481088 88.85037722908271 ... 17.4034996032715 15.9040002822876\n", + "3322962393861228544 88.82108234976155 ... -- --\n", + "3322955831151254912 88.74620347799508 ... 18.4960994720459 17.3892993927002\n", + "3322962118983356032 88.76109637722949 ... 18.0643997192383 16.7395000457764\n", + "3322963527732585984 88.78813701704823 ... 17.8034992218018 16.1214008331299\n", + "3322961775385969024 88.79723215862369 ... 18.2070007324219 15.9947996139526\n", + "3322962084625312512 88.78286756313868 ... 16.7978992462158 15.1180000305176\n", + "3322962939322692608 88.73289357818679 ... 17.18630027771 16.3645992279053\n", + "3322963459013111808 88.80348931842845 ... -- 16.294900894165\n", + "3322962015904143872 88.74740822271643 ... 18.4706993103027 16.8038005828857" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Solution\n", "\n", @@ -1130,7 +1201,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 53, "metadata": {}, "outputs": [], "source": [ @@ -1155,7 +1226,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 54, "metadata": {}, "outputs": [ { @@ -1166,7 +1237,7 @@ "dtype: object" ] }, - "execution_count": 30, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -1188,7 +1259,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -1227,7 +1298,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 56, "metadata": {}, "outputs": [ { @@ -1244,7 +1315,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 57, "metadata": { "scrolled": true }, @@ -1253,7 +1324,7 @@ "data": { "text/html": [ "Table length=7345\n", - "
\n", + "
\n", "\n", "\n", "\n", @@ -1307,7 +1378,7 @@ "612429144902815104 134.77293979509543 ... -13.962312685889454" ] }, - "execution_count": 33, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } @@ -1333,9 +1404,94 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 58, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "SELECT \n", + "gaia.source_id, gaia.ra, gaia.dec, gaia.pmra, gaia.pmdec, best.best_neighbour_multiplicity, best.number_of_mates, ps.g_mean_psf_mag, ps.i_mean_psf_mag\n", + "FROM gaiadr2.gaia_source as gaia\n", + "JOIN gaiadr2.panstarrs1_best_neighbour as best\n", + " ON gaia.source_id = best.source_id\n", + "JOIN gaiadr2.panstarrs1_original_valid as ps\n", + " ON best.original_ext_source_id = ps.obj_id\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2 \n", + " AND 1 = CONTAINS(POINT(gaia.ra, gaia.dec), \n", + " POLYGON(135.306, 8.39862, 126.51, 13.4449, 163.017, 54.2424, 172.933, 46.4726, 135.306, 8.39862))\n", + " AND 1 = CONTAINS(POINT(gaia.pmra, gaia.pmdec),\n", + " POLYGON( -4.05037121,-14.75623261, -3.41981085,-14.72365546, -3.03521988,-14.44357135, -2.26847919,-13.7140236 , -2.61172203,-13.24797471, -2.73471401,-13.09054471, -3.19923146,-12.5942653 , -3.34082546,-12.47611926, -5.67489413,-11.16083338, -5.95159272,-11.10547884, -6.42394023,-11.05981295, -7.09631023,-11.95187806, -7.30641519,-12.24559977, -7.04016696,-12.88580702, -6.00347705,-13.75912098, -4.42442296,-14.74641176))\n", + "\n", + "INFO: Query finished. [astroquery.utils.tap.core]\n" + ] + }, + { + "data": { + "text/html": [ + "Table length=3725\n", + "
source_idradecpmrapmdec
degdegmas / yrmas / yr
int64float64float64float64float64
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_idradecpmrapmdecbest_neighbour_multiplicitynumber_of_matesg_mean_psf_magi_mean_psf_mag
degdegmas / yrmas / yrmag
int64float64float64float64float64int16int16float64float64
635860218726658176138.518706521717319.09233926905897-5.941679495793577-11.3464091298763921017.897800445556617.5174007415771
635674126383965568138.842874102638619.031798198627634-3.8970011609340207-12.7027795253896341019.287300109863317.6781005859375
635535454774983040137.837751825543618.864006786112604-4.335040664412791-14.4923086049056521016.923799514770516.478099822998
635497276810313600138.044516021375919.00947118796605-7.1729306406216615-12.2914991698159871019.924200057983418.3339996337891
635614168640132864139.5921974814583618.807955539071433-3.309602916796381-13.7089049084786311016.151599884033214.6662998199463
635598607974369792139.2092002308950818.624132868942702-6.124445176881091-12.8338240271006111016.522399902343816.1375007629395
635737661835496576139.9332755247393419.167962454651423-7.119403303682826-12.6879474976337931014.503299713134813.9849004745483
635850945892748672139.8654288847211520.011312663154804-3.786655365804428-14.284156007182061016.517499923706116.0450000762939
635600532119713664139.2286994961681618.685939084485494-3.9742788217925122-12.3424266233842451020.450599670410219.5177001953125
...........................
612241781249124608134.375583506519418.129179169751275-2.831807894848964-13.9021185736135971020.234399795532218.6518001556396
612332147361443072134.1458472136365318.45685585044513-6.234287981021865-11.5004641956950721021.384899139404320.3076000213623
612426744016802432134.6852280506107618.77090626983678-3.7691372464459554-12.8891674931188621017.828100204467817.4281005859375
612331739340341760134.1217619690225418.42768872157865-3.9894012386388735-12.605044105074411021.865699768066419.5223007202148
612282738058264960134.044576818923518.11915820167003-2.5972485319419127-13.6517409292721871022.515199661254919.9743995666504
612386332668697600135.4570104832309318.63266345155342-5.07684899854408-12.4366413047866721019.379299163818417.9923000335693
612296172717818624133.8006028696066818.08186533343457-6.112792578821885-12.507508613704021017.494400024414116.926700592041
612250375480101760134.6475471246677418.122419425065015-2.8969262278467127-14.0616763538454871015.333000183105514.6280002593994
612394926899159168135.5199706001384418.817675531233004-3.9968965218753763-13.5268210994315331016.441400527954115.8212003707886
612256418500423168134.9075297273992418.280596648172743-6.109836304219565-12.1452123311657761020.871599197387719.9612007141113
" + ], + "text/plain": [ + "\n", + " source_id ra ... g_mean_psf_mag i_mean_psf_mag \n", + " deg ... mag \n", + " int64 float64 ... float64 float64 \n", + "------------------ ------------------ ... ---------------- ----------------\n", + "635860218726658176 138.5187065217173 ... 17.8978004455566 17.5174007415771\n", + "635674126383965568 138.8428741026386 ... 19.2873001098633 17.6781005859375\n", + "635535454774983040 137.8377518255436 ... 16.9237995147705 16.478099822998\n", + "635497276810313600 138.0445160213759 ... 19.9242000579834 18.3339996337891\n", + "635614168640132864 139.59219748145836 ... 16.1515998840332 14.6662998199463\n", + "635598607974369792 139.20920023089508 ... 16.5223999023438 16.1375007629395\n", + "635737661835496576 139.93327552473934 ... 14.5032997131348 13.9849004745483\n", + "635850945892748672 139.86542888472115 ... 16.5174999237061 16.0450000762939\n", + "635600532119713664 139.22869949616816 ... 20.4505996704102 19.5177001953125\n", + " ... ... ... ... ...\n", + "612241781249124608 134.3755835065194 ... 20.2343997955322 18.6518001556396\n", + "612332147361443072 134.14584721363653 ... 21.3848991394043 20.3076000213623\n", + "612426744016802432 134.68522805061076 ... 17.8281002044678 17.4281005859375\n", + "612331739340341760 134.12176196902254 ... 21.8656997680664 19.5223007202148\n", + "612282738058264960 134.0445768189235 ... 22.5151996612549 19.9743995666504\n", + "612386332668697600 135.45701048323093 ... 19.3792991638184 17.9923000335693\n", + "612296172717818624 133.80060286960668 ... 17.4944000244141 16.926700592041\n", + "612250375480101760 134.64754712466774 ... 15.3330001831055 14.6280002593994\n", + "612394926899159168 135.51997060013844 ... 16.4414005279541 15.8212003707886\n", + "612256418500423168 134.90752972739924 ... 20.8715991973877 19.9612007141113" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Solution\n", "\n", @@ -1379,7 +1535,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 59, "metadata": {}, "outputs": [ { @@ -1443,7 +1599,7 @@ " 1" ] }, - "execution_count": 38, + "execution_count": 59, "metadata": {}, "output_type": "execute_result" } @@ -1463,7 +1619,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 60, "metadata": {}, "outputs": [ { @@ -1480,7 +1636,7 @@ "dtype: float64" ] }, - "execution_count": 39, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } @@ -1503,7 +1659,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 61, "metadata": {}, "outputs": [ { @@ -1520,7 +1676,7 @@ "dtype: float64" ] }, - "execution_count": 40, + "execution_count": 61, "metadata": {}, "output_type": "execute_result" } @@ -1550,7 +1706,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 62, "metadata": {}, "outputs": [], "source": [ @@ -1595,7 +1751,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 63, "metadata": {}, "outputs": [], "source": [ @@ -1611,7 +1767,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 64, "metadata": {}, "outputs": [ { @@ -1657,7 +1813,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 65, "metadata": {}, "outputs": [], "source": [ @@ -1675,16 +1831,16 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "5.574869155883789" + "3.5835609436035156" ] }, - "execution_count": 45, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" } @@ -1729,7 +1885,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 67, "metadata": {}, "outputs": [], "source": [ @@ -1745,7 +1901,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 68, "metadata": {}, "outputs": [ { @@ -1754,7 +1910,7 @@ "0.7606849670410156" ] }, - "execution_count": 47, + "execution_count": 68, "metadata": {}, "output_type": "execute_result" } @@ -1772,7 +1928,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 69, "metadata": {}, "outputs": [], "source": [ @@ -1785,7 +1941,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 70, "metadata": {}, "outputs": [ { @@ -1816,7 +1972,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 71, "metadata": {}, "outputs": [], "source": [ @@ -1832,7 +1988,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 72, "metadata": {}, "outputs": [ { @@ -1941,7 +2097,7 @@ "2 16.478100 -59.785300 -1.594569 -9.357536 -1.218492 " ] }, - "execution_count": 51, + "execution_count": 72, "metadata": {}, "output_type": "execute_result" } @@ -1952,7 +2108,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 73, "metadata": {}, "outputs": [ { @@ -2065,7 +2221,7 @@ "2 16.478100 -59.785300 -1.594569 -9.357536 -1.218492 " ] }, - "execution_count": 52, + "execution_count": 73, "metadata": {}, "output_type": "execute_result" } diff --git a/soln/06_photo.ipynb b/soln/06_photo.ipynb index 4f65435..0037403 100644 --- a/soln/06_photo.ipynb +++ b/soln/06_photo.ipynb @@ -74,71 +74,48 @@ }, { "cell_type": "markdown", - "metadata": { - "tags": [ - "remove-cell" - ] - }, + "metadata": {}, "source": [ - "## Installing libraries\n", + "## Reload the data\n", "\n", - "If you are running this notebook on Colab, you can run the following cell to install the libraries we'll use.\n", - "\n", - "If you are running this notebook on your own computer, you might have to install these libraries yourself. See the instructions in the preface." + "You can [download the data from the previous lesson](https://github.com/AllenDowney/AstronomicalData/raw/main/data/gd1_data.hdf) or run the following cell, which downloads it if necessary." ] }, { "cell_type": "code", - "execution_count": 1, - "metadata": { - "tags": [ - "remove-cell" - ] - }, + "execution_count": 47, + "metadata": {}, "outputs": [], "source": [ - "# If we're running on Colab, install libraries\n", + "from os.path import basename, exists\n", "\n", - "import sys\n", - "IN_COLAB = 'google.colab' in sys.modules\n", + "def download(url):\n", + " filename = basename(url)\n", + " if not exists(filename):\n", + " from urllib.request import urlretrieve\n", + " local, _ = urlretrieve(url, filename)\n", + " print('Downloaded ' + local)\n", "\n", - "if IN_COLAB:\n", - " !pip install wget" + "download('https://github.com/AllenDowney/AstronomicalData/raw/main/' +\n", + " 'data/gd1_data.hdf')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Reload the data\n", - "\n", - "The following cell downloads the photometry data we created in the previous notebook." + "Now we can reload `candidate_df`." ] }, { "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "from wget import download\n", - "\n", - "filename = 'gd1_data.hdf'\n", - "filepath = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'\n", - "\n", - "if not os.path.exists(filename):\n", - " print(download(filepath+filename))" - ] - }, - { - "cell_type": "code", - "execution_count": 3, + "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "\n", + "filename = 'gd1_data.hdf'\n", "candidate_df = pd.read_hdf(filename, 'candidate_df')" ] }, @@ -174,7 +151,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 49, "metadata": {}, "outputs": [], "source": [ @@ -230,7 +207,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -286,18 +263,12 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 51, "metadata": {}, "outputs": [], "source": [ - "import os\n", - "from wget import download\n", - "\n", - "filename = 'MIST_iso_5fd2532653c27.iso.cmd'\n", - "filepath = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'\n", - "\n", - "if not os.path.exists(filename):\n", - " print(download(filepath+filename))" + "download('https://github.com/AllenDowney/AstronomicalData/raw/main/' +\n", + " 'data/MIST_iso_5fd2532653c27.iso.cmd')" ] }, { @@ -309,18 +280,12 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 52, "metadata": {}, "outputs": [], "source": [ - "import os\n", - "from wget import download\n", - "\n", - "filename = 'read_mist_models.py'\n", - "filepath = 'https://github.com/jieunchoi/MIST_codes/raw/master/scripts/'\n", - "\n", - "if not os.path.exists(filename):\n", - " print(download(filepath+filename))" + "download('https://github.com/jieunchoi/MIST_codes/raw/master/scripts/' +\n", + " 'read_mist_models.py')" ] }, { @@ -332,7 +297,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 53, "metadata": {}, "outputs": [ { @@ -359,7 +324,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 54, "metadata": {}, "outputs": [ { @@ -368,7 +333,7 @@ "read_mist_models.ISOCMD" ] }, - "execution_count": 9, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -386,7 +351,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -395,7 +360,7 @@ "list" ] }, - "execution_count": 10, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -413,7 +378,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 56, "metadata": {}, "outputs": [ { @@ -422,7 +387,7 @@ "1" ] }, - "execution_count": 11, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -440,7 +405,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 57, "metadata": {}, "outputs": [], "source": [ @@ -456,7 +421,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 58, "metadata": {}, "outputs": [ { @@ -465,7 +430,7 @@ "numpy.ndarray" ] }, - "execution_count": 13, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } @@ -483,7 +448,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 59, "metadata": {}, "outputs": [ { @@ -492,7 +457,7 @@ "dtype([('EEP', '" + "" ] }, - "execution_count": 36, + "execution_count": 81, "metadata": {}, "output_type": "execute_result" } @@ -1364,7 +1324,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 82, "metadata": {}, "outputs": [], "source": [ @@ -1381,7 +1341,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 83, "metadata": {}, "outputs": [ { @@ -1390,7 +1350,7 @@ "array([ True, False])" ] }, - "execution_count": 38, + "execution_count": 83, "metadata": {}, "output_type": "execute_result" } @@ -1427,7 +1387,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 84, "metadata": {}, "outputs": [], "source": [ @@ -1447,7 +1407,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 85, "metadata": {}, "outputs": [ { @@ -1514,7 +1474,7 @@ "4 1.4853 16.1516" ] }, - "execution_count": 40, + "execution_count": 85, "metadata": {}, "output_type": "execute_result" } @@ -1537,7 +1497,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 86, "metadata": {}, "outputs": [ { @@ -1546,7 +1506,7 @@ "array([False, False, False, ..., False, False, False])" ] }, - "execution_count": 41, + "execution_count": 86, "metadata": {}, "output_type": "execute_result" } @@ -1565,7 +1525,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 87, "metadata": {}, "outputs": [ { @@ -1574,7 +1534,7 @@ "454" ] }, - "execution_count": 42, + "execution_count": 87, "metadata": {}, "output_type": "execute_result" } @@ -1592,7 +1552,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 88, "metadata": {}, "outputs": [], "source": [ @@ -1608,7 +1568,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 89, "metadata": {}, "outputs": [ { @@ -1645,7 +1605,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 90, "metadata": {}, "outputs": [ { @@ -1698,7 +1658,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 91, "metadata": {}, "outputs": [], "source": [ @@ -1708,16 +1668,16 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "2.512819290161133" + "3.6441001892089844" ] }, - "execution_count": 47, + "execution_count": 92, "metadata": {}, "output_type": "execute_result" } diff --git a/soln/07_plot.ipynb b/soln/07_plot.ipynb index e31c0af..4886219 100644 --- a/soln/07_plot.ipynb +++ b/soln/07_plot.ipynb @@ -73,40 +73,6 @@ "* Generate a figure with multiple subplots." ] }, - { - "cell_type": "markdown", - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "source": [ - "## Installing libraries\n", - "\n", - "If you are running this notebook on Colab, you can run the following cell to install the libraries we'll use.\n", - "\n", - "If you are running this notebook on your own computer, you might have to install these libraries yourself. See the instructions in the preface." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "tags": [ - "remove-cell" - ] - }, - "outputs": [], - "source": [ - "# If we're running on Colab, install libraries\n", - "\n", - "import sys\n", - "IN_COLAB = 'google.colab' in sys.modules\n", - "\n", - "if IN_COLAB:\n", - " !pip install wget" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -152,7 +118,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ @@ -194,39 +160,50 @@ "source": [ "## Plotting GD-1\n", "\n", - "Let's start with the panel in the lower left. The following cell reloads the data." + "Let's start with the panel in the lower left. You can [download the data from the previous lesson](https://github.com/AllenDowney/AstronomicalData/raw/main/data/gd1_data.hdf) or run the following cell, which downloads it if necessary." ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ - "import os\n", - "from wget import download\n", + "from os.path import basename, exists\n", "\n", - "filename = 'gd1_data.hdf'\n", - "path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'\n", + "def download(url):\n", + " filename = basename(url)\n", + " if not exists(filename):\n", + " from urllib.request import urlretrieve\n", + " local, _ = urlretrieve(url, filename)\n", + " print('Downloaded ' + local)\n", "\n", - "if not os.path.exists(filename):\n", - " print(download(path+filename))" + "download('https://github.com/AllenDowney/AstronomicalData/raw/main/' +\n", + " 'data/gd1_data.hdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can reload `winner_df`" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "\n", + "filename = 'gd1_data.hdf'\n", "winner_df = pd.read_hdf(filename, 'winner_df')" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 33, "metadata": {}, "outputs": [], "source": [ @@ -254,19 +231,17 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 34, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA14AAAEXCAYAAAC9EJV/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAA9hAAAPYQGoP6dpAABFXklEQVR4nO3dd3wU1f7/8feGhAWS0CEkEAhNigQBC2ADFIx6r6JcFRuB76WIgiiI2C8oIl+92C7XFsUAem0IdlQsBKQpEJqCdKRfBDEBvhLAnN8f/rJmk93NttmW1/PxyAN26pmZMzPnM+fMGZsxxggAAAAAYJm4cCcAAAAAAGIdgRcAAAAAWIzACwAAAAAsRuAFAAAAABYj8AIAAAAAixF4AQAAAIDFCLwAAAAAwGIEXgAAAABgMQIvAAAAALAYgRcAwDITJkxQp06dwp2MoLDZbHr//ffDnYxKIy8vTzabTb/++qul6+nZs6fuvPNOS9cBABKBFwB4bdCgQbLZbLLZbEpISFCLFi00duxYHTt2LNxJiwiuApOxY8fqq6++Ck+CIlCkFfIjLT1WchfIzZkzRxMnTgxPogBUKgReAOCDSy+9VPv27dO2bdv06KOP6vnnn9fYsWNdTnvy5MkQpy6y1i9JSUlJqlevXsjXa7PZtGPHjpCvNxYZY3Tq1KlwJ8MydevWVXJycriTAaASIPACAB/Y7XY1atRI6enpuvHGG3XTTTc5anlKmtW9+uqratGihex2u4wx2rlzp/r27aukpCTVrFlT1113nf773/86llky30svvaT09HTVqFFD1157bbkn87m5uWrXrp2qVaumtm3b6vnnn3eM27Fjh2w2m9555x317NlT1apV0+uvv+5yG2w2m1566SX99a9/VY0aNdSuXTstXbpUW7ZsUc+ePZWYmKju3btr69atTvO98MILatmypapWrao2bdrotddec4zLyMiQJF199dWy2WyO32WbGhYXF+uRRx5RkyZNZLfb1alTJ3322WfltmPOnDnq1auXatSooTPOOENLly719hD5JSMjQxMnTtSNN96opKQkpaWlaerUqeWmO3jwoK6++mrVqFFDrVu31ocffug0fsGCBTrnnHNkt9uVmpqqe++91xG0DBo0SAsWLNCzzz7rqDktCQ49zSf9UTN1++23684771SdOnWUkpKinJwcHTt2TP/zP/+j5ORktWzZUp9++qlTetavX6/LL79cSUlJSklJ0YABA3Tw4EGP6SmpGfr888911llnyW6367XXXlNcXJxWrFjhtPypU6eqWbNmMsa43K/PP/+8WrdurWrVqiklJUXXXHONY5wxRk888YRatGih6tWr64wzztC7777r8TgtWbJEF154oapXr6709HSNGjXKqca5qKhI48aNU3p6uux2u1q3bq1p06Zpx44d6tWrlySpTp06stlsGjRokGPflq71O3z4sLKzs1WnTh3VqFFDl112mTZv3uwYP336dNWuXVuff/652rVrp6SkJMcDGQDwyAAAvDJw4EDTt29fp2G33367qVevnjHGmPHjx5vExESTlZVl8vPzzZo1a0xxcbHp3LmzOf/8882KFSvMsmXLTJcuXUyPHj0cyyiZ76KLLjKrVq0yCxYsMK1atTI33nijY5qcnByTmppqZs+ebbZt22Zmz55t6tata6ZPn26MMWb79u1GksnIyHBMs2fPHpfbIck0btzYvP3222bjxo3mqquuMhkZGeaiiy4yn332mVm/fr3p1q2bufTSSx3zzJkzxyQkJJjnnnvObNy40Tz55JOmSpUq5uuvvzbGGHPgwAEjyeTm5pp9+/aZAwcOOLbtjDPOcCznqaeeMjVr1jRvvvmm+fHHH824ceNMQkKC2bRpk9N2tG3b1nz88cdm48aN5pprrjHNmjUzJ0+e9PpYSTLbt2/3evpmzZqZ5ORkM3nyZLNx40bzr3/9y1SpUsXMmzfPaZlNmjQxb7zxhtm8ebMZNWqUSUpKMocOHTLGGLN7925To0YNc9ttt5kNGzaY9957z9SvX9+MHz/eGGPMr7/+arp3726GDh1q9u3bZ/bt22dOnTpV4XzGGNOjRw+TnJxsJk6caDZt2mQmTpxo4uLizGWXXWZycnLMpk2bzK233mrq1atnjh07ZowxZu/evaZ+/frmvvvuMxs2bDD5+fmmT58+plevXh7TM3/+fCPJdOzY0cybN89s2bLFHDx40PTp08fcdtttTvutc+fO5h//+IfLfbp8+XJTpUoV88Ybb5gdO3aY/Px88+yzzzrG33///aZt27bms88+M1u3bjW5ubnGbrebvLw8Y4xxpOPw4cPGGGPWrl1rkpKSzNNPP202bdpkFi9ebDp37mwGDRrkWOZ1111n0tPTzZw5c8zWrVvNl19+ad566y1z6tQpM3v2bCPJbNy40ezbt8/8+uuvjn17xx13OJZx5ZVXmnbt2pmFCxea1atXm6ysLNOqVStz4sQJY4wxubm5JiEhwfTu3dssX77crFy50rRr187pfAUAVwi8AMBLZQOvb7/91tSrV89cd911xpg/goyEhARH0GGMMfPmzTNVqlQxO3fudAz74YcfjCTz3XffOearUqWK2bVrl2OaTz/91MTFxZl9+/YZY4xJT083b7zxhlN6Jk6caLp3726M+TNgeeaZZyrcDknmwQcfdPxeunSpkWSmTZvmGPbmm2+aatWqOX6fe+65ZujQoU7Lufbaa83ll1/utNz33nvPaZqygVdaWpqZNGmS0zRnn322o0Bfsh2vvPKKY3zJ/tqwYUOF21Y6Lb4GXqUDTWOM6d+/v7nsssuclll6vx09etTYbDbz6aefGmP+CCTatGljiouLHdM899xzJikpyfz+++/GmPKFfF/mO//88x3jT506ZRITE82AAQMcw/bt22ckmaVLlxpjjHnooYfMJZdc4rSuXbt2OYIPd+kpCXjef/99p+Fvv/22qVOnjjl+/LgxxpjVq1cbm83mdj/Pnj3b1KxZ0xQWFpYbd/ToUVOtWjWzZMkSp+GDBw82N9xwg1M6SgKvAQMGmGHDhjlN/80335i4uDjz22+/mY0bNxpJ5osvvnCZnrLLK1F6H2zatMlIMosXL3aMP3jwoKlevbp55513jDF/BF6SzJYtWxzTPPfccyYlJcXlegGgBE0NAcAHH3/8sZKSklStWjV1795dF154oVOTtGbNmqlBgwaO3xs2bFB6errS09Mdw9q3b6/atWtrw4YNjmFNmzZVkyZNHL+7d++u4uJibdy4UT///LN27dqlwYMHKykpyfH36KOPlmsOeNZZZ3m1HR07dnT8PyUlRZKUmZnpNOz48eMqLCx0bMd5553ntIzzzjvPaRsqUlhYqL1793q1nNLpS01NlSQdOHDA7bIvu+wyp30jSaeffnq5YZ5079693G9P6UpMTFRycrIjXRs2bFD37t1ls9mctu3o0aPavXu32/V6O1/pdVepUkX16tUrd8ykP/fTypUrNX/+fKd90LZtW0kql29cKZuXrrrqKsXHx+u9996TJL366qvq1auXo1lpWX369FGzZs3UokULDRgwQP/5z3/0f//3f5L+aAJ5/Phx9enTxyl9M2fOdJu2lStXavr06U7TZ2Vlqbi4WNu3b9fq1atVpUoV9ejRo8Jtc2fDhg2Kj49X165dHcPq1aunNm3aOOWFGjVqqGXLlo7fqampHvMnAEhSfLgTAADRpFevXnrhhReUkJCgtLQ0JSQkOI1PTEx0+m2McSpQVzS8RMk4m82m4uJiSdLLL7/sVCCU/iiAe1q/O6XTXbIuV8NK1l16mLfb4I43y6koLWW98sor+u233xy/W7durblz56px48Y+p89TWsse79LHx9V2mP//7pOn/eTtfK7W7Wk/FRcX64orrtDjjz9ebp0lwawnZfNS1apVNWDAAOXm5qpfv35644039Mwzz7idPzk5Wfn5+crLy9O8efP0j3/8QxMmTNDy5csdafzkk0/KHSO73e5yecXFxbrllls0atSocuOaNm2qLVu2VLhNFTFu3lUre4xcHQt38wJACQIvAPBBYmKiWrVq5fX07du3186dO7Vr1y5Hrdf69etVUFCgdu3aOabbuXOn9u7dq7S0NEnS0qVLFRcXp9NOO00pKSlq3Lixtm3bpptuuim4G+Sldu3aadGiRcrOznYMW7JkidM2JCQk6Pfff3e7jJo1ayotLU2LFi3ShRde6LScc845J6D0uQqwmjVr5rY2xpVly5aV+11SQ+SN9u3ba/bs2U6F9CVLlig5OdmRvqpVq5bbR97M548uXbpo9uzZysjIUHy869u9q/R4MmTIEHXo0EHPP/+8Tp48qX79+nmcPj4+Xr1791bv3r01fvx41a5dW19//bX69Okju92unTt3el1D1aVLF/3www9uz7/MzEwVFxdrwYIF6t27d7nxVatWlSSP29u+fXudOnVK3377rc4991xJ0qFDh7Rp0yanvA4A/qCpIQBYqHfv3urYsaNuuukm5efn67vvvlN2drZ69Ojh1JSrWrVqGjhwoNasWaNvvvlGo0aN0nXXXadGjRpJ+qN3wMmTJ+vZZ5/Vpk2btG7dOuXm5uqpp54KyXbcfffdmj59ul588UVt3rxZTz31lObMmePUlX5GRoa++uor7d+/X4cPH3a7nMcff1xvv/22Nm7cqHvvvVerV6/WHXfcEZLt8GTx4sV64okntGnTJj333HOaNWuWT+m67bbbtGvXLt1+++368ccf9cEHH2j8+PEaM2aM4uL+uN1mZGTo22+/1Y4dO3Tw4EEVFxd7NZ8/RowYoV9++UU33HCDvvvuO23btk3z5s3T3//+d0fw4So9nrRr107dunXTPffcoxtuuEHVq1d3O+3HH3+sf/3rX1q9erV++uknzZw5U8XFxWrTpo2Sk5M1duxYjR49WjNmzNDWrVu1atUqPffcc5oxY4bL5d1zzz1aunSpRowYodWrV2vz5s368MMPdfvttzu2ZeDAgfr73/+u999/X9u3b1deXp7eeecdSX8E4jabTR9//LF+/vlnHT16tNw6Wrdurb59+2ro0KFatGiR1qxZo5tvvlmNGzdW3759vdrvAOAOgRcAWKjko8J16tTRhRdeqN69e6tFixZ6++23naZr1aqV+vXrp8svv1yXXHKJo1ahxJAhQ/TKK69o+vTpyszMVI8ePTR9+nQ1b948JNtx1VVX6dlnn9U///lPnX766XrppZeUm5urnj17OqZ58skn9cUXXyg9PV2dO3d2uZxRo0bprrvu0l133aXMzEx99tln+vDDD9W6deuQbIcnd911l1auXKnOnTtr4sSJevLJJ5WVleX1/I0bN9bcuXP13Xff6YwzztDw4cM1ePBgPfjgg45pxo4dqypVqqh9+/Zq0KCBdu7c6dV8/khLS9PixYv1+++/KysrSx06dNAdd9yhWrVqOQI6V+mpyODBg3XixAn9/e9/9zhd7dq1NWfOHF100UVq166dXnzxRb355ps6/fTTJUkTJ07UP/7xD02ePFnt2rVTVlaWPvroI7d5umPHjlqwYIE2b96sCy64QJ07d9ZDDz3k1GzyhRde0DXXXKPbbrtNbdu21dChQx3dzTdu3FgPP/yw7r33XqWkpGjkyJEu15Obm6szzzxTf/3rX9W9e3cZYzR37txyzQsBwFc2Q6NkAAirCRMm6P3339fq1avDnZRKKyMjQ3feeafT95zg2qRJk/TWW29p3bp14U4KAEQVarwAAECFjh49quXLl2vq1KkuO7gAAHhG4AUAACo0cuRInX/++erRo0eFzQwBAOXR1BAAAAAALEaNFwAAAABYjMALAAAAACxG4AUAAAAAFnP9KXu4VVxcrL179yo5OVk2my3cyQEAAAAQJsYYHTlyRGlpaRV+9J7Ay0d79+5Venp6uJMBAAAAIELs2rVLTZo08TgNgZePkpOTJf2xc2vWrBnm1AAAAAAIl8LCQqWnpztiBE8IvHxU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TZrk1PSCPISK/Pe//9XQoUP12muvqUaNGuXGk4fgi19++UX/+c9/dO655yohIUESeQi+KygoUN26dR2/IzUPEXiFybRp05SVlaX09HTHsP379yslJcVpujp16qhq1arav39/qJOICLNt2zZJ0oQJE/Tggw/q448/Vp06ddSjRw/98ssvkshDqNgdd9yht956S/Pnz9fIkSP1zDPP6LbbbnOMJw/BE2OMBg0apOHDhzuayZdFHoI37rnnHiUmJqpevXrauXOnPvjgA8c48hB8sXXrVk2dOlXDhw93DIvUPETgFaAJEya47TSj5G/FihVO8+zevVuff/65Bg8eXG55Nput3DBjjMvhiA3e5qHi4mJJ0gMPPKC//e1vOvPMM5WbmyubzaZZs2Y5lkceqnx8uQ6NHj1aPXr0UMeOHTVkyBC9+OKLmjZtmg4dOuRYHnmo8vE2D02dOlWFhYW67777PC6PPFT5+Foeuvvuu7Vq1SrNmzdPVapUUXZ2towxjvHkocrHnzL13r17demll+raa6/VkCFDnMZFYh6ic40AjRw5Utdff73HaTIyMpx+5+bmql69erryyiudhjdq1Ejffvut07DDhw/r5MmT5aJ2xA5v89CRI0ckSe3bt3cMt9vtatGihXbu3CmJPFRZ+XMdKtGtWzdJ0pYtW1SvXj3yUCXlbR569NFHtWzZMtntdqdxZ511lm666SbNmDGDPFRJ+Xodql+/vurXr6/TTjtN7dq1U3p6upYtW6bu3buThyopX/PQ3r171atXL3Xv3l05OTlO00VsHgrb22WVVHFxsWnevLm56667yo0reRFw7969jmFvvfVW2F8ERGQoKCgwdrvdqXONkk5aXnrpJWMMeQi+++ijj4wk89NPPxljyEPw7KeffjLr1q1z/H3++edGknn33XfNrl27jDHkIfhu586dRpKZP3++MYY8hIrt3r3btG7d2lx//fXm1KlT5cZHah4i8AqxL7/80kgy69evLzfu1KlTpkOHDubiiy82+fn55ssvvzRNmjQxI0eODENKEYnuuOMO07hxY/P555+bH3/80QwePNg0bNjQ/PLLL8YY8hA8W7JkiXnqqafMqlWrzLZt28zbb79t0tLSzJVXXumYhjwEX2zfvr1cr4bkIXjy7bffmqlTp5pVq1aZHTt2mK+//tqcf/75pmXLlub48ePGGPIQPNuzZ49p1aqVueiii8zu3bvNvn37HH8lIjUPEXiF2A033GDOPfdct+N/+ukn85e//MVUr17d1K1b14wcOdJxIQJOnDhh7rrrLtOwYUOTnJxsevfubb7//nunachDcGflypWma9euplatWqZatWqmTZs2Zvz48ebYsWNO05GH4C1XgZcx5CG4t3btWtOrVy9Tt25dY7fbTUZGhhk+fLjZvXu303TkIbiTm5trJLn8Ky0S85DNmFJvMgIAAAAAgo5eDQEAAADAYgReAAAAAGAxAi8AAAAAsBiBFwAAAABYjMALAAAAACxG4AUAAAAAFiPwAgAAAACLEXgBAAAAgMUIvAAAAADAYgReAICY1bZtW73yyit+z9+zZ0/ZbDbZbDatXr3a43R33nmn3+txZdCgQY51v//++0FdNgAg9Ai8AAAx6bffftOWLVt0xhlnBLScoUOHat++ferQoUOQUuadZ599Vvv27QvpOgEA1okPdwIAALDC999/L2NMwAFTjRo11KhRoyClynu1atVSrVq1Qr5eAIA1qPECAMSU1atX66KLLtL555+v4uJiNW3aVE8//XTQln/s2DFlZ2crKSlJqampevLJJ8tNY4zRE088oRYtWqh69eo644wz9O677zrGHzlyRDfddJMSExOVmpqqp59+2pLmigCAyEGNFwAgZmzdulU9evTQ3XffrXr16qm4uFhnn322xowZowsuuEBnnXVWwOu4++67NX/+fL333ntq1KiR7r//fq1cuVKdOnVyTPPggw9qzpw5euGFF9S6dWstXLhQN998sxo0aKAePXpozJgxWrx4sT788EOlpKToH//4h/Lz852WAQCILdR4AQBixvDhw9WvXz89+OCD2rlzp7p3765x48apdu3a+uabbyRJV199terUqaNrrrnG5+UfPXpU06ZN05QpU9SnTx9lZmZqxowZ+v333x3THDt2TE899ZReffVVZWVlqUWLFho0aJBuvvlmvfTSSzpy5IhmzJihKVOm6OKLL1aHDh2Um5vrtAwAQOwh8AIAxIT9+/fr66+/1vDhw/X7779r3bp16ty5s+Li4hQfH6+qVatKkkaNGqWZM2f6tY6tW7fqxIkT6t69u2NY3bp11aZNG8fv9evX6/jx4+rTp4+SkpIcfzNnztTWrVu1bds2nTx5Uuecc45jnlq1ajktAwAQe2hqCACICcuWLVNxcbE6deqkH3/8Ub/99ps6deqkXbt26eDBgzrvvPMkSb169VJeXp5f6zDGVDhNcXGxJOmTTz5R48aNncbZ7XYdOnRIkmSz2XxeNgAgelHjBQCICSdOnJAkHT9+XKtXr1aTJk1Ur149vfTSS2rfvn1Q3p9q1aqVEhIStGzZMseww4cPa9OmTY7f7du3l91u186dO9WqVSunv/T0dLVs2VIJCQn67rvvHPMUFhZq8+bNAacPABC5qPECAMSEbt26KT4+Xo888oiOHj2qli1b6vnnn9fTTz+t+fPnB2UdSUlJGjx4sKPzjpSUFD3wwAOKi/vzOWZycrLGjh2r0aNHq7i4WOeff74KCwu1ZMkSJSUlaeDAgRo4cKDuvvtu1a1bVw0bNtT48eMVFxdXrhYMABA7CLwAADGhadOmevXVV3XPPfdo3759io+P1//93/9p7ty5Tu9TBeqf//ynjh49qiuvvFLJycm66667VFBQ4DTNxIkT1bBhQ02ePFnbtm1T7dq11aVLF91///2SpKeeekrDhw/XX//6V9WsWVPjxo3Trl27VK1ataClEwAQWWyGRuUAgBhTt25dvfrqq7rqqqtcjs/Ly9O///1vp29rudKzZ0916tRJzzzzTPATWcqxY8fUuHFjPfnkkxo8eLDTOJvNpvfee8/ttgAAogPveAEAYsru3bt1+PBhZWZmuhyflZWla6+9VnPnzlWTJk20fPlyj8t7/vnnlZSUpHXr1gUtjatWrdKbb76prVu3Kj8/XzfddJMkqW/fvo5phg8frqSkpKCtEwAQXtR4AQBiyqeffqprr71WR44cCfidqT179ui3336T9EdTxpIu6QO1atUqDRkyRBs3blTVqlV15pln6qmnnnIKFg8cOKDCwkJJUmpqqhITE4OybgBAeBB4AQAAAIDFaGoIAAAAABYj8AIAAAAAixF4AQAAAIDFCLwAAAAAwGIEXgAAAABgMQIvAAAAALAYgRcAAAAAWIzACwAAAAAsRuAFAAAAABYj8AIAAAAAixF4AQAAAIDF/h+7gucfgJXAVAAAAABJRU5ErkJggg==\n", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -309,7 +284,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 35, "metadata": { "tags": [ "hide-cell" @@ -379,7 +354,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 36, "metadata": { "tags": [ "hide-cell" @@ -405,7 +380,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -414,7 +389,7 @@ "10.0" ] }, - "execution_count": 9, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -432,7 +407,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 38, "metadata": {}, "outputs": [], "source": [ @@ -470,7 +445,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -504,7 +479,7 @@ " 'tableau-colorblind10']" ] }, - "execution_count": 11, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -553,23 +528,17 @@ "source": [ "If you can't find a style sheet that's exactly what you want, you can make your own. This repository includes a style sheet called `az-paper-twocol.mplstyle`, with customizations chosen by Azalee Bostroem for publication in astronomy journals.\n", "\n", - "The following cell downloads the style sheet." + "You can [download the style sheet](https://github.com/AllenDowney/AstronomicalData/raw/main/az-paper-twocol.mplstyle) or run the following cell, which downloads it if necessary." ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 40, "metadata": {}, "outputs": [], "source": [ - "import os\n", - "from wget import download\n", - "\n", - "filename = 'az-paper-twocol.mplstyle'\n", - "path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/'\n", - "\n", - "if not os.path.exists(filename):\n", - " print(download(path+filename))" + "download('https://github.com/AllenDowney/AstronomicalData/raw/main/' +\n", + " 'az-paper-twocol.mplstyle')" ] }, { @@ -637,7 +606,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 41, "metadata": {}, "outputs": [], "source": [ @@ -665,7 +634,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 42, "metadata": {}, "outputs": [], "source": [ @@ -705,7 +674,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ @@ -722,7 +691,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 44, "metadata": {}, "outputs": [], "source": [ @@ -746,7 +715,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -758,7 +727,7 @@ " [-6.9, -2.2]])" ] }, - "execution_count": 17, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -779,7 +748,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 46, "metadata": {}, "outputs": [], "source": [ @@ -813,7 +782,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 47, "metadata": {}, "outputs": [ { @@ -842,7 +811,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 48, "metadata": {}, "outputs": [], "source": [ @@ -859,7 +828,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 49, "metadata": {}, "outputs": [], "source": [ @@ -885,7 +854,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 50, "metadata": { "scrolled": true }, @@ -916,7 +885,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 51, "metadata": {}, "outputs": [], "source": [ @@ -949,7 +918,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 52, "metadata": {}, "outputs": [ { @@ -976,7 +945,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 53, "metadata": {}, "outputs": [ { @@ -1043,7 +1012,7 @@ "4 0.545461 21.054549" ] }, - "execution_count": 25, + "execution_count": 53, "metadata": {}, "output_type": "execute_result" } @@ -1067,7 +1036,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 54, "metadata": { "tags": [ "hide-cell" @@ -1103,7 +1072,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -1165,7 +1134,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 56, "metadata": {}, "outputs": [ { @@ -1219,7 +1188,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 57, "metadata": {}, "outputs": [], "source": [