From 286e5fd8e01da245b6c7cd3e3834353bc3ab7e78 Mon Sep 17 00:00:00 2001 From: sushobhana Date: Mon, 11 Jun 2018 13:01:28 +0530 Subject: [PATCH 01/83] minor typos and pep8 fixes --- .../notebooks/FITS-cubes/FITS-cubes.ipynb | 177 +++++++++--------- 1 file changed, 90 insertions(+), 87 deletions(-) diff --git a/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb b/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb index 1fbae2800..980f45023 100644 --- a/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb +++ b/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb @@ -53,7 +53,7 @@ "\n", "import astropy.units as u\n", "from astropy.utils.data import download_file\n", - "from astropy.io import fits # We use fits to open the actual data file\n", + "from astropy.io import fits # We use fits to open the actual data file\n", "\n", "import aplpy\n", "from spectral_cube import SpectralCube\n", @@ -90,7 +90,7 @@ }, "outputs": [], "source": [ - "#Downloads the HI data in a fits file format\n", + "# Downloads the HI data in a fits file format\n", "hi_datafile = download_file(\n", " 'http://cdsarc.u-strasbg.fr/vizier/ftp/cats/J/A+A/594/A116/CUBES/GAL/TAN/TAN_C14.fits',\n", " cache=True, show_progress = True)" @@ -116,9 +116,9 @@ }, "outputs": [], "source": [ - "hi_data = fits.open(hi_datafile) # Open the FITS file for reading\n", - "cube = SpectralCube.read(hi_data) # Initiate a SpectralCube\n", - "hi_data.close() # Close the FITS file - we already read it in and don't need it anymore!" + "hi_data = fits.open(hi_datafile) # Open the FITS file for reading\n", + "cube = SpectralCube.read(hi_data) # Initiate a SpectralCube\n", + "hi_data.close() # Close the FITS file - we already read it in and don't need it anymore!" ] }, { @@ -130,7 +130,7 @@ "\n", "\n", "`\n", - "cube = SpectralCube.read(path_to_data_file/TAN_C14.fits') \n", + "cube = SpectralCube.read('path_to_data_file/TAN_C14.fits') \n", "`\n", "\n", "\n", @@ -177,7 +177,7 @@ }, "outputs": [], "source": [ - "cube[600,:,:].quicklook() # Slice the cube along the spectral axis, and display a quick image" + "cube[600, :, :].quicklook() # Slice the cube along the spectral axis, and display a quick image" ] }, { @@ -188,7 +188,7 @@ }, "outputs": [], "source": [ - "cube[:,150,150].quicklook() # Extract a single spectrum through the data cube" + "cube[:, 150, 150].quicklook() # Extract a single spectrum through the data cube" ] }, { @@ -242,8 +242,8 @@ }, "outputs": [], "source": [ - "_, b, _ = cube.world[0,:,0] #extract latitude world coordinates from cube\n", - "_, _, l = cube.world[0,0,:] #extract longitude world coordinates from cube" + "_, b, _ = cube.world[0, :, 0] #extract latitude world coordinates from cube\n", + "_, _, l = cube.world[0, 0, :] #extract longitude world coordinates from cube" ] }, { @@ -262,10 +262,13 @@ "outputs": [], "source": [ "def find_nearest_idx(array, target_value): \n", - " '''Simple function to find the index closest to a target value'''\n", + " \"\"\"\n", + " Simple function to find the index closest to a target value\n", + " \"\"\"\n", " idx = np.nanargmin(np.abs(array-target_value))\n", " return idx\n", "\n", + "\n", "# Define desired latitude and longitude range\n", "lat_range = [-46, -40] * u.deg \n", "lon_range = [306, 295] * u.deg\n", @@ -276,7 +279,7 @@ "lon_range_idx = sorted([find_nearest_idx(l, lon_range[0]), find_nearest_idx(l, lon_range[1])])\n", "\n", "# Create a sub_cube cut to these coordinates\n", - "sub_cube = cube[:,lat_range_idx[0]:lat_range_idx[1], lon_range_idx[0]:lon_range_idx[1]]\n", + "sub_cube = cube[:, lat_range_idx[0]:lat_range_idx[1], lon_range_idx[0]:lon_range_idx[1]]\n", "\n", "print(sub_cube)" ] @@ -325,15 +328,15 @@ }, "outputs": [], "source": [ - "moment_0 = sub_cube_slab.with_spectral_unit(u.km/u.s).moment(order = 0) # Zero-th moment \n", - "moment_1 = sub_cube_slab.with_spectral_unit(u.km/u.s).moment(order = 1) # First moment\n", + "moment_0 = sub_cube_slab.with_spectral_unit(u.km/u.s).moment(order=0) # Zero-th moment \n", + "moment_1 = sub_cube_slab.with_spectral_unit(u.km/u.s).moment(order=1) # First moment\n", "\n", "# Write the moments as a FITS image\n", - "#moment_0.write('hi_moment_0.fits') \n", - "#moment_1.write('hi_moment_1.fits')\n", + "# moment_0.write('hi_moment_0.fits') \n", + "# moment_1.write('hi_moment_1.fits')\n", "\n", - "print('Moment_0 has units of: ',moment_0.unit)\n", - "print('Moment_1 has units of: ',moment_1.unit)\n", + "print('Moment_0 has units of: ', moment_0.unit)\n", + "print('Moment_1 has units of: ', moment_1.unit)\n", "\n", "# Convert Moment_0 to a Column Density assuming optically thin media\n", "hi_column_density = moment_0 * 1.82 * 10**18 / (u.cm * u.cm) * u.s / u.K / u.km" @@ -372,28 +375,28 @@ "outputs": [], "source": [ "# Initiate a figure \n", - "fig = plt.figure(figsize = (18,12))\n", + "fig = plt.figure(figsize=(18, 12))\n", "\n", "# Initiate a FITSFigure to set up axes\n", - "F = aplpy.FITSFigure(moment_1.hdu, figure = fig)\n", + "F = aplpy.FITSFigure(moment_1.hdu, figure=fig)\n", "\n", "# Extract the axis object that was created for future manipulation\n", "ax = fig.gca()\n", "\n", "# display a colorscale map of moment_1\n", - "F.show_colorscale(cmap = 'RdBu_r', vmin = 0., vmax = 200.)\n", + "F.show_colorscale(cmap='RdBu_r', vmin=0., vmax=200.)\n", "# display a colorbar\n", - "F.show_colorbar(axis_label_text = 'Velocity (km / s)')\n", + "F.show_colorbar(axis_label_text='Velocity (km / s)')\n", "\n", "# overplot contours of hi_column_density (essentially column density here)\n", - "F.show_contour(hi_column_density.hdu, cmap = 'Greys_r', levels = (1e20, 5e20, 1e21, 3e21, 5e21, 7e21, 1e22))\n", + "F.show_contour(hi_column_density.hdu, cmap='Greys_r', levels=(1e20, 5e20, 1e21, 3e21, 5e21, 7e21, 1e22))\n", "\n", - "ax.yaxis.set_tick_params(labelsize = 16)\n", - "ax.xaxis.set_tick_params(labelsize = 16)\n", + "ax.yaxis.set_tick_params(labelsize=16)\n", + "ax.xaxis.set_tick_params(labelsize=16)\n", "x_lab = ax.get_xlabel()\n", "y_lab = ax.get_ylabel()\n", - "ax.set_xlabel(x_lab, fontsize = 16)\n", - "ax.set_ylabel(x_lab, fontsize = 16)\n" + "ax.set_xlabel(x_lab, fontsize=16)\n", + "ax.set_ylabel(x_lab, fontsize=16)\n" ] }, { @@ -416,7 +419,7 @@ }, "outputs": [], "source": [ - "print(moment_1.wcs) # Examine the WCS object associated with the moment map" + "print(moment_1.wcs) # Examine the WCS object associated with the moment map" ] }, { @@ -435,31 +438,31 @@ "outputs": [], "source": [ "# Initiate a figure and axis object with WCS projection information\n", - "fig = plt.figure(figsize = (18,12))\n", - "ax = fig.add_subplot(111,projection = moment_1.wcs)\n", + "fig = plt.figure(figsize=(18, 12))\n", + "ax = fig.add_subplot(111, projection=moment_1.wcs)\n", "\n", "# Display the moment map image\n", - "im = ax.imshow(moment_1.hdu.data, cmap = 'RdBu_r', vmin = 0, vmax = 200)\n", - "ax.invert_yaxis() # Flips the Y axis \n", + "im = ax.imshow(moment_1.hdu.data, cmap='RdBu_r', vmin=0, vmax=200)\n", + "ax.invert_yaxis() # Flips the Y axis \n", "\n", "# Add axes labels\n", - "ax.set_xlabel(\"Galactic Longitude (degrees)\", fontsize = 16)\n", - "ax.set_ylabel(\"Galactic Latitude (degrees)\", fontsize = 16)\n", + "ax.set_xlabel(\"Galactic Longitude (degrees)\", fontsize=16)\n", + "ax.set_ylabel(\"Galactic Latitude (degrees)\", fontsize=16)\n", "\n", "# Add a colorbar\n", - "cbar = plt.colorbar(im, pad = .07)\n", - "cbar.set_label('Velocity (km/s)', size = 16)\n", + "cbar = plt.colorbar(im, pad=.07)\n", + "cbar.set_label('Velocity (km/s)', size=16)\n", "\n", "# Overlay set of RA/Dec Axes\n", "overlay = ax.get_coords_overlay('fk5')\n", - "overlay.grid(color='white', ls='dotted', lw = 2)\n", - "overlay[0].set_axislabel('Right Ascension (J2000)', fontsize = 16)\n", - "overlay[1].set_axislabel('Declination (J2000)', fontsize = 16)\n", + "overlay.grid(color='white', ls='dotted', lw=2)\n", + "overlay[0].set_axislabel('Right Ascension (J2000)', fontsize=16)\n", + "overlay[1].set_axislabel('Declination (J2000)', fontsize=16)\n", "\n", "# Overplot column density contours \n", - "levels = (1e20, 5e20, 1e21, 3e21, 5e21, 7e21, 1e22) # Define contour levels to use\n", - "ax.contour(hi_column_density.hdu.data, cmap = 'Greys_r', alpha = 0.5, \n", - " lw = 3, levels = levels)" + "levels = (1e20, 5e20, 1e21, 3e21, 5e21, 7e21, 1e22) # Define contour levels to use\n", + "ax.contour(hi_column_density.hdu.data, cmap='Greys_r', alpha=0.5, \n", + " lw=3, levels=levels)" ] }, { @@ -495,25 +498,25 @@ }, "outputs": [], "source": [ - "lat_slice = 35 # Index of latitude dimension to slice along\n", + "lat_slice = 35 # Index of latitude dimension to slice along\n", "\n", "# Initiate a figure and axis object with WCS projection information\n", - "fig = plt.figure(figsize = (18,12))\n", - "ax = fig.add_subplot(111,projection = sub_cube_slab.wcs, slices = ('y', lat_slice, 'x'))\n", + "fig = plt.figure(figsize=(18, 12))\n", + "ax = fig.add_subplot(111, projection=sub_cube_slab.wcs, slices=('y', lat_slice, 'x'))\n", "# Above, we have specified to plot the longitude along the y axis, pick just the lat_slice indicated, \n", "# and plot the velocity along the x axis\n", "\n", "# Display the slice\n", - "im = ax.imshow(sub_cube_slab.hdu.data[:,lat_slice,:].transpose()) # Display the image slice\n", - "ax.invert_yaxis() # Flips the Y axis \n", + "im = ax.imshow(sub_cube_slab.hdu.data[:,lat_slice,:].transpose()) # Display the image slice\n", + "ax.invert_yaxis() # Flips the Y axis \n", "\n", "# Add axes labels\n", - "ax.set_xlabel(\"LSR Velocity (m/s)\", fontsize = 16)\n", - "ax.set_ylabel(\"Galactic Longitude (degrees)\", fontsize = 16)\n", + "ax.set_xlabel(\"LSR Velocity (m/s)\", fontsize=16)\n", + "ax.set_ylabel(\"Galactic Longitude (degrees)\", fontsize=16)\n", "\n", "# Add a colorbar\n", - "cbar = plt.colorbar(im, pad = .07, orientation = 'horizontal')\n", - "cbar.set_label('Temperature (K)', size = 16)\n", + "cbar = plt.colorbar(im, pad=.07, orientation='horizontal')\n", + "cbar.set_label('Temperature (K)', size=16)\n", "\n" ] }, @@ -579,7 +582,7 @@ "outputs": [], "source": [ "# Query for Herschel data in a 1 degree radius around the SMC\n", - "result = ESASky.query_region_maps('SMC', radius = 1*u.deg, missions = 'Herschel')\n", + "result = ESASky.query_region_maps('SMC', radius=1*u.deg, missions='Herschel')\n", "\n", "print(result)" ] @@ -635,16 +638,16 @@ }, "outputs": [], "source": [ - "filters = result['HERSCHEL']['filter'].astype(str) # Convert the list of filters from the query to a string\n", + "filters = result['HERSCHEL']['filter'].astype(str) # Convert the list of filters from the query to a string\n", "\n", "# Construct a boolean mask, searching for only the desired filters\n", - "mask = np.array(['250, 350, 500' == s for s in filters], dtype = 'bool')\n", + "mask = np.array(['250, 350, 500' == s for s in filters], dtype='bool')\n", "\n", "# Re-construct a new TableList object containing only our desired query entry\n", - "target_obs = TableList({\"HERSCHEL\":result['HERSCHEL'][mask]}) # This will be passed into ESASky.get_maps()\n", + "target_obs = TableList({\"HERSCHEL\":result['HERSCHEL'][mask]}) # This will be passed into ESASky.get_maps()\n", "\n", - "IR_images = ESASky.get_maps(target_obs) # Download the images\n", - "IR_images['HERSCHEL'][0]['350'].info() # Display some information about the 350 micron image" + "IR_images = ESASky.get_maps(target_obs) # Download the images\n", + "IR_images['HERSCHEL'][0]['350'].info() # Display some information about the 350 micron image" ] }, { @@ -665,8 +668,8 @@ "outputs": [], "source": [ "herschel_header = IR_images['HERSCHEL'][0]['350']['image'].header\n", - "herschel_wcs = WCS(IR_images['HERSCHEL'][0]['350']['image']) # Extract WCS information\n", - "herschel_imagehdu = IR_images['HERSCHEL'][0]['350']['image'] # Extract Image data\n", + "herschel_wcs = WCS(IR_images['HERSCHEL'][0]['350']['image']) # Extract WCS information\n", + "herschel_imagehdu = IR_images['HERSCHEL'][0]['350']['image'] # Extract Image data\n", "print(herschel_wcs)" ] }, @@ -686,13 +689,13 @@ "outputs": [], "source": [ "# Initiate a figure and axis object with WCS projection information\n", - "fig = plt.figure(figsize = (18,12))\n", - "ax = fig.add_subplot(111,projection = herschel_wcs)\n", + "fig = plt.figure(figsize=(18, 12))\n", + "ax = fig.add_subplot(111, projection=herschel_wcs)\n", "\n", "# Display the moment map image\n", - "im = ax.imshow(herschel_imagehdu.data, cmap = 'viridis', \n", - " norm = LogNorm(), vmin = 2, vmax = 50)\n", - "#ax.invert_yaxis() # Flips the Y axis \n", + "im = ax.imshow(herschel_imagehdu.data, cmap='viridis', \n", + " norm=LogNorm(), vmin=2, vmax=50)\n", + "# ax.invert_yaxis() # Flips the Y axis \n", "\n", "# Add axes labels\n", "ax.set_xlabel(\"Right Ascension\", fontsize = 16)\n", @@ -700,14 +703,14 @@ "ax.grid(color = 'white', ls = 'dotted', lw = 2)\n", "\n", "# Add a colorbar\n", - "cbar = plt.colorbar(im, pad = .07)\n", + "cbar = plt.colorbar(im, pad=.07)\n", "cbar.set_label(''.join(['Herschel 350'r'$\\mu$m ','(', herschel_header['BUNIT'], ')']), size = 16)\n", "\n", "# Overlay set of Galactic Coordinate Axes\n", "overlay = ax.get_coords_overlay('galactic') \n", - "overlay.grid(color='black', ls='dotted', lw = 1)\n", - "overlay[0].set_axislabel('Galactic Longitude', fontsize = 14)\n", - "overlay[1].set_axislabel('Galactic Latitude', fontsize = 14)" + "overlay.grid(color='black', ls='dotted', lw=1)\n", + "overlay[0].set_axislabel('Galactic Longitude', fontsize=14)\n", + "overlay[1].set_axislabel('Galactic Latitude', fontsize=14)" ] }, { @@ -730,18 +733,18 @@ "outputs": [], "source": [ "# Initiate a figure and axis object with WCS projection information\n", - "fig = plt.figure(figsize = (18,12))\n", - "ax = fig.add_subplot(111,projection = herschel_wcs)\n", + "fig = plt.figure(figsize=(18, 12))\n", + "ax = fig.add_subplot(111, projection=herschel_wcs)\n", "\n", "# Display the moment map image\n", - "im = ax.imshow(herschel_imagehdu.data, cmap = 'viridis', \n", - " norm = LogNorm(), vmin = 5, vmax = 50, alpha = .8)\n", - "#ax.invert_yaxis() # Flips the Y axis \n", + "im = ax.imshow(herschel_imagehdu.data, cmap='viridis', \n", + " norm=LogNorm(), vmin=5, vmax=50, alpha=.8)\n", + "# ax.invert_yaxis() # Flips the Y axis \n", "\n", "# Add axes labels\n", - "ax.set_xlabel(\"Right Ascension\", fontsize = 16)\n", - "ax.set_ylabel(\"Declination\", fontsize = 16)\n", - "ax.grid(color = 'white', ls = 'dotted', lw = 2)\n", + "ax.set_xlabel(\"Right Ascension\", fontsize=16)\n", + "ax.set_ylabel(\"Declination\", fontsize=16)\n", + "ax.grid(color = 'white', ls='dotted', lw=2)\n", "\n", "# Extract x and y coordinate limits\n", "x_lim = ax.get_xlim()\n", @@ -749,27 +752,27 @@ "\n", "# Add a colorbar\n", "cbar = plt.colorbar(im, fraction=0.046, pad=-0.1)\n", - "cbar.set_label(''.join(['Herschel 350'r'$\\mu$m ','(', herschel_header['BUNIT'], ')']), size = 16)\n", + "cbar.set_label(''.join(['Herschel 350'r'$\\mu$m ','(', herschel_header['BUNIT'], ')']), size=16)\n", "\n", "# Overlay set of RA/Dec Axes\n", "overlay = ax.get_coords_overlay('galactic')\n", - "overlay.grid(color='black', ls='dotted', lw = 1)\n", - "overlay[0].set_axislabel('Galactic Longitude', fontsize = 14)\n", - "overlay[1].set_axislabel('Galactic Latitude', fontsize = 14)\n", + "overlay.grid(color='black', ls='dotted', lw=1)\n", + "overlay[0].set_axislabel('Galactic Longitude', fontsize=14)\n", + "overlay[1].set_axislabel('Galactic Latitude', fontsize=14)\n", "\n", - "hi_transform = ax.get_transform(hi_column_density.wcs) # extract axes Transform information for the HI data\n", + "hi_transform = ax.get_transform(hi_column_density.wcs) # extract axes Transform information for the HI data\n", "\n", "# Overplot column density contours \n", - "levels = (2e21, 3e21, 5e21, 7e21, 8e21, 1e22) # Define contour levels to use\n", - "ax.contour(hi_column_density.hdu.data, cmap = 'Greys_r', alpha = 0.8, lw = 5, levels = levels,\n", - " transform = hi_transform) # include the transform information with the keyword \"transform\"\n", + "levels = (2e21, 3e21, 5e21, 7e21, 8e21, 1e22) # Define contour levels to use\n", + "ax.contour(hi_column_density.hdu.data, cmap='Greys_r', alpha=0.8, lw=5, levels=levels,\n", + " transform=hi_transform) # include the transform information with the keyword \"transform\"\n", "\n", "# Overplot velocity image so we can also see the Gas velocities\n", - "im_hi = ax.imshow(moment_1.hdu.data, cmap = 'RdBu_r', vmin = 0, vmax = 200, alpha = 0.5, transform = hi_transform)\n", + "im_hi = ax.imshow(moment_1.hdu.data, cmap='RdBu_r', vmin=0, vmax=200, alpha=0.5, transform=hi_transform)\n", "\n", "# Add a second colorbar for the HI Velocity information\n", - "cbar_hi = plt.colorbar(im_hi, orientation = 'horizontal', fraction=0.046, pad=0.07)\n", - "cbar_hi.set_label('HI 'r'$21$cm Mean Velocity (km/s)', size = 16)\n", + "cbar_hi = plt.colorbar(im_hi, orientation='horizontal', fraction=0.046, pad=0.07)\n", + "cbar_hi.set_label('HI 'r'$21$cm Mean Velocity (km/s)', size=16)\n", "\n", "# Apply original image x and y coordinate limits\n", "ax.set_xlim(x_lim)\n", From e331cb3b7369ef473d7359c2a7809d6e74183d7e Mon Sep 17 00:00:00 2001 From: Brigitta Sipocz Date: Mon, 11 Jun 2018 12:09:16 +0100 Subject: [PATCH 02/83] Astroquery should be pinned this much --- .rtd-environment.yml | 2 +- environment.yml | 2 +- pip-requirements.txt | 2 +- tutorials/notebooks/FITS-cubes/requirements.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.rtd-environment.yml b/.rtd-environment.yml index c1e5885da..cd9f40d78 100644 --- a/.rtd-environment.yml +++ b/.rtd-environment.yml @@ -7,7 +7,7 @@ dependencies: - python=3.6 - IPython=6.1.0 - astropy=3 - - astroquery=0.3.7 + - astroquery>=0.3.7 - matplotlib=2.0.2 - numpy=1.14 - scipy=1.0 # needed for coordinates cross-matching diff --git a/environment.yml b/environment.yml index 4d969e652..f4aaf68dd 100644 --- a/environment.yml +++ b/environment.yml @@ -7,7 +7,7 @@ dependencies: - python=3.6 - IPython=6.1.0 - astropy=3 - - astroquery=0.3.7 + - astroquery>=0.3.7 - matplotlib=2.0.2 - numpy=1.14 - scipy=1.0 # needed for coordinates cross-matching diff --git a/pip-requirements.txt b/pip-requirements.txt index 1899ee20c..9de9ef905 100644 --- a/pip-requirements.txt +++ b/pip-requirements.txt @@ -1,6 +1,6 @@ IPython==6.1.0 astropy==3 -astroquery==0.3.7 +astroquery>=0.3.7 matplotlib==2.0.2 numpy==1.14 jupyter==1.0 diff --git a/tutorials/notebooks/FITS-cubes/requirements.txt b/tutorials/notebooks/FITS-cubes/requirements.txt index 1410cec9d..26ce88f7c 100644 --- a/tutorials/notebooks/FITS-cubes/requirements.txt +++ b/tutorials/notebooks/FITS-cubes/requirements.txt @@ -1,7 +1,7 @@ astropy=2.0.2 numpy=1.13.3 matplotlib=2.1.0 -astroquery==0.3.7 +astroquery>=0.3.7 ipython=6.2.1 aplpy=1.1.1 spectral-cube=0.4.1 From a05bb8c112386a3c1052a31de244a7e59966d132 Mon Sep 17 00:00:00 2001 From: Erik Tollerud Date: Fri, 27 Jul 2018 13:27:53 -0400 Subject: [PATCH 03/83] update conesearch notebook to be a bit more robust --- tutorials/notebooks/vo/conesearch.ipynb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutorials/notebooks/vo/conesearch.ipynb b/tutorials/notebooks/vo/conesearch.ipynb index b0a4e1729..ba2b4b6d6 100644 --- a/tutorials/notebooks/vo/conesearch.ipynb +++ b/tutorials/notebooks/vo/conesearch.ipynb @@ -338,7 +338,8 @@ "metadata": {}, "outputs": [], "source": [ - "my_favorite_result = all_results['http://vizier.u-strasbg.fr/viz-bin/conesearch/I/220/out?']\n", + "i220keys = [k for k in all_results if 'I/220' in k] #pick out the first one with \"I/220\" in it\n", + "my_favorite_result = all_results[i220keys[0]]\n", "print(my_favorite_result.array.data.dtype.names)\n", "print(my_favorite_result.array.data)" ] From 6ce6cd8511b305e9e29379cd0ce5e84e43c72de2 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Tue, 31 Jul 2018 17:28:10 +0200 Subject: [PATCH 04/83] fix some link formatting issues --- .../Models-Quick-Fit/Models-Quick-Fit.ipynb | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb b/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb index 6040565ea..8221c5822 100644 --- a/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb +++ b/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb @@ -132,11 +132,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "* [`Gaussian1D`](http://docs.astropy.org/en/stable/api/astropy.modeling.functional_models.Gaussian1D.html#astropy.modeling.functional_models.Gaussian1D)\n", - "* [`Trapezoid1D`](http://docs.astropy.org/en/stable/api/astropy.modeling.functional_models.Trapezoid1D.html#astropy.modeling.functional_models.Trapezoid1D)\n", - "* [`Polynomial1D`](http://docs.astropy.org/en/stable/api/astropy.modeling.polynomial.Polynomial1D.html#astropy.modeling.polynomial.Polynomial1D)\n", - "* [`Sine1D`](http://docs.astropy.org/en/stable/api/astropy.modeling.functional_models.Sine1D.html#astropy.modeling.functional_models.Sine1D)\n", - "* [`Linear1D`](http://docs.astropy.org/en/stable/api/astropy.modeling.functional_models.Linear1D.html#astropy.modeling.functional_models.Linear1D)\n", + "* [Gaussian1D](http://docs.astropy.org/en/stable/api/astropy.modeling.functional_models.Gaussian1D.html#astropy.modeling.functional_models.Gaussian1D)\n", + "* [Trapezoid1D](http://docs.astropy.org/en/stable/api/astropy.modeling.functional_models.Trapezoid1D.html#astropy.modeling.functional_models.Trapezoid1D)\n", + "* [Polynomial1D](http://docs.astropy.org/en/stable/api/astropy.modeling.polynomial.Polynomial1D.html#astropy.modeling.polynomial.Polynomial1D)\n", + "* [Sine1D](http://docs.astropy.org/en/stable/api/astropy.modeling.functional_models.Sine1D.html#astropy.modeling.functional_models.Sine1D)\n", + "* [Linear1D](http://docs.astropy.org/en/stable/api/astropy.modeling.functional_models.Linear1D.html#astropy.modeling.functional_models.Linear1D)\n", "* The [list](http://docs.astropy.org/en/stable/modeling/#module-astropy.modeling.functional_models) continues." ] }, @@ -152,10 +152,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "* [`LevMarLSQFitter()`](http://docs.astropy.org/en/stable/api/astropy.modeling.fitting.LevMarLSQFitter.html#astropy.modeling.fitting.LevMarLSQFitter) Levenberg-Marquardt algorithm and least squares statistic.\n", - "* [`LinearLSQFitter()`](http://docs.astropy.org/en/stable/api/astropy.modeling.fitting.LinearLSQFitter.html#astropy.modeling.fitting.LinearLSQFitter) A class performing a linear least square fitting.\n", - "* [`SLSQPLSQFitter()`](http://docs.astropy.org/en/stable/api/astropy.modeling.fitting.SLSQPLSQFitter.html#astropy.modeling.fitting.SLSQPLSQFitter) SLSQP optimization algorithm and least squares statistic.\n", - "* [`SimplexLSQFitter()`](http://docs.astropy.org/en/stable/api/astropy.modeling.fitting.SimplexLSQFitter.html#astropy.modeling.fitting.SimplexLSQFitter) Simplex algorithm and least squares statistic.\n", + "* [LevMarLSQFitter()](http://docs.astropy.org/en/stable/api/astropy.modeling.fitting.LevMarLSQFitter.html#astropy.modeling.fitting.LevMarLSQFitter) Levenberg-Marquardt algorithm and least squares statistic.\n", + "* [LinearLSQFitter()](http://docs.astropy.org/en/stable/api/astropy.modeling.fitting.LinearLSQFitter.html#astropy.modeling.fitting.LinearLSQFitter) A class performing a linear least square fitting.\n", + "* [SLSQPLSQFitter()](http://docs.astropy.org/en/stable/api/astropy.modeling.fitting.SLSQPLSQFitter.html#astropy.modeling.fitting.SLSQPLSQFitter) SLSQP optimization algorithm and least squares statistic.\n", + "* [SimplexLSQFitter()](http://docs.astropy.org/en/stable/api/astropy.modeling.fitting.SimplexLSQFitter.html#astropy.modeling.fitting.SimplexLSQFitter) Simplex algorithm and least squares statistic.\n", "* More detailles [here](http://docs.astropy.org/en/stable/modeling/#id21)" ] }, @@ -200,7 +200,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Second we are going to choose the fitter we want to use. This choice is basically which method we want to use to fit the model to the data. In this case we are going to use the [*Linear Least Square Fitting*](https://www.mathworks.com/help/curvefit/least-squares-fitting.html). In the next exercise we are going to analyze how to choose the fitter. " + "Second we are going to choose the fitter we want to use. This choice is basically which method we want to use to fit the model to the data. In this case we are going to use the [Linear Least Square Fitting](https://www.mathworks.com/help/curvefit/least-squares-fitting.html). In the next exercise we are going to analyze how to choose the fitter. " ] }, { @@ -419,7 +419,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "One way to check which model parameters are a better fit is calculating the [*Reduced Chi Square Value*](https://en.wikipedia.org/wiki/Reduced_chi-squared_statistic). Lets define a function to do that because we are going to use it several times." + "One way to check which model parameters are a better fit is calculating the [Reduced Chi Square Value](https://en.wikipedia.org/wiki/Reduced_chi-squared_statistic). Lets define a function to do that because we are going to use it several times." ] }, { @@ -501,7 +501,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Scipy has the function [`scipy.optimize.curve_fit`](https://docs.scipy.org/doc/scipy-1.0.0/reference/generated/scipy.optimize.curve_fit.html) to fit in a similar way we are doing things. Lets compare the two methods with fake data in the shape of a gaussian." + "Scipy has the function [scipy.optimize.curve_fit](https://docs.scipy.org/doc/scipy-1.0.0/reference/generated/scipy.optimize.curve_fit.html) to fit in a similar way we are doing things. Lets compare the two methods with fake data in the shape of a gaussian." ] }, { @@ -710,18 +710,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - ">## Summary:\n", - ">\n", - ">Lets review the conclusion we got in this tutorial:\n", - ">\n", - ">1. You can fit data with **three lines of code**:\n", - "> * model\n", - "> * fitter\n", - "> * perform fit to data\n", - "> \n", - ">2. **Pay attention** when you choose the **fitter**.\n", - ">\n", - ">3. Choose the method most convenient for every case you need to fit. We recomend `astropy.modeling` to make **quick fits of known functions**." + "## Summary:\n", + "\n", + "Lets review the conclusion we got in this tutorial:\n", + "\n", + "1. You can fit data with **three lines of code**:\n", + " * model\n", + " * fitter\n", + " * perform fit to data\n", + " \n", + "2. **Pay attention** when you choose the **fitter**.\n", + "\n", + "3. Choose the method most convenient for every case you need to fit. We recomend `astropy.modeling` to make **quick fits of known functions**." ] }, { @@ -777,7 +777,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python [default]", "language": "python", "name": "python3" }, From e1e6cc4bd4f0d97ea56e4ffa945a43cfcb298d44 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 8 May 2018 15:32:14 -0400 Subject: [PATCH 05/83] Added conda install and environment documentation rst files --- tutorials/01-conda_astropy_install.rst | 143 +++++++++++++++++++++ tutorials/02-conda_envs.rst | 111 +++++++++++++++++ tutorials/03-astropy_dev_env.rst | 164 +++++++++++++++++++++++++ 3 files changed, 418 insertions(+) create mode 100644 tutorials/01-conda_astropy_install.rst create mode 100644 tutorials/02-conda_envs.rst create mode 100644 tutorials/03-astropy_dev_env.rst diff --git a/tutorials/01-conda_astropy_install.rst b/tutorials/01-conda_astropy_install.rst new file mode 100644 index 000000000..1c7984632 --- /dev/null +++ b/tutorials/01-conda_astropy_install.rst @@ -0,0 +1,143 @@ +Installing Astropy and Related Packages with Anaconda +===================================================== + +conda #astropy +============== + +Pre-requisites +-------------- + +**Mac** Have the latest version of `Xcode +developer `__ tools installed + +**Windows** Be able to access a terminal, either through a `Linux +subsystem `__ +or by installing the `Linux bash +shell `__ + +Step 1: Download Anaconda +------------------------- + +The Anaconda Python distribution can be downloaded from +https://www.anaconda.com/download + +- The scientific computing community is now using Python 3 as a + default. + +**But my code only runs in Python 2** Please see the next tutorial: *An +Astropy User's Guide to Managing Conda Environments* + +- When the download is finished, click on the package and follow the + installation instructions. + +- Open a terminal window to check that the Anaconda installation will + work for you: + + :: + + which conda + + should return something like ``/anaconda3/bin/conda`` and + + :: + + which python + + should return a Python path that is in the same directory as + Anaconda: ``/anaconda3/bin/python`` + +Step 2: Install core packages +----------------------------- + +The default Anaconda installation comes with many packages that +astronomers use frequently: *numpy*, *scipy*, and *matplotlib* + +We can use the ``conda install`` command to install everything else we +need. Anaconda will automatically check, update, and install any python +packages that your desired package depends on. + +- We recommend installing the following suite of astropy, scientific, + statistical, and visualization packages. You can install them all + individually or in one line: + +:: + + conda install astropy scikit-learn pandas + +Step 3: Install affiliated packages +----------------------------------- + +Many `Astropy affiliated +packages `__ can be found on +*astroconda* channel, maintained by AURA and STScI. To add this channel +to Anaconda's package search list, run the following command: + +:: + + conda config --add channels http://ssb.stsci.edu/astroconda + +Some astronomical packages are also available in the *conda-forge* +channel. There is no wrong choice between installing a package from +*astroconda* versus *conda-forge*. However, a package that is available +in the *astroconda* channel may not be available in *conda-forge*. + +To see what channels you have available: + +:: + + conda config --show channels + +`More information on managing channels in +Anaconda `__ +is available on the main documentation pages. + +- Here's an example for downloading a few commonly used Astropy + affiliated packages, directly from the *astroconda* channel: + + :: + + conda install -c astroconda astroquery photutils specutils + +You will not need to use ``-c astroconda`` if you ran the commands above +to add *astroconda* to your default channels. + +Additional materials +==================== + +How to upgrade a package or install a specific version +------------------------------------------------------ + +To upgrade to the latest version of Astropy: + +:: + + conda upgrade astropy + +You can choose a specific Astropy version using: + +:: + + conda install astropy=2.0 + +Conda vs Pip +------------ + +Anaconda is one of several package management systems that you might use +for Python. The `Python Package Index `__ project +also provides a package management program called +```pip`` `__. + +Generally, you should pick one package management program and stick to +it. However, there may be cases where a package is available with +``pip`` and not ``conda``, or vice versa. + +With Anaconda, you can still use ``pip`` to download and install +software within the `conda environment of your +choice `__. + +Conflicts may arise if you ``pip install`` a package that has already +been installed with ``conda``, or vice versa. + +Further documentation on this topic is available on the `conda package +management documentation +page `__. diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst new file mode 100644 index 000000000..0b0c579ba --- /dev/null +++ b/tutorials/02-conda_envs.rst @@ -0,0 +1,111 @@ +An Astropy User's Guide to Managing Conda Environments and Jupyter Notebook +=========================================================================== + +conda #astropy +============== + + Help! My code library works in Python 2 and I don't have time to + make it work in Python 3 + +Do not fear! This tutorial will teach you how to use conda environments +to create a *separate* installation of Python 2.7. With conda +environments, you can switch between Python 2 and 3 without having to +worry about version conflicts. + +Step 1: Set up a Python 2 environment +------------------------------------- + +- Create a new ``conda`` environment + + :: + + conda create -n python2 python=2.7 anaconda + +**NOTE:** ``anaconda`` at the end is optional... + +- Activate the Python 2 environment and install any additional packages + you need to run your favorite code library. If you want to download + Astropy and **all** affiliated packages, you can install ``stsci`` + +:: + + conda activate python2 + conda install stsci + +- When you are ready to return to your default environment: + + :: + + conda deactivate + +**NOTE:** Older versions of Anaconda use ``source activate`` and +``source deactivate``. These will both work in newer versions of +Anaconda. If you receive an error with ``conda activate``, switch to +``source activate`` or update your Anaconda installation with +``conda update conda`` + +When you want to see all of your available environments: + +:: + + conda env list + +Step 2: Check that your code runs in the new environment +-------------------------------------------------------- + +- Now you are ready to work in Python 2! Here's a generic example for + switching to your Python 2 environment, running your Python 2 script, + and exiting the environment. + +:: + + cd ~/my-python2-library + conda activate python2 + python my_python2_script.py + conda deactivate + +Step 3: Set up a Jupyter Notebook for the new environment +--------------------------------------------------------- + +- Check that you have ipykernel installed + + :: + + conda list | grep ipykernel + +If you do not see any output, install it with +``conda install ipykernel`` + +- Activate your custom Python 2 environment: + + :: + + conda activate python2 + +- Install that environment for Jupyter notebook. In this case, we are + giving the environment "python2" as a display name, but you may + choose something else (e.g., "Python 2.7" or "conda-env-python2") + +:: + + python -m ipykernel install --user --name python2 --display-name "python2"` + +- Start a Jupyter Notebook session + + :: + + jupyter notebook + +- When you click on *New*, you should see a drop down list of options + that include "python2", the environment display name we chose above. + +- If you would like to change the environment for an existing Jupyter + Notebook, click on *Kernel*, then *Change kernel*, and select the + environment you would like to use. + +- In general, you can view your available Jupyter Notebook kernels by + running + + :: + + jupyter kernelspec list diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst new file mode 100644 index 000000000..cb52a7e7f --- /dev/null +++ b/tutorials/03-astropy_dev_env.rst @@ -0,0 +1,164 @@ +How to set up a development version of Astropy +============================================== + +conda #astropy +============== + +Found a bug? Know how to fix it? See a modification you need for your +own project? This tutorial will teach you how to set up a conda +environment for installing and modifying a developer version of Astropy. + +Pre-requisites +-------------- + +- `Git `__ version control system. On a Mac, this + will come with installing the latest version of the `Xcode + developer `__ tools. +- An account on `GitHub `__ + +This tutorial will show you how to fork, clone, and install the +development version of Astropy from the command line (terminal). + +Step 1: Fork the Astropy repo on Github +--------------------------------------- + +- Log into your account on Github +- Go to https://github.com/astropy/astropy and click on **Fork** in the + upper right-hand corner of the page. This will create a separate repo + in your Github account under github.com//astropy + +Step 2: Clone your forked Astropy repo to your computer +------------------------------------------------------- + +- Go to your forked version of the repository and click on **Clone or + download** (the green button on the upper right-hand side of the + page). +- Highlight and copy the revealed URL. If you prefer using SSH to + connect to Github, you can toggle between "Use SSH" and "Use HTTPS" + by clicking on the highlighted text in the upper right-hand corner of + the box. +- Open a terminal session +- Make an astropy folder in the location you would like to develop the + code. For example: + + :: + + mkdir astropy-dev + cd astropy-dev + git clone git@github.com:/astropy.git . + +**IMPORTANT NOTE:** If it has been a long time since you forked the +Astropy repo for the first time, your fork may out of date. Before +proceeding, follow the instructions for **Keeping your fork up to date** +at the bottom of this page. + +Step 3: Create a new conda environment for developing astropy +------------------------------------------------------------- + +- Inside the astropy-dev folder, create a new conda environment called + *astropy-dev* and activate it. + + :: + + conda create -n astropy-dev python=3 anaconda + source activate astropy-dev + +- Inside the astropy-dev folder, install the Astropy from the source + code: + + :: + + python setup.py build + python setup.py install + +- At this point, you could install any other packages you normally work + with, *except* for astropy. For example, + + :: + + conda install pandas + +Step 4: Make a new branch for editing the source code +----------------------------------------------------- + +- Inside the astropy-dev folder, create a new branch to work in. Try to + pick a descriptive name for your branch: + + :: + + git branch my-code-update + git checkout my-code-update + +Congratulations! You're ready to edit the astropy source code safely. +Use ``git`` for committing your changes and pushing those changes to +your ``my-code-update`` branch on Github. + +For more help with learning Git and Github, see the `Github +Help `__ pages and `Git and Github Learning +Resources `__ +guide. + +https://try.github.io/levels/1/challenges/1 + +When you are done working on development, don't forget to exit the +astropy-dev environment. + +:: + + source deactivate + +Keeping your fork up to date +============================ + +If it has been awhile since you last forked the Astropy repo, your fork +will likely need updating. This tutorial will teach you how to use the +command line to connect to the main Astropy Github repo, update to the +latest development version, and push those changes to your personal +Astropy fork on Github. + +Step 1: Add the core Astropy repo to your git config file +--------------------------------------------------------- + +- Go to https://github.com/astropy/astropy and click on the green + "Clone or Download" button in the upper right-hand corner of the + page. +- Go to the directory where you have the Astropy repo on your computer, + for example: + + :: + + cd ~/astropy-dev + +- Add a new remote named *upstream* to your local copy of the Astropy + repo + + :: + + git remote add upstream git@github.com:astropy/astropy.git + +Step 2: Pull any changes from the master branch of the main Astropy repo +------------------------------------------------------------------------ + +- Make sure you are in the master branch of your local Astropy repo + + :: + + git checkout master + +- Use ``git pull`` to update your local master branch from the upstream + Astropy master branch + + :: + + git pull upstream master + +Step 3: Push the changes to your fork on Github +----------------------------------------------- + +- Use ``git push`` to update your Github fork of Astropy: + + :: + + git push origin master + +Congratulations! You are up to date! From 73b7b289df2ebd21a521aaf05b2c886c84e8197c Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Thu, 24 May 2018 06:29:50 -0500 Subject: [PATCH 06/83] Reminder to deactivate after ipykernel install --- tutorials/02-conda_envs.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst index 0b0c579ba..2eff5d019 100644 --- a/tutorials/02-conda_envs.rst +++ b/tutorials/02-conda_envs.rst @@ -90,6 +90,12 @@ If you do not see any output, install it with python -m ipykernel install --user --name python2 --display-name "python2"` +- Now leave that environement + +:: + + conda deactivate + - Start a Jupyter Notebook session :: From 6e957e4fbe771831d2304959926ba519d061b699 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Thu, 24 May 2018 06:32:04 -0500 Subject: [PATCH 07/83] Changed indentation levels on code snippets --- tutorials/02-conda_envs.rst | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst index 2eff5d019..45f81ddac 100644 --- a/tutorials/02-conda_envs.rst +++ b/tutorials/02-conda_envs.rst @@ -27,10 +27,10 @@ Step 1: Set up a Python 2 environment you need to run your favorite code library. If you want to download Astropy and **all** affiliated packages, you can install ``stsci`` -:: + :: - conda activate python2 - conda install stsci + conda activate python2 + conda install stsci - When you are ready to return to your default environment: @@ -57,12 +57,12 @@ Step 2: Check that your code runs in the new environment switching to your Python 2 environment, running your Python 2 script, and exiting the environment. -:: + :: - cd ~/my-python2-library - conda activate python2 - python my_python2_script.py - conda deactivate + cd ~/my-python2-library + conda activate python2 + python my_python2_script.py + conda deactivate Step 3: Set up a Jupyter Notebook for the new environment --------------------------------------------------------- @@ -86,15 +86,15 @@ If you do not see any output, install it with giving the environment "python2" as a display name, but you may choose something else (e.g., "Python 2.7" or "conda-env-python2") -:: + :: - python -m ipykernel install --user --name python2 --display-name "python2"` + python -m ipykernel install --user --name python2 --display-name "python2"` - Now leave that environement -:: + :: - conda deactivate + conda deactivate - Start a Jupyter Notebook session From 48af2359b474b03947ea6a6d7b41858f250065e1 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Fri, 1 Jun 2018 14:59:06 -0500 Subject: [PATCH 08/83] Switch from conda activate to source activate I just downloaded and installed the latest version of Anaconda 3, and 'conda activate' gives an error message with instructions for new set up. I'd rather go around this. --- tutorials/02-conda_envs.rst | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst index 45f81ddac..7b84b27fc 100644 --- a/tutorials/02-conda_envs.rst +++ b/tutorials/02-conda_envs.rst @@ -29,20 +29,18 @@ Step 1: Set up a Python 2 environment :: - conda activate python2 + source activate python2 conda install stsci - When you are ready to return to your default environment: :: - conda deactivate + source deactivate -**NOTE:** Older versions of Anaconda use ``source activate`` and -``source deactivate``. These will both work in newer versions of -Anaconda. If you receive an error with ``conda activate``, switch to -``source activate`` or update your Anaconda installation with -``conda update conda`` +**NOTE:** Some newer versions of Anaconda use ``conda activate`` and +``conda deactivate``. In that case, both ``source`` and ``conda`` will work +interchangeably when activating or deactivating your chosen environment. When you want to see all of your available environments: From 3293f93b08d01845a554a153d36a1149efa846d9 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Fri, 1 Jun 2018 15:00:51 -0500 Subject: [PATCH 09/83] Stay focused on astropy install only --- tutorials/02-conda_envs.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst index 7b84b27fc..4f68c17a8 100644 --- a/tutorials/02-conda_envs.rst +++ b/tutorials/02-conda_envs.rst @@ -24,13 +24,14 @@ Step 1: Set up a Python 2 environment **NOTE:** ``anaconda`` at the end is optional... - Activate the Python 2 environment and install any additional packages - you need to run your favorite code library. If you want to download + you need to run your favorite code library. Here, we show you how to + install the base version of Astropy. If you want to download Astropy and **all** affiliated packages, you can install ``stsci`` :: source activate python2 - conda install stsci + conda install astropy - When you are ready to return to your default environment: From 8caba61d8c705570ef308c1d9674ca7afcdaadf6 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Fri, 1 Jun 2018 15:02:53 -0500 Subject: [PATCH 10/83] switch conda to source --- tutorials/02-conda_envs.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst index 4f68c17a8..8c80a7fee 100644 --- a/tutorials/02-conda_envs.rst +++ b/tutorials/02-conda_envs.rst @@ -79,7 +79,7 @@ If you do not see any output, install it with :: - conda activate python2 + source activate python2 - Install that environment for Jupyter notebook. In this case, we are giving the environment "python2" as a display name, but you may @@ -93,7 +93,7 @@ If you do not see any output, install it with :: - conda deactivate + source deactivate - Start a Jupyter Notebook session From 681b372dfcbbf010003c40c71a727b027d51a687 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 19 Jun 2018 18:08:21 +0200 Subject: [PATCH 11/83] remove tags --- tutorials/01-conda_astropy_install.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/tutorials/01-conda_astropy_install.rst b/tutorials/01-conda_astropy_install.rst index 1c7984632..266663ccf 100644 --- a/tutorials/01-conda_astropy_install.rst +++ b/tutorials/01-conda_astropy_install.rst @@ -1,9 +1,6 @@ Installing Astropy and Related Packages with Anaconda ===================================================== -conda #astropy -============== - Pre-requisites -------------- From 06c064478e9bf2b7d42db3499044d4bb069927bf Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 19 Jun 2018 18:15:18 +0200 Subject: [PATCH 12/83] fixed broken links and cleaned text --- tutorials/01-conda_astropy_install.rst | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tutorials/01-conda_astropy_install.rst b/tutorials/01-conda_astropy_install.rst index 266663ccf..0ef2a1ffa 100644 --- a/tutorials/01-conda_astropy_install.rst +++ b/tutorials/01-conda_astropy_install.rst @@ -53,13 +53,13 @@ We can use the ``conda install`` command to install everything else we need. Anaconda will automatically check, update, and install any python packages that your desired package depends on. -- We recommend installing the following suite of astropy, scientific, - statistical, and visualization packages. You can install them all +- Below, we give an example of installing astropy along with some common + scientific, statistical, and visualization packages. You can install them all individually or in one line: :: - conda install astropy scikit-learn pandas + conda install astropy matplotlib scikit-learn pandas Step 3: Install affiliated packages ----------------------------------- @@ -121,16 +121,15 @@ Conda vs Pip Anaconda is one of several package management systems that you might use for Python. The `Python Package Index `__ project -also provides a package management program called -```pip`` `__. +also provides a package management program called `pip `__. Generally, you should pick one package management program and stick to it. However, there may be cases where a package is available with ``pip`` and not ``conda``, or vice versa. With Anaconda, you can still use ``pip`` to download and install -software within the `conda environment of your -choice `__. +software within the conda environment of your +choice. Conflicts may arise if you ``pip install`` a package that has already been installed with ``conda``, or vice versa. From 81208d5eadd959fd649af1afeb94f532a112786a Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 19 Jun 2018 18:19:05 +0200 Subject: [PATCH 13/83] cleaning text, polishing formatting --- tutorials/02-conda_envs.rst | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst index 8c80a7fee..3ed475e2a 100644 --- a/tutorials/02-conda_envs.rst +++ b/tutorials/02-conda_envs.rst @@ -1,8 +1,6 @@ An Astropy User's Guide to Managing Conda Environments and Jupyter Notebook =========================================================================== -conda #astropy -============== Help! My code library works in Python 2 and I don't have time to make it work in Python 3 @@ -59,13 +57,19 @@ Step 2: Check that your code runs in the new environment :: cd ~/my-python2-library - conda activate python2 + source activate python2 python my_python2_script.py - conda deactivate + source deactivate Step 3: Set up a Jupyter Notebook for the new environment --------------------------------------------------------- +- Activate your custom Python 2 environment: + + :: + + source activate python2 + - Check that you have ipykernel installed :: @@ -75,15 +79,9 @@ Step 3: Set up a Jupyter Notebook for the new environment If you do not see any output, install it with ``conda install ipykernel`` -- Activate your custom Python 2 environment: - - :: - - source activate python2 - - Install that environment for Jupyter notebook. In this case, we are - giving the environment "python2" as a display name, but you may - choose something else (e.g., "Python 2.7" or "conda-env-python2") + choosing a display name, "python2", that matches the environment name, + but you may choose something else. :: From e7d7e327f572ea3e9451d933816333fd8bc244d3 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 19 Jun 2018 18:19:34 +0200 Subject: [PATCH 14/83] removing hashtags --- tutorials/03-astropy_dev_env.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index cb52a7e7f..c64c1dc98 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -1,9 +1,6 @@ How to set up a development version of Astropy ============================================== -conda #astropy -============== - Found a bug? Know how to fix it? See a modification you need for your own project? This tutorial will teach you how to set up a conda environment for installing and modifying a developer version of Astropy. From db567bedeb2975b3f7a62a52469ceca168fc057c Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 19 Jun 2018 18:24:45 +0200 Subject: [PATCH 15/83] added some links to github learning resources --- tutorials/03-astropy_dev_env.rst | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index c64c1dc98..3d9ae2701 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -91,11 +91,9 @@ Use ``git`` for committing your changes and pushing those changes to your ``my-code-update`` branch on Github. For more help with learning Git and Github, see the `Github -Help `__ pages and `Git and Github Learning +Help `__ pages, the `Git and Github Learning Resources `__ -guide. - -https://try.github.io/levels/1/challenges/1 +guide, `try.github.io `_, and the `Github Learning Lab `_ When you are done working on development, don't forget to exit the astropy-dev environment. From 63cd7a35ce3223fb30df4c15a5a9c8529f97928b Mon Sep 17 00:00:00 2001 From: Erik Tollerud Date: Tue, 31 Jul 2018 11:57:59 -0400 Subject: [PATCH 16/83] fix whitespacing via compined @adrn and @pllim comments --- tutorials/notebooks/vo/conesearch.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/notebooks/vo/conesearch.ipynb b/tutorials/notebooks/vo/conesearch.ipynb index ba2b4b6d6..76bd184ab 100644 --- a/tutorials/notebooks/vo/conesearch.ipynb +++ b/tutorials/notebooks/vo/conesearch.ipynb @@ -338,7 +338,7 @@ "metadata": {}, "outputs": [], "source": [ - "i220keys = [k for k in all_results if 'I/220' in k] #pick out the first one with \"I/220\" in it\n", + "i220keys = [k for k in all_results if 'I/220' in k] # pick out the first one with \"I/220\" in it\n", "my_favorite_result = all_results[i220keys[0]]\n", "print(my_favorite_result.array.data.dtype.names)\n", "print(my_favorite_result.array.data)" From a67eabc8426801e3f2357c0cdb51527140dc2cdb Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Wed, 8 Aug 2018 11:11:28 +0200 Subject: [PATCH 17/83] only pass kernel name if passed in --- scripts/convert.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/scripts/convert.py b/scripts/convert.py index e71062e84..cebed205e 100644 --- a/scripts/convert.py +++ b/scripts/convert.py @@ -45,10 +45,10 @@ def __init__(self, nb_path, output_path=None, template_file=None, self._rst_path = path.join(self.output_path, '{0}.rst'.format(self.nb_name)) - if kernel_name is None: - self.kernel_name = ExecutePreprocessor.kernel_name.default_value - else: - self.kernel_name = kernel_name + self._execute_kwargs = dict(timeout=900) + if kernel_name: + self._execute_kwargs['kernel_name'] = kernel_name + # self.kernel_name = ExecutePreprocessor.kernel_name.default_value def execute(self, write=True): """ @@ -75,10 +75,9 @@ def execute(self, write=True): return self._executed_nb_path # Execute the notebook - logger.debug('Executing notebook using kernel ' - '"{}"...'.format(self.kernel_name)) - executor = ExecutePreprocessor(timeout=900, - kernel_name=self.kernel_name) + logger.debug('Executing notebook using kwargs ' + '"{}"...'.format(self._execute_kwargs)) + executor = ExecutePreprocessor(**self._execute_kwargs) with open(self.nb_path) as f: nb = nbformat.read(f, as_version=IPYTHON_VERSION) From fd3d558d825323415c995d1e33405bb24e5d7204 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Thu, 9 Aug 2018 10:39:41 +0200 Subject: [PATCH 18/83] add option to run on just one notebook --- tutorials/conf.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tutorials/conf.py b/tutorials/conf.py index 1ea77c222..00c675880 100644 --- a/tutorials/conf.py +++ b/tutorials/conf.py @@ -176,9 +176,12 @@ rst_output_path = os.path.join(_root, 'tutorials', 'rst-tutorials') processkwargs = dict(output_path=rst_output_path, template_file=template_path) -if os.environ.get('NBCONVERT_KERNEL'): # this allows easy access from "make html" +if os.environ.get('NBCONVERT_KERNEL'): # this allows access from "make html" processkwargs['kernel_name'] = os.environ.get('NBCONVERT_KERNEL') +if os.environ.get('NB'): # this allows only building a single tutorial file + nb_tutorials_path = os.path.abspath(os.environ.get('NB')) + process_notebooks(nb_tutorials_path, **processkwargs) From 5c05f9fd95de6e063327c0f449705325f610abaf Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Thu, 9 Aug 2018 10:43:49 +0200 Subject: [PATCH 19/83] add a way to run just one notebook for testing --- tutorials/dev.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tutorials/dev.rst b/tutorials/dev.rst index d358491de..7d44c4f25 100644 --- a/tutorials/dev.rst +++ b/tutorials/dev.rst @@ -95,6 +95,10 @@ do:: Once this is done, you will find the index for the pages in your local ``build/html/index.html`` file. +For testing, you may want to run the build process on just one notebook file, as the full build takes some time to execute and convert all of the tutorial notebooks. To do this, you can set the ``NB`` environment variable to specify the path to a notebook file relative to the ``tutorials`` path. For example, to run the build process on just the FITS-header tutorial:: + + $ NB=notebooks/FITS-header/FITS-header.ipynb make html + If you use multiple environments to manage your python installation, you might be surprised to find that by default this build does *not* use the same python environment you are running sphinx in. This is because the From 3d9c6a5e29852cdef977a6d6c46fe4c573b07630 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Thu, 9 Aug 2018 10:47:27 +0200 Subject: [PATCH 20/83] wrapping --- tutorials/dev.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tutorials/dev.rst b/tutorials/dev.rst index 7d44c4f25..66148baf9 100644 --- a/tutorials/dev.rst +++ b/tutorials/dev.rst @@ -95,7 +95,11 @@ do:: Once this is done, you will find the index for the pages in your local ``build/html/index.html`` file. -For testing, you may want to run the build process on just one notebook file, as the full build takes some time to execute and convert all of the tutorial notebooks. To do this, you can set the ``NB`` environment variable to specify the path to a notebook file relative to the ``tutorials`` path. For example, to run the build process on just the FITS-header tutorial:: +For testing, you may want to run the build process on just one notebook file, as +the full build takes some time to execute and convert all of the tutorial +notebooks. To do this, you can set the ``NB`` environment variable to specify +the path to a notebook file relative to the ``tutorials`` path. For example, to +run the build process on just the FITS-header tutorial:: $ NB=notebooks/FITS-header/FITS-header.ipynb make html From 6da25c86c6fc505c1947d2715f55ce3191742858 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Thu, 9 Aug 2018 15:36:45 +0200 Subject: [PATCH 21/83] change env var name --- tutorials/conf.py | 4 ++-- tutorials/dev.rst | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tutorials/conf.py b/tutorials/conf.py index 00c675880..ee2170144 100644 --- a/tutorials/conf.py +++ b/tutorials/conf.py @@ -179,8 +179,8 @@ if os.environ.get('NBCONVERT_KERNEL'): # this allows access from "make html" processkwargs['kernel_name'] = os.environ.get('NBCONVERT_KERNEL') -if os.environ.get('NB'): # this allows only building a single tutorial file - nb_tutorials_path = os.path.abspath(os.environ.get('NB')) +if os.environ.get('NBFILE'): # this allows only building a single tutorial file + nb_tutorials_path = os.path.abspath(os.environ.get('NBFILE')) process_notebooks(nb_tutorials_path, **processkwargs) diff --git a/tutorials/dev.rst b/tutorials/dev.rst index 66148baf9..bac654a66 100644 --- a/tutorials/dev.rst +++ b/tutorials/dev.rst @@ -97,11 +97,11 @@ Once this is done, you will find the index for the pages in your local For testing, you may want to run the build process on just one notebook file, as the full build takes some time to execute and convert all of the tutorial -notebooks. To do this, you can set the ``NB`` environment variable to specify -the path to a notebook file relative to the ``tutorials`` path. For example, to -run the build process on just the FITS-header tutorial:: +notebooks. To do this, you can set the ``NBFILE`` environment variable to +specify the path to a notebook file relative to the ``tutorials`` path. For +example, to run the build process on just the FITS-header tutorial:: - $ NB=notebooks/FITS-header/FITS-header.ipynb make html + $ NBFILE=notebooks/FITS-header/FITS-header.ipynb make html If you use multiple environments to manage your python installation, you might be surprised to find that by default this build does *not* use the From ad726491d45a4d34e93070854489c92ee1db0e3b Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Wed, 8 Aug 2018 09:39:27 +0200 Subject: [PATCH 22/83] First stab at making tutorial headers more uniform. Fixes #239 --- .../Coordinates-Intro/Coordinates-Intro.ipynb | 15 +++--- .../Coordinates-Transform.ipynb | 24 ++++----- .../notebooks/FITS-cubes/FITS-cubes.ipynb | 11 ++-- .../notebooks/FITS-header/FITS-header.ipynb | 22 +++++--- .../notebooks/FITS-images/FITS-images.ipynb | 50 +++++++++---------- .../notebooks/FITS-tables/FITS-tables.ipynb | 29 ++++++++--- .../Models-Quick-Fit/Models-Quick-Fit.ipynb | 4 +- .../notebooks/plot-catalog/plot-catalog.ipynb | 29 ++++++++--- .../notebooks/quantities/quantities.ipynb | 22 +++++--- .../redshift-plot/redshift-plot.ipynb | 31 ++++++++---- .../synthetic-images/synthetic-images.ipynb | 13 ++--- .../units-and-integration.ipynb | 18 +++---- 12 files changed, 146 insertions(+), 122 deletions(-) diff --git a/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb b/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb index f2b94917d..4f077f4c7 100644 --- a/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb +++ b/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb @@ -4,14 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Getting Started with astropy.coordinates" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Authors:\n", + "# Getting Started with astropy.coordinates\n", + "\n", + "## Authors\n", "Erik Tollerud, Kelle Cruz, Stephen Pardy\n", "\n", "## Learning Goals\n", @@ -19,9 +14,11 @@ "- Interact with a `SkyCoord` object and access its attributes\n", "- Use a `SkyCoord` object to query a database\n", "\n", - "## Keywords:\n", + "## Keywords\n", "astropy.coordinates, OOP\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." ] }, diff --git a/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb b/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb index 2733eaf09..5b4dbd214 100644 --- a/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb +++ b/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb @@ -4,28 +4,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Transforming between coordinate systems" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Authors:\n", - "Erik Tollerud, Kelle Cruz, Stephen Pardy\n", + "# Transforming between coordinate systems\n", "\n", - "## Prereqs\n", - "- Have basic knowledge of coordinate systems and the `astropy.coordinates` library\n", - "- How to work with python classes (note: you do not need to know how to write classes)\n", - "- How to work with `numpy` arrays\n", + "## Authors\n", + "Erik Tollerud, Kelle Cruz, Stephen Pardy\n", "\n", "## Learning Goals\n", "- Make coordinate objects\n", "- Transform to different coordinate systems\n", "- See how to track an object's altitude from certain observing locations\n", "\n", - "## Keywords:\n", - "units, OOP, matplotlib, numpy" + "## Keywords\n", + "matplotlib, numpy, astropy.coordinates, astropy.units\n", + "\n", + "## Summary\n", + "\n", + "Demonstrates how to define astronomical coordinates using the `astropy.coordinates` \"frame\" classes. Then shows how to transform between the different built-in coordinate frames, such as from ICRS (ra, dec) to Galactic (l, b)." ] }, { diff --git a/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb b/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb index 980f45023..3d743aaa1 100644 --- a/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb +++ b/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb @@ -4,13 +4,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Working with FITS-cubes " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "# Working with FITS-cubes \n", + "\n", "## Authors\n", "[Dhanesh Krishnarao (DK)](http://www.astronomy.dk), [Shravan Shetty](http://www.astro.wisc.edu/our-people/post-doctoral-students/shetty-shravan/), [Diego Gonzalez-Casanova](http://www.astro.wisc.edu/our-people/graduate-students/gonzalez-casanova-diego/), [Audra Hernandez](http://www.astro.wisc.edu/our-people/scientists/hernandez-audra/)\n", "\n", @@ -24,6 +19,8 @@ "## Keywords\n", "FITS-files, FITS-images, FITS-cubes, moment_maps, contours\n", "\n", + "## Summary\n", + "\n", "In the tutorial we will visualize 2D and 3D data sets in different coordinates (galactic and equatorial). \n", "\n", "This tutorial will walk you though a simple visual analysis of the Small Magellanic Cloud (SMC) using HI 21cm emission and a Herschel 250 micron map. We will learn how to read in data from vizier, query and download matching data from Herschel using astroquery, and plot the resulting images in a multitude of ways. \n", diff --git a/tutorials/notebooks/FITS-header/FITS-header.ipynb b/tutorials/notebooks/FITS-header/FITS-header.ipynb index ea30c8520..e755d0e02 100644 --- a/tutorials/notebooks/FITS-header/FITS-header.ipynb +++ b/tutorials/notebooks/FITS-header/FITS-header.ipynb @@ -4,13 +4,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Edit a FITS header" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "# Edit a FITS header\n", + "\n", + "## Authors\n", + "Adrian Price-Whelan, Adam Ginsburg\n", + "\n", + "## Learning Goals\n", + "* Read a FITS file and retrieve the header metadata\n", + "* Edit the FITS header and write the modified file as a FITS file\n", + "\n", + "## Keywords\n", + "FITS, input/output\n", + "\n", + "## Summary\n", "This tutorial describes how to read in, edit a FITS header, and then write \n", "it back out to disk. For this example we're going to change the `OBJECT` \n", "keyword.\n", @@ -250,7 +256,7 @@ "published": true }, "kernelspec": { - "display_name": "Python 3", + "display_name": "Python [default]", "language": "python", "name": "python3" }, diff --git a/tutorials/notebooks/FITS-images/FITS-images.ipynb b/tutorials/notebooks/FITS-images/FITS-images.ipynb index 4e0adfbce..0278e3800 100644 --- a/tutorials/notebooks/FITS-images/FITS-images.ipynb +++ b/tutorials/notebooks/FITS-images/FITS-images.ipynb @@ -1,23 +1,23 @@ { "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "# Set up matplotlib\n", - "import matplotlib.pyplot as plt\n", - "%matplotlib inline" - ] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The following line is needed to download the example FITS files used here." + "# Viewing and manipulating FITS images\n", + "\n", + "## Authors\n", + "Lia Corrales\n", + "\n", + "## Learning Goals\n", + "- TODO\n", + "\n", + "## Keywords\n", + "matplotlib, FITS, images, astropy.table, astropy.io\n", + "\n", + "## Summary\n", + "\n", + "Demonstrates the use of `astropy.utils.data` to download a data file, uses `astropy.io.fits` to open the file, uses `matplotlib` to view the image with different color scales and stretches and to make histrograms. Also includes a demonstration of simple image stacking." ] }, { @@ -26,23 +26,20 @@ "metadata": {}, "outputs": [], "source": [ - "from astropy.utils.data import download_file" + "import numpy as np\n", + "\n", + "# Set up matplotlib\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "from astropy.io import fits" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Viewing and manipulating FITS images" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from astropy.io import fits" + "The following cell is needed to download the example FITS files used here." ] }, { @@ -51,6 +48,7 @@ "metadata": {}, "outputs": [], "source": [ + "from astropy.utils.data import download_file\n", "image_file = download_file('http://data.astropy.org/tutorials/FITS-images/HorseHead.fits', cache=True )" ] }, @@ -465,7 +463,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.4" } }, "nbformat": 4, diff --git a/tutorials/notebooks/FITS-tables/FITS-tables.ipynb b/tutorials/notebooks/FITS-tables/FITS-tables.ipynb index 9e6de9f38..a8e96137f 100644 --- a/tutorials/notebooks/FITS-tables/FITS-tables.ipynb +++ b/tutorials/notebooks/FITS-tables/FITS-tables.ipynb @@ -1,5 +1,25 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Viewing and manipulating data from FITS tables\n", + "\n", + "## Authors\n", + "Lia Corrales\n", + "\n", + "## Learning Goals\n", + "- TODO\n", + "\n", + "## Keywords\n", + "astropy.table, astropy.io, matplotlib, FITS, images\n", + "\n", + "## Summary\n", + "\n", + "Demonstrates the use of `astropy.utils.data` to download a data file, uses `astropy.io.fits` and `astropy.table` to open the file, uses `matplotlib` to visualize the data." + ] + }, { "cell_type": "code", "execution_count": null, @@ -34,13 +54,6 @@ "from astropy.utils.data import download_file" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Viewing and manipulating data from FITS tables" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -352,7 +365,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.4" } }, "nbformat": 4, diff --git a/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb b/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb index 8221c5822..3113648e7 100644 --- a/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb +++ b/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb @@ -7,7 +7,7 @@ "# Make a quick fit using astropy.modeling\n", "\n", "## Authors\n", - "Rocio Kiman, Lia Corrales and Zé Vinícius.\n", + "Rocio Kiman, Lia Corrales, and Zé Vinícius.\n", "\n", "## Learning Goals\n", "* Know basic models in Astropy Modeling\n", @@ -16,7 +16,7 @@ "* Visualize the fit\n", "\n", "## Keywords\n", - "Modeling, Fit \n", + "astropy.modeling, model fitting, astroquery, matplotlib\n", "\n", "## Summary\n", "In this tutorial, we will become familiar with the models available in `astropy.modeling` and learn how to make a quick fit to our data." diff --git a/tutorials/notebooks/plot-catalog/plot-catalog.ipynb b/tutorials/notebooks/plot-catalog/plot-catalog.ipynb index bb51f3290..947ca87e1 100644 --- a/tutorials/notebooks/plot-catalog/plot-catalog.ipynb +++ b/tutorials/notebooks/plot-catalog/plot-catalog.ipynb @@ -1,5 +1,25 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Read in catalog information from a text file and plot some parameters\n", + "\n", + "## Authors\n", + "Adrian Price-Whelan, Kelle Cruz\n", + "\n", + "## Learning Goals\n", + "* TODO\n", + "\n", + "## Keywords\n", + "astropy.io.ascii, astropy.coordinates, units, matplotlib\n", + "\n", + "## Summary\n", + "\n", + "Demonstrates the use of `astropy.io.ascii` for reading and writing ASCII data, `astropy.coordinates` and `astropy.units` for converting RA (as a sexagesimal angle) to decimal degrees, and `matplotlib` for making a color-magnitude diagram and on-sky locations in a mollweide projection." + ] + }, { "cell_type": "code", "execution_count": null, @@ -13,13 +33,6 @@ "%matplotlib inline" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Read in catalog information from a text file and plot some parameters" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -447,7 +460,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.4" } }, "nbformat": 4, diff --git a/tutorials/notebooks/quantities/quantities.ipynb b/tutorials/notebooks/quantities/quantities.ipynb index e570a4abd..8e01bf9de 100644 --- a/tutorials/notebooks/quantities/quantities.ipynb +++ b/tutorials/notebooks/quantities/quantities.ipynb @@ -4,13 +4,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Using Astropy Quantities for astrophysical calculations" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "# Using Astropy Quantities for astrophysical calculations\n", + "\n", + "## Authors\n", + "Ana Bonaca, Erik Tollerud, Jonathan Foster\n", + "\n", + "## Learning Goals\n", + "* TODO\n", + "\n", + "## Keywords\n", + "astropy.units, astropy.constants, quantity, matplotlib\n", + "\n", + "## Summary\n", + "\n", "In this tutorial we present some examples showing how astropy's `Quantity` object can make astrophysics calculations easier. The examples include calculating the mass of a galaxy from its velocity dispersion and determining masses of molecular clouds from CO intensity maps. We end with an example of good practices for using quantities in functions you might distribute to other people.\n", "\n", "For an in-depth discussion of `Quantity` objects, see the [astropy documentation section](http://docs.astropy.org/en/stable/units/quantity.html)." @@ -1090,7 +1096,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.4" } }, "nbformat": 4, diff --git a/tutorials/notebooks/redshift-plot/redshift-plot.ipynb b/tutorials/notebooks/redshift-plot/redshift-plot.ipynb index de48822e4..b9511ab90 100644 --- a/tutorials/notebooks/redshift-plot/redshift-plot.ipynb +++ b/tutorials/notebooks/redshift-plot/redshift-plot.ipynb @@ -1,5 +1,25 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Make a plot with both redshift and universe age axes using astropy.cosmology\n", + "\n", + "## Authors\n", + "Neil Crighton\n", + "\n", + "## Learning Goals\n", + "* TODO\n", + "\n", + "## Keywords\n", + "astropy.units, astropy.cosmology, matplotlib\n", + "\n", + "## Summary\n", + "\n", + "Each redshift corresponds to an age of the universe, so if you're plotting some quantity against redshift, it's often useful show the universe age too. The relationship between the two changes depending the type of cosmology you assume, which is where `astropy.cosmology` comes in. In this tutorial we'll show how to use the tools in `astropy.cosmology` to make a plot like this:" + ] + }, { "cell_type": "code", "execution_count": null, @@ -13,15 +33,6 @@ "%matplotlib inline" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Make a plot with both redshift and universe age axes using astropy.cosmology\n", - "\n", - "Each redshift corresponds to an age of the universe, so if you're plotting some quantity against redshift, it's often useful show the universe age too. The relationship between the two changes depending the type of cosmology you assume, which is where `astropy.cosmology` comes in. In this tutorial we'll show how to use the tools in `astropy.cosmology` to make a plot like this:" - ] - }, { "cell_type": "code", "execution_count": null, @@ -340,7 +351,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.4" } }, "nbformat": 4, diff --git a/tutorials/notebooks/synthetic-images/synthetic-images.ipynb b/tutorials/notebooks/synthetic-images/synthetic-images.ipynb index 6c5a20ee7..be9373290 100644 --- a/tutorials/notebooks/synthetic-images/synthetic-images.ipynb +++ b/tutorials/notebooks/synthetic-images/synthetic-images.ipynb @@ -4,13 +4,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Synthetic Images from simulated data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "# Synthetic Images from simulated data\n", + "\n", "## Authors\n", "Yi-Hao Chen & Sebastian Heinz\n", "\n", @@ -23,9 +18,9 @@ "- Overplot quivers on the image\n", "\n", "## Keywords\n", - "astrometry, WCS, fits image, fits Header, polarization, radio, stokes parameters, PSF, convolution, quiver plot, visualization\n", - "\n", + "astrometry, WCS, FITS, polarization, radio, stokes parameters, PSF, astropy.convolution, quiver plot, astropy.visualization, matplotlib, astropy.wcs\n", "\n", + "## Summary\n", "In this tutorial, we will:\n", "\n", "[1. Load and examine the FITS file](#1.-Load-and-examine-the-FITS-file)\n", diff --git a/tutorials/notebooks/units-and-integration/units-and-integration.ipynb b/tutorials/notebooks/units-and-integration/units-and-integration.ipynb index 3f6316385..efa6d832b 100644 --- a/tutorials/notebooks/units-and-integration/units-and-integration.ipynb +++ b/tutorials/notebooks/units-and-integration/units-and-integration.ipynb @@ -4,15 +4,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Using `scipy.integrate`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "# Using `scipy.integrate`\n", + "\n", "## Authors\n", - "Zach Pace (September 2017), Lia Corrales (February 2018)\n", + "Zach Pace, Lia Corrales\n", "\n", "## Learning Goals\n", "* perform numerical integration in the `astropy` and scientific python context\n", @@ -25,14 +20,13 @@ "* add $\\LaTeX$ labels to `matplotlib` figures using the `latex_inline` formatter\n", "\n", "## Keywords\n", - "integration, python classes, LaTeX, Planck function, probability\n", + "integration, OOP, LaTeX, Planck function, probability, matplotlib, astropy.modeling, astropy.units, astropy.constants\n", "\n", "## Companion Content\n", - "\n", "* http://synphot.readthedocs.io/en/latest/\n", "* [Using Astropy Quantities for astrophysical calculations](http://astropy-tutorials.readthedocs.io/en/latest/rst-tutorials/quantities.html)\n", "\n", - "\n", + "## Summary\n", "In this tutorial, we will use the examples of the Planck function and the stellar initial mass function (IMF) to illustrate how to integrate numerically, using the trapezoidal approximation and Gaussian quadrature. We will also explore making a custom class, an instance of which is callable in the same way as a function. In addition, we will encounter `astropy`'s built-in units, and get a first taste of how to convert between them. Finally, we will use $\\LaTeX$ to make our figure axis labels easy to read." ] }, @@ -357,7 +351,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.2" + "version": "3.6.4" } }, "nbformat": 4, From 1ece7e8344a8726a07a1da07d7da650662381f18 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Wed, 8 Aug 2018 09:54:14 +0200 Subject: [PATCH 23/83] headers --- tutorials/notebooks/UVES/UVES.ipynb | 48 +++++++++++-------------- tutorials/notebooks/vo/conesearch.ipynb | 23 +++++++----- 2 files changed, 35 insertions(+), 36 deletions(-) diff --git a/tutorials/notebooks/UVES/UVES.ipynb b/tutorials/notebooks/UVES/UVES.ipynb index 4365c3d6c..afd01e1fd 100644 --- a/tutorials/notebooks/UVES/UVES.ipynb +++ b/tutorials/notebooks/UVES/UVES.ipynb @@ -4,35 +4,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Analyzing UVES Spectroscopy with Astropy" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Acknowledgments" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "License: This tutorial is made available under the terms of the\n", - "[Creative Commons Attribution 3.0 License](http://creativecommons.org/licenses/by/3.0/)\n", + "# Analyzing UVES Spectroscopy with Astropy\n", "\n", - "Authors: Moritz Guenther, Miguel de Val-Borro\n", + "## Authors\n", + "Moritz Guenther, Miguel de Val-Borro\n", "\n", - "Copyright: 2013 - 2015 Moritz Guenther, Miguel de Val-Borro\n", + "## Learning Goals\n", + "* TODO\n", "\n", - "Based on observations made with ESO Telescopes at the La Silla Paranal Observatory\n", - "under program ID 087.V0991(A)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "## Keywords\n", + "matplotlib, astropy.io, astropy.wcs, astropy.units, astropy.constants, FITS\n", + "\n", + "## Summary\n", "This tutorial follows my real live data analysis of MN Lup and the code developed\n", "below is taken (with only minor modifications) from the code that I used to\n", "actually prepare the publication. The plots that will be developed below\n", @@ -46,7 +29,16 @@ "\n", "Also, this tutorial works best if you follow along and execute the code shown\n", "on your own computer. The page is already quite long and I do not include the\n", - "output you would see on your screen in this document." + "output you would see on your screen in this document.\n", + "\n", + "## Acknowledgments\n", + "License: This tutorial is made available under the terms of the\n", + "[Creative Commons Attribution 3.0 License](http://creativecommons.org/licenses/by/3.0/)\n", + "\n", + "Copyright: 2013 - 2015 Moritz Guenther, Miguel de Val-Borro\n", + "\n", + "Based on observations made with ESO Telescopes at the La Silla Paranal Observatory\n", + "under program ID 087.V0991(A)." ] }, { @@ -1416,7 +1408,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.6.4" } }, "nbformat": 4, diff --git a/tutorials/notebooks/vo/conesearch.ipynb b/tutorials/notebooks/vo/conesearch.ipynb index 76bd184ab..ad09d7850 100644 --- a/tutorials/notebooks/vo/conesearch.ipynb +++ b/tutorials/notebooks/vo/conesearch.ipynb @@ -6,14 +6,21 @@ "description": "VO Simple Cone Search basic tutorial." }, "source": [ - "# VO Simple Cone Search Tutorial" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This tutorial requires `astroquery` 0.3.5 or greater. Cone Search allows you to query a catalog of astronomical sources and obtain those that lie within a cone of a given radius around the given position. For more information on Cone Search, see http://astroquery.readthedocs.io/en/latest/vo_conesearch/vo_conesearch.html." + "# VO Simple Cone Search Tutorial\n", + "\n", + "## Authors\n", + "P. L. Lim\n", + "\n", + "## Learning Goals\n", + "* TODO\n", + "\n", + "## Keywords\n", + "matplotlib, astropy.table, astropy.coordinates, astropy.units, conesearch\n", + "\n", + "## Summary\n", + "Cone Search allows you to query a catalog of astronomical sources and obtain those that lie within a cone of a given radius around the given position. For more information on Cone Search, see http://astroquery.readthedocs.io/en/latest/vo_conesearch/vo_conesearch.html.\n", + "\n", + "This tutorial requires `astroquery` 0.3.5 or greater. " ] }, { From 0d15c9e6600eea4d8af256970528873815041339 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Wed, 8 Aug 2018 10:20:18 +0200 Subject: [PATCH 24/83] added learning goals to plot catalog --- tutorials/notebooks/plot-catalog/plot-catalog.ipynb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tutorials/notebooks/plot-catalog/plot-catalog.ipynb b/tutorials/notebooks/plot-catalog/plot-catalog.ipynb index 947ca87e1..fa9a33072 100644 --- a/tutorials/notebooks/plot-catalog/plot-catalog.ipynb +++ b/tutorials/notebooks/plot-catalog/plot-catalog.ipynb @@ -10,14 +10,16 @@ "Adrian Price-Whelan, Kelle Cruz\n", "\n", "## Learning Goals\n", - "* TODO\n", + "* Read an ASCII file using `astropy.io`\n", + "* Convert between representations of coordinate components using `astropy.coordinates` (hours to degrees)\n", + "* Make a spherical projection sky plot using `matplotlib`\n", "\n", "## Keywords\n", "astropy.io.ascii, astropy.coordinates, units, matplotlib\n", "\n", "## Summary\n", "\n", - "Demonstrates the use of `astropy.io.ascii` for reading and writing ASCII data, `astropy.coordinates` and `astropy.units` for converting RA (as a sexagesimal angle) to decimal degrees, and `matplotlib` for making a color-magnitude diagram and on-sky locations in a mollweide projection." + "Demonstrates the use of `astropy.io.ascii` for reading ASCII data, `astropy.coordinates` and `astropy.units` for converting RA (as a sexagesimal angle) to decimal degrees, and `matplotlib` for making a color-magnitude diagram and on-sky locations in a mollweide projection." ] }, { From 370902ed7fe19ed906a258da24e849ad3b22c4a7 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Wed, 8 Aug 2018 11:11:07 +0200 Subject: [PATCH 25/83] don't quiet pip --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1876e181e..91c855400 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -13,7 +13,7 @@ pip-run: &pip-install command: | python3 -m venv venv . venv/bin/activate - pip install -q -r pip-requirements.txt + pip install -r pip-requirements.txt pip install astropy_helpers sphinx pytest pip install git+https://github.com/jupyter/nbconvert From e0a6c4d8a0781bdac80e8742b3f4b721d548803e Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Wed, 8 Aug 2018 11:16:58 +0200 Subject: [PATCH 26/83] Remove comment --- scripts/convert.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/convert.py b/scripts/convert.py index cebed205e..4c0c702bd 100644 --- a/scripts/convert.py +++ b/scripts/convert.py @@ -48,7 +48,6 @@ def __init__(self, nb_path, output_path=None, template_file=None, self._execute_kwargs = dict(timeout=900) if kernel_name: self._execute_kwargs['kernel_name'] = kernel_name - # self.kernel_name = ExecutePreprocessor.kernel_name.default_value def execute(self, write=True): """ From 038f1662b8df79df4ce0df6f0a8c3f4d1569b984 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Thu, 9 Aug 2018 09:48:29 +0200 Subject: [PATCH 27/83] add metatag to output RST file, and TODO --- scripts/convert.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/scripts/convert.py b/scripts/convert.py index 4c0c702bd..71b013bd9 100644 --- a/scripts/convert.py +++ b/scripts/convert.py @@ -1,5 +1,6 @@ # Standard library from os import path, walk, remove, makedirs +import re # Third-party from astropy import log as logger @@ -138,6 +139,31 @@ def convert(self, remove_executed=False): output_file_path = writer.write(output, resources, notebook_name=self.nb_name) + # read the executed notebook, grab the keywords from the header, + # add them in to the RST as filter keywords + with open(self._executed_nb_path) as f: + nb = nbformat.read(f, as_version=IPYTHON_VERSION) + + top_cell_text = nb['cells'][0]['source'] + match = re.search('## [kK]eywords\s+(.*)', top_cell_text) + + if match: + keywords = match.groups()[0].split(',') + keywords = [k.strip() for k in keywords if k.strip()] + + # Add metatags to top of RST files to get rendered into HTML, used for + # the search and filter functionality in Learn Astropy + meta_tutorials = '.. meta::\n :keywords: filterTutorials\n' + with open(output_file_path, 'r') as f: + rst_text = f.read() + + with open(output_file_path, 'w') as f: + rst_text = '{0}\n{1}'.format(rst_text, meta_tutorials) + f.write(rst_text) + + # TODO: now what? need to add some sphinx stuff to the top of the RST + # tile to generate metadata tags in the rendered HTML + if remove_executed: # optionally, clean up the executed notebook file remove(self._executed_nb_path) From c6d81548dbd4dcf91f43b385841f9e73f5e8bd21 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Thu, 9 Aug 2018 11:36:08 +0200 Subject: [PATCH 28/83] add keywords automatically by parsing notebook headers --- scripts/convert.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/scripts/convert.py b/scripts/convert.py index 71b013bd9..031ef5d44 100644 --- a/scripts/convert.py +++ b/scripts/convert.py @@ -13,6 +13,15 @@ IPYTHON_VERSION = 4 +def clean_keyword(kw): + """Given a keyword parsed from the header of one of the tutorials, return + a 'cleaned' keyword that can be used by the filtering machinery. + + - Replaces spaces with capital letters + - Removes . / and space + """ + return kw.strip().title().replace('.', '').replace('/', '').replace(' ', '') + class NBTutorialsConverter(object): def __init__(self, nb_path, output_path=None, template_file=None, @@ -149,21 +158,21 @@ def convert(self, remove_executed=False): if match: keywords = match.groups()[0].split(',') - keywords = [k.strip() for k in keywords if k.strip()] + keywords = [clean_keyword(k) for k in keywords if k.strip()] # Add metatags to top of RST files to get rendered into HTML, used for # the search and filter functionality in Learn Astropy - meta_tutorials = '.. meta::\n :keywords: filterTutorials\n' + meta_tutorials = '.. meta::\n :keywords: {0}\n' + filters = ['filterTutorials'] + ['filter{0}'.format(k) + for k in keywords] + meta_tutorials = meta_tutorials.format(', '.join(filters)) with open(output_file_path, 'r') as f: rst_text = f.read() with open(output_file_path, 'w') as f: - rst_text = '{0}\n{1}'.format(rst_text, meta_tutorials) + rst_text = '{0}\n{1}'.format(meta_tutorials, rst_text) f.write(rst_text) - # TODO: now what? need to add some sphinx stuff to the top of the RST - # tile to generate metadata tags in the rendered HTML - if remove_executed: # optionally, clean up the executed notebook file remove(self._executed_nb_path) From 6616d0ada1d96ab6f959db154bdf1c77d3dc7d06 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Thu, 9 Aug 2018 11:40:38 +0200 Subject: [PATCH 29/83] Protect against case where a notebook doesn't have keywords --- scripts/convert.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/convert.py b/scripts/convert.py index 031ef5d44..545cfd0ef 100644 --- a/scripts/convert.py +++ b/scripts/convert.py @@ -159,12 +159,14 @@ def convert(self, remove_executed=False): if match: keywords = match.groups()[0].split(',') keywords = [clean_keyword(k) for k in keywords if k.strip()] + keyword_filters = ['filter{0}'.format(k) for k in keywords] + else: + keyword_filters = [] # Add metatags to top of RST files to get rendered into HTML, used for # the search and filter functionality in Learn Astropy meta_tutorials = '.. meta::\n :keywords: {0}\n' - filters = ['filterTutorials'] + ['filter{0}'.format(k) - for k in keywords] + filters = ['filterTutorials'] + keyword_filters meta_tutorials = meta_tutorials.format(', '.join(filters)) with open(output_file_path, 'r') as f: rst_text = f.read() From c4aec9bf9b66940ebf59cafeff0f4dc1ce459304 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 21 Aug 2018 12:12:28 -0400 Subject: [PATCH 30/83] Incorporated reviewer comments for 01 --- tutorials/01-conda_astropy_install.rst | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/tutorials/01-conda_astropy_install.rst b/tutorials/01-conda_astropy_install.rst index 0ef2a1ffa..08dad49d3 100644 --- a/tutorials/01-conda_astropy_install.rst +++ b/tutorials/01-conda_astropy_install.rst @@ -71,7 +71,7 @@ to Anaconda's package search list, run the following command: :: - conda config --add channels http://ssb.stsci.edu/astroconda + conda install --channel "astropy" package Some astronomical packages are also available in the *conda-forge* channel. There is no wrong choice between installing a package from @@ -89,14 +89,13 @@ Anaconda `__ is available on the main documentation pages. - Here's an example for downloading a few commonly used Astropy - affiliated packages, directly from the *astroconda* channel: + affiliated packages, directly from the *astropy* channel: :: - conda install -c astroconda astroquery photutils specutils - -You will not need to use ``-c astroconda`` if you ran the commands above -to add *astroconda* to your default channels. + conda install -c astropy photutils specutils + +**Note:** If you plan to use the ``astroquery`` package, we recommend using ``pip install`` instead of ``conda install``. See the *Conda vs Pip* discussion, below. Additional materials ==================== @@ -123,16 +122,16 @@ Anaconda is one of several package management systems that you might use for Python. The `Python Package Index `__ project also provides a package management program called `pip `__. -Generally, you should pick one package management program and stick to +Generally, you should pick one package management system and stick to it. However, there may be cases where a package is available with ``pip`` and not ``conda``, or vice versa. With Anaconda, you can still use ``pip`` to download and install software within the conda environment of your -choice. +choice. However, conflicts may arise if you ``pip install`` a package that has already +been installed with ``conda``, or vice versa. So once you use ``pip`` to install a package, you should use ``pip`` to update and manage that package. -Conflicts may arise if you ``pip install`` a package that has already -been installed with ``conda``, or vice versa. +**In particular, we recommend using `pip` to manage the `astroquery` package.** This library is under continuous development. The latest versions and bug-fixes are more readily available with ``pip``, because it takes a long time for the ``conda`` distribution to update. Further documentation on this topic is available on the `conda package management documentation From 332ea746d4aa2f12304c2a1188e3c5e86b38f256 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Sat, 1 Sep 2018 08:10:25 -0600 Subject: [PATCH 31/83] use keywords from google sheet --- tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb | 2 +- .../notebooks/Coordinates-Transform/Coordinates-Transform.ipynb | 2 +- tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb | 2 +- tutorials/notebooks/FITS-header/FITS-header.ipynb | 2 +- tutorials/notebooks/FITS-images/FITS-images.ipynb | 2 +- tutorials/notebooks/FITS-tables/FITS-tables.ipynb | 2 +- tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb | 2 +- tutorials/notebooks/UVES/UVES.ipynb | 2 +- tutorials/notebooks/plot-catalog/plot-catalog.ipynb | 2 +- tutorials/notebooks/quantities/quantities.ipynb | 2 +- tutorials/notebooks/redshift-plot/redshift-plot.ipynb | 2 +- tutorials/notebooks/synthetic-images/synthetic-images.ipynb | 2 +- .../notebooks/units-and-integration/units-and-integration.ipynb | 2 +- tutorials/notebooks/vo/conesearch.ipynb | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb b/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb index 4f077f4c7..d7611322e 100644 --- a/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb +++ b/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb @@ -15,7 +15,7 @@ "- Use a `SkyCoord` object to query a database\n", "\n", "## Keywords\n", - "astropy.coordinates, OOP\n", + "coordinates, OOP\n", "\n", "\n", "## Summary\n", diff --git a/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb b/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb index 5b4dbd214..3f622ad7d 100644 --- a/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb +++ b/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb @@ -15,7 +15,7 @@ "- See how to track an object's altitude from certain observing locations\n", "\n", "## Keywords\n", - "matplotlib, numpy, astropy.coordinates, astropy.units\n", + "coordinates, units\n", "\n", "## Summary\n", "\n", diff --git a/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb b/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb index 3d743aaa1..2f72d5b70 100644 --- a/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb +++ b/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb @@ -17,7 +17,7 @@ "* Create intensity moment maps with spectral_cube\n", "\n", "## Keywords\n", - "FITS-files, FITS-images, FITS-cubes, moment_maps, contours\n", + "FITS, radio astronomy, data cubes, contour plots\n", "\n", "## Summary\n", "\n", diff --git a/tutorials/notebooks/FITS-header/FITS-header.ipynb b/tutorials/notebooks/FITS-header/FITS-header.ipynb index e755d0e02..30908b46b 100644 --- a/tutorials/notebooks/FITS-header/FITS-header.ipynb +++ b/tutorials/notebooks/FITS-header/FITS-header.ipynb @@ -14,7 +14,7 @@ "* Edit the FITS header and write the modified file as a FITS file\n", "\n", "## Keywords\n", - "FITS, input/output\n", + "FITS header, file input/output\n", "\n", "## Summary\n", "This tutorial describes how to read in, edit a FITS header, and then write \n", diff --git a/tutorials/notebooks/FITS-images/FITS-images.ipynb b/tutorials/notebooks/FITS-images/FITS-images.ipynb index 0278e3800..91533a718 100644 --- a/tutorials/notebooks/FITS-images/FITS-images.ipynb +++ b/tutorials/notebooks/FITS-images/FITS-images.ipynb @@ -13,7 +13,7 @@ "- TODO\n", "\n", "## Keywords\n", - "matplotlib, FITS, images, astropy.table, astropy.io\n", + "matplotlib, FITS image, table\n", "\n", "## Summary\n", "\n", diff --git a/tutorials/notebooks/FITS-tables/FITS-tables.ipynb b/tutorials/notebooks/FITS-tables/FITS-tables.ipynb index a8e96137f..382e335aa 100644 --- a/tutorials/notebooks/FITS-tables/FITS-tables.ipynb +++ b/tutorials/notebooks/FITS-tables/FITS-tables.ipynb @@ -13,7 +13,7 @@ "- TODO\n", "\n", "## Keywords\n", - "astropy.table, astropy.io, matplotlib, FITS, images\n", + "table, file input/output, matplotlib, FITS image\n", "\n", "## Summary\n", "\n", diff --git a/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb b/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb index 3113648e7..53d09c006 100644 --- a/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb +++ b/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb @@ -16,7 +16,7 @@ "* Visualize the fit\n", "\n", "## Keywords\n", - "astropy.modeling, model fitting, astroquery, matplotlib\n", + "modeling, model fitting, astroquery, matplotlib, astrostatistics\n", "\n", "## Summary\n", "In this tutorial, we will become familiar with the models available in `astropy.modeling` and learn how to make a quick fit to our data." diff --git a/tutorials/notebooks/UVES/UVES.ipynb b/tutorials/notebooks/UVES/UVES.ipynb index afd01e1fd..88d8dcd47 100644 --- a/tutorials/notebooks/UVES/UVES.ipynb +++ b/tutorials/notebooks/UVES/UVES.ipynb @@ -13,7 +13,7 @@ "* TODO\n", "\n", "## Keywords\n", - "matplotlib, astropy.io, astropy.wcs, astropy.units, astropy.constants, FITS\n", + "matplotlib, file input/output, wcs, units, FITS image\n", "\n", "## Summary\n", "This tutorial follows my real live data analysis of MN Lup and the code developed\n", diff --git a/tutorials/notebooks/plot-catalog/plot-catalog.ipynb b/tutorials/notebooks/plot-catalog/plot-catalog.ipynb index fa9a33072..b3f425fe2 100644 --- a/tutorials/notebooks/plot-catalog/plot-catalog.ipynb +++ b/tutorials/notebooks/plot-catalog/plot-catalog.ipynb @@ -15,7 +15,7 @@ "* Make a spherical projection sky plot using `matplotlib`\n", "\n", "## Keywords\n", - "astropy.io.ascii, astropy.coordinates, units, matplotlib\n", + "file input/output, coordinates, units, matplotlib\n", "\n", "## Summary\n", "\n", diff --git a/tutorials/notebooks/quantities/quantities.ipynb b/tutorials/notebooks/quantities/quantities.ipynb index 8e01bf9de..dfec6eb7e 100644 --- a/tutorials/notebooks/quantities/quantities.ipynb +++ b/tutorials/notebooks/quantities/quantities.ipynb @@ -13,7 +13,7 @@ "* TODO\n", "\n", "## Keywords\n", - "astropy.units, astropy.constants, quantity, matplotlib\n", + "units, matplotlib, radio astronomy\n", "\n", "## Summary\n", "\n", diff --git a/tutorials/notebooks/redshift-plot/redshift-plot.ipynb b/tutorials/notebooks/redshift-plot/redshift-plot.ipynb index b9511ab90..73670eb84 100644 --- a/tutorials/notebooks/redshift-plot/redshift-plot.ipynb +++ b/tutorials/notebooks/redshift-plot/redshift-plot.ipynb @@ -13,7 +13,7 @@ "* TODO\n", "\n", "## Keywords\n", - "astropy.units, astropy.cosmology, matplotlib\n", + "units, cosmology, matplotlib\n", "\n", "## Summary\n", "\n", diff --git a/tutorials/notebooks/synthetic-images/synthetic-images.ipynb b/tutorials/notebooks/synthetic-images/synthetic-images.ipynb index be9373290..2fafc82f5 100644 --- a/tutorials/notebooks/synthetic-images/synthetic-images.ipynb +++ b/tutorials/notebooks/synthetic-images/synthetic-images.ipynb @@ -18,7 +18,7 @@ "- Overplot quivers on the image\n", "\n", "## Keywords\n", - "astrometry, WCS, FITS, polarization, radio, stokes parameters, PSF, astropy.convolution, quiver plot, astropy.visualization, matplotlib, astropy.wcs\n", + "astrometry, WCS, FITS image, radio astronomy, visualization, matplotlib\n", "\n", "## Summary\n", "In this tutorial, we will:\n", diff --git a/tutorials/notebooks/units-and-integration/units-and-integration.ipynb b/tutorials/notebooks/units-and-integration/units-and-integration.ipynb index efa6d832b..44be5c572 100644 --- a/tutorials/notebooks/units-and-integration/units-and-integration.ipynb +++ b/tutorials/notebooks/units-and-integration/units-and-integration.ipynb @@ -20,7 +20,7 @@ "* add $\\LaTeX$ labels to `matplotlib` figures using the `latex_inline` formatter\n", "\n", "## Keywords\n", - "integration, OOP, LaTeX, Planck function, probability, matplotlib, astropy.modeling, astropy.units, astropy.constants\n", + "OOP, LaTeX, astrostatistics, matplotlib, modeling, units\n", "\n", "## Companion Content\n", "* http://synphot.readthedocs.io/en/latest/\n", diff --git a/tutorials/notebooks/vo/conesearch.ipynb b/tutorials/notebooks/vo/conesearch.ipynb index ad09d7850..e13ce5462 100644 --- a/tutorials/notebooks/vo/conesearch.ipynb +++ b/tutorials/notebooks/vo/conesearch.ipynb @@ -15,7 +15,7 @@ "* TODO\n", "\n", "## Keywords\n", - "matplotlib, astropy.table, astropy.coordinates, astropy.units, conesearch\n", + "matplotlib, table, coordinates, units, conesearch\n", "\n", "## Summary\n", "Cone Search allows you to query a catalog of astronomical sources and obtain those that lie within a cone of a given radius around the given position. For more information on Cone Search, see http://astroquery.readthedocs.io/en/latest/vo_conesearch/vo_conesearch.html.\n", From 557bd7e08e82db490c470ecf9e0164a668de14b8 Mon Sep 17 00:00:00 2001 From: Rocio Kiman Date: Tue, 21 Aug 2018 10:49:44 -0400 Subject: [PATCH 32/83] New tutorial for user defined model --- .../notebooks/User-Defined-Model/.DS_Store | Bin 0 -> 6148 bytes .../User-Defined-Model.ipynb | 1192 +++++++++++++++++ .../User-Defined-Model/requirements.txt | 3 + 3 files changed, 1195 insertions(+) create mode 100644 tutorials/notebooks/User-Defined-Model/.DS_Store create mode 100644 tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb create mode 100644 tutorials/notebooks/User-Defined-Model/requirements.txt diff --git a/tutorials/notebooks/User-Defined-Model/.DS_Store b/tutorials/notebooks/User-Defined-Model/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(lam, flux, color='k')\n", + "plt.xlim(6300,6700)\n", + "plt.axvline(x=6563, linestyle='--')\n", + "plt.xlabel('Wavelength (Angstroms)')\n", + "plt.ylabel('Flux ({})'.format(units_flux))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise\n", + "We just plotted our spectrum! Check different ranges of wavelength to see how the full spectrum looks like." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The blue dashed line marks the $H\\alpha$ emission line. We can tell this is an active star because it has a high emission line.\n", + "\n", + "Now, we would like to measure the height of this line. Let's use `astropy.modeling` to fit a gaussian to the $H\\alpha$ line. We are going to initialize a gaussian model at the position of the $H\\alpha$ line. The idea is that the gaussian amplitude will tell us the height of the line.\n", + "\n", + "We are going to go quick over this part of the tutorial because it involves fitting with `astropy.modeling` and this was explained in a [first tutorial](https://github.com/astropy/astropy-tutorials/tree/master/tutorials/notebooks/Models-Quick-Fit). Check it out if you would like to know more about it." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "gausian_model = models.Gaussian1D(1, 6563, 10)\n", + "fitter = fitting.LevMarLSQFitter()\n", + "gaussian_fit = fitter(gausian_model, lam, flux)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's plot the results." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAFACAYAAAAh/38IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xd8zWf7wPHPncgQIzGCxJ5RGqMiqFVarVlU+2ipUvwo1Uk9rfap0actLdWiVFVLbWpTWkWovVJi75VhE5XIOtfvj+R8n0QmMmiu9+v1feWc77zPSXK+17nv675vIyIopZRSKvdyyOkCKKWUUipnaTCglFJK5XIaDCillFK5nAYDSimlVC6nwYBSSimVy2kwoJRSSuVyGgwopZRSuZwGA0oppVQup8GAUkoplcvlyekCZIaiRYtKuXLlcroYSimlVLbZvXv3ZRHxzIxz/SOCgXLlyrFr166cLoZSSimVbYwxZzLrXNpMoJRSSuVyGgwopZRSuZwGA0oppVQup8GAUkoplctpMKCUUkrlchoMKKWUUrmcBgNKKaVULqfBgFJKKZXLaTCglFJK5XIaDCillFK5nAYDSimlVC6nwYBSSimVy+VYMGCMKW2MWW+MOWSMOWCMeSth/TBjTLAx5q+EpXVOlVEppZTKDXJy1sJYYKCI7DHGFAB2G2PWJGwbKyKjc7BsSimlVK6RY8GAiIQCoQmPbxpjDgElc6o8SimlVG71QOQMGGPKAbWB7QmrBhhj9hljfjTGFErlmD7GmF3GmF2XLl3KppIqpZRS/zw5HgwYY/IDC4G3RSQcmARUBGoRX3MwJqXjROR7EfETET9PT89sK69SSin1T5OjwYAxxon4QGCWiCwCEJELIhInIjZgCuCfk2VUSiml/ulysjeBAaYCh0Tkq0TrvRLt1hHYn91lU0oppXKTnOxN0BDoBgQZY/5KWDcEeMkYUwsQ4DTQN2eKp5RSSuUOOdmbYBNgUtj0a3aXRSmllMrNcjyBUCmllFI5S4MBpZRSKpfTYEAppZTK5TQYUEoppXI5DQaUUkqpXE6DAaWUUiqX02BAKaWUyuU0GFBKKaVyOQ0GlFJKqVxOgwGllFIql9NgQCmllMrlNBhQSimlcjkNBpRSSqlcToMBpZRSKpfTYEAppZTK5TQYUEoppXI5DQaUUkqpXE6DAaWUUiqX02BAKaWUyuU0GFBKKaVyOQ0GlFJKqVxOgwGllFIql9NgQCmllMrlNBhQSimlcjkNBpRSSqlcToMBpZRSKpfLsWDAGFPaGLPeGHPIGHPAGPNWwvrCxpg1xphjCT8L5VQZlVJKqdwgJ2sGYoGBIvIIUB943RhTDXgfWCsilYG1Cc+VUkoplUVyLBgQkVAR2ZPw+CZwCCgJtAemJ+w2HeiQMyVUSimlcocHImfAGFMOqA1sB4qLSCjEBwxAsZwrmVJKKfXPl+PBgDEmP7AQeFtEwu/iuD7GmF3GmF2XLl3KugIqpZRS/3A5GgwYY5yIDwRmiciihNUXjDFeCdu9gIspHSsi34uIn4j4eXp6Zk+BlVJKqX+gnOxNYICpwCER+SrRpmVA94TH3YGl2V02pZRSKjfJk4PXbgh0A4KMMX8lrBsCjATmG2N6AWeBF3KofEoppVSukGPBgIhsAkwqm5/MzrIopZRSuVmOJxAqpZRSKmdpMKCUUkrlchoMKKWUUrmcBgNKKaVULqfBgFJKKZXLaTCglFJK5XIaDCillFK5XLrjDBhj/IDGgDcQCewH/hCRq1lcNqWUUkplg1RrBowxPYwxe4APgLzAEeLnCWgErDHGTDfGlMmeYiqllFIqq6RVM5APaCgikSltNMbUAioTP2SwUkoppR5SqQYDIvJtWgeKyF9pbVdKKaXUwyEjOQPjAblj9Q1gl4jojIJKKaXUQy4jvQlcgFrAsYSlBlAY6GWM+ToLy6aUUkqpbJCRWQsrAc1FJBbAGDMJ+B1oAQRlYdmUUkoplQ0yUjNQkvhkQrt8gLeIxAFRWVIqpZRSSmWbjNQMfAH8ZYwJAAzQBPjMGJMP+CMLy6aUUkqpbJBuMCAiU40xvwL+xAcDQ0QkJGHze1lZOKWUUkplvYwOR+wAXAKuApWMMU2yrkhKKaWUyk4Z6Vo4CugMHABsCasF2JiF5VJKKaVUNslIzkAHwEdENFlQKaWU+gfKSDPBScApqwuilFJKqZyRkZqBCOJ7E6wlUVdCEXkzy0qllFJKqWyTkWBgWcKS2J3DEyullFLqIZWRroXTEz83xpQGXsyyEimllFIqW2Woa6Expqgxpp8xZiMQABTP0lIppZRSKtukWjNgjCkAdAS6AFWAxUAFESmVTWVTSimlVDZIq5ngIrAD+AjYJCJijOmYPcVSSimlVHZJq5lgCOAKTAI+MMZUzOyLG2N+NMZcNMbsT7RumDEm2BjzV8LSOrOvq5RSWS08PJxly+7MvVbqwZRqMCAiY0WkHvAs8XMSLAG8jTH/NsZUyaTrTwNaprB+rIjUSlh+zaRrKaVUtunfvz/t27fn3LlzOV0UpdKVbgKhiJwUkU9FxBeoC7gDqzLj4iKykfj5DpRS6h8jICCAWbNmAXD+/PkcLo1S6Us1GDDG/GaMeccYU9W+TkSCRGSIiGR6k8EdBhhj9iU0IxRKpXx9jDG7jDG7Ll26lMXFUUqpjLHZbPTv35/8+fMDEBISks4RSuW8tGoGugPXgGHGmD3GmEnGmPbGmPxZXKZJQEWgFhAKjElpJxH5XkT8RMTP09Mzi4uklFIZExISwqFDh3jnnXes50o96NLKGQgTkWki8iLgB/wM1AF+M8b8YYwZnBUFEpELIhInIjZgCuCfFddRSqmscOPGDQCqVauGk5OTBgPqoZCR4YhJuDFvTVg+NsYUBZ7JigIZY7xEJDThaUdgf1r7K6XUgyQ8PBwADw8PvLy8NBhQD4V0EwiNMV8YYwoaY5yMMWuNMZeBliIy634vboyZQ3yA4WOMOW+M6QV8YYwJMsbsA5oB79zvdZRSKrvYawbc3d3x9vbWYEA9FDJSM/C0iAxOGHDoPPACsB6Yeb8XF5GXUlg99X7Pq5RSOcVeM1CwYEG8vb05fPhwDpdIqfRlZG4Cp4SfrYE5IqJdAZVSKhVaM6AeRhkJBpYbYw4Tn0S41hjjCdzO2mIppdTDyR4M2GsGrl+/TkRERA6XSqm0pTXOgBeAiLwPNAD8RCQGiADaZ0/xlFLq4RIeHo4xhvz58+Pt7Q1AaGhoOkcplbPSqhn40RizzRgzEqhJ/JDEiMgtEQnLltIppdRD5saNGxQoUAAHBwcrGNCmAvWgSzWBUERaGWNcgSeI7+I32hhzFlgNrBaRs9lTRKWUeniEh4fj7u4OoMGAemik2ZtARG6TcPMHMMaUB1oBE4wxJUREBwRSSqlEbty4QcGCBQENBtTDI0ODDtmJyClgIjDRGOOcNUVSSqmHV+KaAQ8PD1xdXTUYUA+8tBIISxtj5hpj/jTGDDHGOCXatkREorOniEop9fC4ceOGFQwYY7R7oXoopJlACAQAbwBewAZjTJGEbWWzuFxKKfVQCg8Pt5oJIL6pIDg4OAdLpFT60goGPEXkOxH5S0TeIL55YKMxpiIg2VM8pZR6uCSuGQDw8vIiLEw7YKkHW1rBgFNCbwIARGQm8BbwG/E1BUoppe5wZ81AiRIlNBhQD7y0goEfgHqJV4jIH8TPTaAzCSql1B1iYmKIjIxMUjNQokQJbty4we3bOnCrenClGgyIyFgR2ZDC+kARaZG1xVJKqYdP4kmK7IoXLw7AhQsXcqRMSmVERqYwLpkdBVFKqYdd4kmK7EqUKAGgTQXqgZZmMGCM8QV+yaayKKXUQy2lmgF7MKA1A+pBltY4A82AuUC37CuOUko9vFKqGbA3E2jNgHqQpTUC4TKgnogcz67CKKXUw8xeM5A4GChWrBigwYB6sKXVTDAb+NgYk25egVJKqf/VDCRuJnB2dqZIkSLaTKAeaGn1JuhLfBfCmdlXHKWUenil1EwA8U0FWjOgHmRpfusXkf+SMGOhUkqptKWUQAg68JB68KXbBCAiP2dHQZRSKiMWLVqEj48PkZGROV2UZG7cuIGzszOurq5J1mswoB50GZrC2BhTAyiXeH8RWZRFZVJKqVQtWLCAo0ePEhgYyOOPP57TxUnizqGI7YoXL645A+qBlm4wYIz5EagBHABsCasF0GBAKZWtRIQ///wTgJ07dz5wwcCdkxTZlShRglu3bvH333+TP3/+HCiZUmnLSE+B+iLiJyLdReTVhKVnlpdMKZWr7dmzB5vNlmTdmTNnrOmAd+zYcc/njo6OZtmyZfTp08cKLjJDajUD9zoKYVhYGKtXp5y2NWfOHBYsWHD3hVQqBRkJBrYaY6pleUmUUirB8ePHqVOnDrNnzwZg2rRpzJs3j02bNgFQqVKlDAcD27dvZ8uWLUnWvfnmm7Rv354pU6bQs2dPoqOjM6Xc169fT7Fm4F7nJ/jiiy9o27YtUVFRSdZfvHiR3r17M2rUqHsvrFKJZCQYmE58QHDEGLPPGBNkjNmX1QVTSv3z/fXXX5w5cybZ+qNHjwKwceNGbDYbgwYN4tVXX2XWrFkULFiQHj16cPz4ca5evZrm+efNm0ejRo14/vnnEREA4uLiWLBgAc8//zxLly7l+PHjTJo06b5fi81mIygoCB8fn2Tb7rVmYO/evcTFxSULIsaMGUNERITmIahMk5Fg4EfihyRuCbQD2ib8vG/GmB+NMReNMfsTrStsjFljjDmW8LNQZlxLKfVgERFatWpF3759k207ffo0ANu2bePw4cNcuXKFyMhIVq9eTcOGDalfvz4Au3btSvX8M2fO5KWXXsLDw4PQ0FD2799vHXP16lU6depEu3btaNGiBSNGjLDGCLhXhw4d4saNGzRo0CDZtnsJBkSEffviv3eFhIRY6y9dusSECRNwcHDgwoULVpCj1P3ISDBwVkSWicgpETljXzLp+tOIDzISex9YKyKVgbUJz5VS/zCHDx8mLCyMgIAAIiIikmyzBwP79+9n5cqVAPTp0weARo0a4efnB8QnEaZkyZIl9OjRg2bNmllNBL///jsAq1atwsHBgRYtWmCMYeDAgVy9epXdu3ff1+vZunUrQIrBQNGiRXFxcbFeV0ZcuHCBy5cvAxAaGmqtnzNnDhEREfTq1YuYmBiuXbt2X+VWCjIWDBw2xsw2xrxkjHnOvmTGxUVkI3BnPV974psmSPjZITOupZR6sAQEBAAQFRXF+vXrk2yz3zRFhHHjxuHl5cX48eP57LPP6NmzJ+7u7vj4+KSYN7B7925efPFF/Pz8WLp0KZUrV6ZatWr89ttvAKxevRp/f3+KFCkCQIUKFQCsxMR7tXXrVooUKULlypWTbXN0dOSRRx4hKCgow+ez1wpA0mDg8OHDFCpUiGbNmgE6G6LKHBkJBvICUcDTxDcP2JsKskpxEQkFSPhZLKWdjDF9jDG7jDG7Ll26lIXFUSp3OXHiBGvWrMny62zYsIESJUrg5uaWLGP+9OnT1K1bF4Dz58/TpEkTnJ2d+eCDD6wqd39/f3bs2JGkmvzatWs8//zzFCtWjBUrVljd+J555hk2btzIuXPn2LFjBy1b/q9CsmTJkkDmBAP169fHGJPidl9f37sKBuz7GmOSBAPHjh2jUqVK95yUqFRKMjIC4aspLDnetVBEvk/o8ujn6emZ08VR6oF19uxZ/Pz8MlxFPWzYMDp06EBcXFymleHw4cP4+voydOhQIP4b/4YNG2jevDnNmjVj1apVSfY/c+YMtWvX5pFHHgGgSZMmyc5Zt25dwsLCktzE+/XrR3BwMPPnz6do0aLW+meeeYaoqCjq16+PiNCmTRtrm5ubGx4eHpw/f/6eX9+1a9c4dOhQik0Edr6+voSEhKSb9Gi3b98+vLy8KFGiRJKcgePHj1O5cmWdGlllqnSDAWPMdGOMR6LnhRIGIsoqF4wxXgnX8gIuZuG1lHooiAgBAQH3lCy2ceNGdu/ezbx58zK0//79+4mIiODkyZN3fa2U7Ny5kwYNGrB//36mT5+OiHDs2DHCwsJo2rQpLVu25MSJExw7dgyAiIgILl68SNmyZa1EwcaNGyc7r7+/P/C/8Qa2bdvGvHnzGDJkiHWcXZMmTShevDienp7MnTvXyjmwK1Wq1H3VDGzfvh1IOV/AztfXFyBJ7cCqVas4d+5civvv27ePGjVq4OXlZdUMREVFcfbsWSpVqmTVkGjNgMoMGWkmqCEi1+1PROQaUDvrisQyoHvC4+7A0iy8llIPhYCAAJo1a8bChQvv+lh7N73UBq9JLC4ujsOHDwPcVZV2Wr788kucnJz44IMPOHPmDEeOHLHyBZo2bWp9S7e/NntXw3LlytGrVy969uxJ9erVk523Zs2aODk5WU0F77//PsWKFWPQoEHJ9s2bNy/BwcEEBgbSuXPnZNtLliyZYjBw+PBhK4ExLevWrSNPnjxW00ZK7gwGAgICaN26NUOGDEm2b2xsLAcPHkwWDJw6dQqbzUblypUpVKgQefLkua9gICIiItkYBhAffH722Wds2LAh1WPnzp1Ly5Ytkw0MpR5OGQkGHBJ37zPGFCaDcxqkxxgzB9gK+BhjzhtjegEjgRbGmGNAi4TnSuVq9sF2li9fftfH2r9xb9q0yZpVLzWnTp3i9u3bQOYEAzabjXXr1tGqVSurN8CqVauYOnUqFStWpEqVKpQvX56GDRvy888/IyJWc0a5cuVo2LAhU6dOxcEh+UeVq6srNWrUYOfOnaxatYoNGzbwn//8J9Xhfh0dHVNtzy9VqpTVTDB37lymTZvG4sWL8ff354UXXkizRkZEWLRoEU8++SQFChRIdT9vb28KFSpEUFAQt27dolevXgCsXLmS2NjYJPuuXLmS6OhofH19kwQD9t9lpUqVcHBwoFixYvccDNhsNho1asSrr76abNvZs2f58MMPeeaZZ1ixYkWKx3788cf89ttv990LQz0gRCTNBXgFOAR8AowADgPd0jsuO5c6deqIUg+ja9euSY8ePSQ4ODjN/Vq1aiWAeHp6Slxc3F1d47HHHpNChQoJIIsWLUpz3yVLlgggDg4O0qlTp7u6TkoCAwMFkOnTp4uISNWqVcXb21sAmTRpkrXfd999J4Ds2rVLJk6cKEC674mISL9+/aRAgQJSuXJlqVy5skRFRd1TOT/++GMxxsjff/8tTk5OQvz8K+Ls7CyAXLx4MdVj9+7dK4B8//336V6nSZMm0qBBA+nbt68A8uabbwog69evt/ZZtmyZODs7S82aNeXGjRtW2WJiYuSrr74SQC5fviwiIrVr15bWrVvL0aNHpXPnzvL3339n+DUvXrxYAPHy8kq2bf78+QJI2bJlJU+ePHL69Okk29esWWO9Rx9//HGGr6kyF7BLMuk+mtEpjDsBF4BLwHMiMiNzQhGlcrcpU6Ywbdq0NL/xiwjbtm3D09OTS5cupTnQTkrHHjt2jM6dO1OgQIF0mwoOHjwIQPPmzTOlZmDt2rUAPPnkk0B8Il9ISAjFixenR48e1n7/+te/cHZ25ueff+bMmTM4OztbbeJp8ff35+bNmxw7dozx48fj7Ox8T+UsWbIkIsKaNWuIiYlh+PDhTJ48me+//x4g1XZ9iG/ecHBwoH379ulex9fXl23btjF58mTee+89Pv30U1xcXFi2bBkQ//vq06cP1apVY/369RQsWBAvLy9EhAsXLnDs2DE8PDwoXLgwED+Y0YULF5gzZw7z5s1j7dq1iAhdu3Zl8eLFqZZDEpoBIL7bYuIERYjPw3BxcWH+/PnExsaybds2IH6sh7feeosxY8ZQtGhR6tatm+Lf7pUrV7h4UdO9HiapBgMJ3fa+Mca0BE6KyAQRGS8iB7OxfEr9Y8XFxTFx4kQADhw4kOp+R48e5dq1a7z33ns4ODhkqA3b7uLFi9y8eZNq1arx1FNPWQPvpObAgQOULl2axx9/nOPHjxMZGZnha0F8Vn3iG+fatWvx8fGxuu+1atUKgHfeeQdXV1drv0KFCvHss8/y888/8/vvv1OmTJkUmwbuZE8i7NChA88888xdlTWxUqVKAVg35Zdffpk+ffpYuQopBQMffPCBNURy48aNKVYsxV7QSfj6+iIiPPfcc4wcOZL8+fPz5JNPsnTpUuuGHxYWRo8ePShUKL511svLC4i/adt7EtibO+xTI9tv1uvWrSMoKIjZs2fzwQcfpNqev3btWnbu3Mkrr7wCkKyqf8eOHdSuXZuaNWvi6OhIUFAQ169fZ8qUKYwbN47Vq1fTu3dvOnXqRGBgYJJ8ixUrVlCpUiXatcuUgWpVNknrv60+sBh4AthgjPnVGPOWMaZKtpRMqTucPHmS//u//+P48eM5XZRMsWrVKk6fPo2zs3OawYD9g75NmzbUr1//roIBe/Jg5cqVqVu3LqdPn+bmzZup7n/w4EGqVauGr68vNpuN/fv3s3fv3nSvc+PGDbp27YqXlxdVq1bl0KFDREdHs3HjRqtWAODpp59m4cKFvPPOO8nOMWLECDw9PQkMDKRcuXIZen2PPPIIU6dOZfLkyRnaPzX2YGXlypW4u7tTvnx5AEqXLg0kDwY2btzIyJEjmTlzJidOnOCFF17I0HVeeOEFRo4cyYwZM6xg59lnn+XkyZMcOnTIqo2xJxtC0mDAPsaAnT0YsPdmWLdunfVN/ciRI/zxxx8plmPJkiXkz5+fsWPH4uDgkCQYiI2NZdeuXfj7++Pi4oKPjw9BQUHs2bMHgJEjR9K3b1/efvtt64a/ZMkSbt26Za2Liopi586dGe5GqR4AGW1PALyAnsB8IBCYmFltFfe7aM7AP9+yZcukQIECAsjQoUNzujiZolWrVuLt7S0vv/yyFC9ePMm2U6dOWY/79u0r7u7uEhcXJ59++qkAEhoamqFrTJ06VQA5ceKELFq0yGqXT0lsbKy4urrKu+++K4cPHxZASpYsKYAsWbIkzesMGDBAHBwcZMCAAeLp6SmPPvqovPzyyxk6NrFbt27J8OHDZeXKlRk+JjNcunTJagNv1qyZtT4uLk5cXFzkvffeS7LOz89PSpUqJVeuXJG1a9dKdHT0PV/7xIkTAsjEiRNlzJgxyXIUzp49K4CMGzdOHBwckrTRjx071ip3pUqVBBAfHx+pVauWFC9eXNq0aZPiNR9//HFp1KiRiIhUq1ZN2rZta23bt2+fADJz5kwREencubOUL19evvjiiyT5CiIiNptNfHx8BBBXV1cB5PXXX5fffvst1d99ZGTkXee9pMZmsyV5fv78eRk5cmSS/5+MOHnypHTv3l3Cw8MzpVzZhUzMGchwrwCJHw3wR+BHY4wDkHqHWqUykYjwxhtvULZsWW7cuJGhb6oPuqioKNatW0f//v3x9vZm5syZXLlyhSJFirBr1y7q1q3LmjVreOqpp9i2bRv16tXDwcGB1q1b8+GHH7Jq1aoUs8DvdPToUZycnChTpozVhezw4cPUqVMn2b72ngTVq1enUqVKuLm5cenSJdzd3fnhhx9SbRP/66+/mDhxIv3792f8+PG0adOGVq1acfDgQYYOHXpX1cVubm58/PHHGd4/sxQpUgQXFxeioqJ47LHHrPUODg6UKlUqSc3AggUL2LVrF9OnT6dw4cI0b978vq5dvnx5vLy82LRpE87OztZ4CHb23IlvvvkGm81GzZo1rW32gYcA/v3vf/N///d/HDlyhBEjRhAXF8fw4cNp2LAh9erV4+OPP8bDw4O4uDj27t1Lz57xY8fVqVMnyYiT9nEb7E0wvr6+zJs3j/Xr11OuXDlrGGeIHx1xzZo1LFy4kEOHDtGlSxeaNm1KVFQUrq6uBAQEJPm7uXTpEo899hgvvfQSX3zxBSKCzWbD0dHxrt+3P//8kxdeeIFx48bxr3/9i88//5xhw4YRHR3NtWvXGDky4x3Rli9fzvTp06lRowbvvvtu6jvaYiEuCuKiE37m8ONMlG4wYIxZTnzkmdgNYJcxZreI3M7UEj1kzp8/jzHGqmZUmS8oKIgzZ84wZcoUfv/992ztynThwgU8PT0z1H4dExPDoUOH8PHxwcXFJc19AwMDiYqKolGjRuTNmxeIr6Jv3Lix9cG8YcMG6tWrR1BQkPWBWrNmTUqWLMnKlSuTBQM//PADjz76KPXr12fNmjWsXbuWwMBAKlSoQJ48eahYsSKOjo4cOnQoWXmuXbtGt27dcHBwoEGDBjg6OrJs2TJrkJ5Ro0YREhKCt7d3kuOio6N57bXXKFKkCJ988gkALVu2ZPHixZQoUSLZ4D8PKvv/8MmTJ5MEAxDfVJA4GJg2bRrly5fn5ZdfzrRrN2rUiM2bN+Pp6ZmkiQDAyckJT09PqzmiY8eO1jZ7MJA/f366devGu+++y82bN2nbti0VKlTgypUr7N+/n2+++Yb58+ezYMECChcuzK1bt6hdO364mDp16jBjxgxCQkIoXLgwy5Ytw8PDw2qOsJfnt99+47nnkk9LU7p0ad5+++0k61xcXHj88cet8SQgPqh/9dVXOX/+PPPmzWPUqFFMmDCBYcOGMXPmTCufJC42lmOHD1C1SgWITbjx2aIhNoo/fl/JryuW8kSj+vw4ZRK1C/3N0jGvUjBkFQd/mcbYnrW5EHyWMuErYLtHkmOtx3FR8c8TPW598xD+b0D+C+8jP/2AsR9ju+PmK5k8poKjS6LFOeXHefKCi0cK+7gAEzKtKBmpGTgJeAJzEp53Jr5nQRVgCvHTG/+j2Ww2VqxYQbt27ZL1U+7WrRsRERFWm53KfEuXLsUYQ7t27QgLC2PBggWEh4dTsGDBezpfbGwsLVq0oEyZMowePZrUhrO+du0aFSpU4KOPPuKDDz5I97z/+c9/GDVqFM7Oznz66afW4De3b9+mT58+1KxZk4EDBwJYM+k1aNCAmJgYID55r3HjxmzcuBGIH7lv165d2Gw2a2Q7YwytW7dm7ty5REdHW9nzJ0+epE+fPpQsWZItW7bQtWtX7HN22L+ZOzs7U7FiRWtQocTatm3Lnj17WLBggTUEsL2t39XVlc8//5wZM2bw73//O8lxb775Jtu3b2fevHmwfOi6AAAgAElEQVR4eFgDldKhw8M3v1ipUqU4efJkslqT0qVLW4Pv3Lhxg7Vr1/LWW29lKEDMqIYNG7JgwQKCg4MZMGBAsu0+Pj6ULl2an376KclnkD0YqFu3Li4uLjz55JMEBgZSq1YtjDGMHz8eiJ+2uWPHjrz33nvW+WvXqgkxkfjXrIJnfujfrR1XLoZw5VIY/+nzMiZ0O9iiqVvsOm0eAZc8Nl72c4T90zL07XXs01c4tH8v0QtaExsVwZmTx3i/XAhffpif6MizRH1XgY6Xz/Pc67G47GxNzEEXnBwFx7hoqgL8lvx9egp46jEg4k+e7WpfGwFx02jZBSAQKgFcgU0J/7MOecDBGfIk3EDvfOzoQkTkbW5GGS7+HUPBMgUoU65Swo34f/vYTB6Mkys4uvDTz7PZuWcfr7/5Do/WeCz9G3pKjx3yQCrjXmRc5gUDGckV2JjaOuBAZrVX3M+S1TkDK1asEEB+//33ZNuKFSsmgISEhGRpGe7X9u3bpWHDhnLt2rWcLspdq1OnjjRo0EBE4nMHANm8eXOK+wYEBMjatWuTtSUmNm/ePAHEGCNFihRJ8fcqIlYbe5kyZSQ2NjbFfX755ReZPXu2hIaGSt68eeXpp5+WBg0aiKenp8TGxsrt27etMQLc3Nzk6tWrIiLSqVMnKV++vIjEt3sWKFBABgwYIDExMVZuROHCheW///2vAHLlyhXrmvaxANatW2etGzRokDg6OooxRooXLy4ODg4yefJkqVmzpkycONHa79lnn5Xq1asneQ2nTp0SQL744otU37NGjRrJI488Yj2PioqSIUOGCCDvv/9+qsc9TLp06SL58+dP1p49ZMgQcXR0lNjYWJk1a5YAsmXLloyd1GYTiY0WibopEnFF5GaIyPVTIleOiFzcJxK6U+T8Zjm85jt5xgdpVw1ZO+k1kQMzRPZNFQmcKLJrrNz+c4REb/xY5M8PRQLeE1n7psjvfeX20i4yswsS9KmPyKJ2EjX7CYmcVk9kVgORnx8T+am6yNTKIpPLyM0v88uVEUjkKEeJGYXI6ExexjqLjCsg8m1Rke+8JWK8lxx8Dzk8xEW2v4n8+Tpy+JOSEjmrmSzqjmx6v6RMfxEJGlNfFg/wlgnPO0vEb2/J1/9ylw+aI1vGPy+ye5zI3ski+6fJkaXDpOOjyK/fDpBt8z6Rs1tmioRskyXfD5W2DSrI+f0bRG6clZEfvysebkYib16VdWvXyKBBg2T37t3WryQwMFA++uijJJ8R1apVk/bt20vVqlUl8f3EZrPJ1q1bpU+fPlKwYEGpUqWKfPTRR1aeRufOna19b9y4Id27d8/WewGZmDOQkWDgEFAm0fMywMGEx4GZVZD7WbI6GLAnbY0ePTrJ+ps3b1p/FD/88EOWXNtms911MozdihUrZOjQoWKz2eSpp54SQJYvX565Bcxi586dE0A+//xzERE5ffq0lWwlInLlyhU5cOCA2Gw2uX37thQsWFAA8ff3T5LoZGez2cTf318qV64sQUFB8uijj4qjo6OMHj062U2gf//+1u931apVyc5169Yt63o1a9YUR0dHOXbsmMyZM8e6YfznP/8RQN59913rhmuz2aREiRLStWtX61z16tWTZs2aya5duwSQ5s2bCyDVqlUTHx+fJNe9efOmODs7S79+/UREJCIiQgoXLiydOnWS1157zUriSsngwYPF2dlZYmJirHU//PCDAHLgwIFUfw9ffvmlABIWFiZXr16VmjVrCiA9evRINVDKVrY4kZhIkds3RG5dFAk/J3LthMjlgyIXAkVCtouc2yhyeo3IiZUiRxeJHJojsn+6yN7vRfaMl9Dl78nBaa+IbB4qsvEDkfXvivzxuhz8upFMexG5Nf9Z2faBt6zp7yK2eU+KzGksMtNfZHpNkR8fEZlSQeS7kiLfeoqMKygy1kVktMncG+4YB5Gv84qM9xCZWExkcmkJ/7qExEzxEfm5tsis+iJzm4gsaCGyqK3I0udEVrwksqqH3PjlJfmmPfJFW+SHHsVFtgwX2T5SZNdXIoHfiuz7QeTAzyKH54kcWyJy8leRM2tFzm+Snq19xdcLuX5qu8j1kyI3g0UiLotEhYvERsUHPXe4ffu2lCpVSnx8fGTo0KFy7tw5a1vt2rUFEBcXF7l27Zrs2bNHAGnatKkVqCe+0YqI9OrVS/Lly5dukt/s2bMFkH379kmzZs2s/+FPPvlEREReeOEFAeTo0aMiEp8Q6urqKgMHDpQJEyYIIHv27JHg4GCpUaOGAJI3b17p2rWrlC1bVgCpV6+e9O/fX1xcXKwA/5dffhFARo4ceT9/yXclM4OBjDQTDAQ2GWNOAAYoD/Q3xuQDpmfg+Ife/v37geR9wU+dOmU9XrFihTW86N1Ys2YNEyZMYNGiRSkm0cyaNYtu3brx9ttvM3r06LtKtPnmm29Ys2YNly9ftroY7dixg7Zts3IG6nsXFxdHSEiI1Z0L4psIAKvNvEyZMri7u7Nnzx5atmxpzVH/448/4uXlRXh4ON27d2f69OksXbrUSpI6cOAAbdu2pU6dOuzYsYOJEyfy6KOPsmXLFl555RUGDRrEwoULmTt3LmXKlAHi+2I/+eST7N27lylTpiSZ9hbiB5sJDw/Hz8+PXbt20bNnTypVqkSRIkVwdHRkwYIF/Pzzz3To0IExY8YQGBjI+PHj6dixI2FhYTRs2NA6V/Xq1Vm8eDHz588HYODAgaxbt46DBw8mGZwH4tuHu3fvzpQpU3jrrbdYt24dV69e5fXXX6dOnTpUrlyZ3r17p/geP/LII0RHR3P69GmrTfiPP/7Ay8vLah5IyeOPPw7Ati2buHIplDNH97J45iQ6tGsN4SdzPpHKFpPGX1bGlEhYuAw4OFlVuuUB1wrAhT3kiwmlhHdRTFxk/HanfHdXNZzG4zfeGcSW7bvYtHUnefO5p7y/Q/L//9QHQE6qIDDvqzNs2bKFnj3b0KtBxhM1S/l15NC1/LiX88/wMS4uLpw9exYgWfNq27ZtCQwM5Nlnn8XDw4PatWvTrl07li9fjre3N40bN2bdunWICMYYbty4wbx586zBs9Ji/zsODAxky5Yt9OrVi3PnzjFu3DjeeOMNq2vuhg0bqFy5MqGhody+fZsKFSrw0ksvMXDgQKZOnWrlAH3//fd07tyZggULEh4eznfffUfnzp25evUqEydOZM6cOfTv39/qerly5cpkzWkPAxMfXKSyMb7XQH1gN1CV+GDgsDxgSYN+fn5yN6Oy3a0aNWoQFBSEv79/ktyApUuX0qFDB/z8/Dh06BBXrlxJN3HsTr169eLHH39k79691KhRI9l2f39/Dhw4QEREBP369bMGqUmPiODp6cmVK1cA8PDwoGjRolSqVCnZdLEPguXLlzN48GCOHj3KgQMHqFq1KgBPPPEEly5dShKINWnShC1bthAXF8fgwYNZtmwZefPmpW7dusyaNYuLFy/i6elJ7969+eabbwDo27cv06ZNw8HBgQIFCnDq1Cny5csHxL9XM2fOpF+/frRr1445c+YQHBxMqVKlGD16NKGhoXzzzTeEhYUlyaRu2rQpISEhHDhwgBkzZtCxY0drZLgnnniCTZs2ERcXx7p162jWrBnLli2jffv2lChRgrCwMP766y8rM3zTpk0888wzRERE8EiViuzds4Nypb2RuCi+HPlfunZ+PuGmF5/YdO3KBXr1eJkSnoW5dCGER6tW4uOP3sfERf9vvyQ3zfifF0LPs2rFUlo0b0LJEkWR2NtsWLeG4kUL8UiV8qnecCUuGlt0JI6Z10wOmGRtt4nbaDP0+D5vwP97nHidE5j/vdCgoCBq1KhBvXr12L59OwEBATRt2jQz3wgAFi1aREBAAOPGjcv0c9t9++23DBgwgPHjx6eYm5Bd9u7dS506dfj11195+umngfgcGX9/f0aMGEGpUqXo2bMnQUFBHD16lLfeeovg4GC2bdtm9XJITWRkJPny5aNp06YEBASwbNkyK+fI/kXBGEPXrl2ZMWMGf/75J02aNGH16tU888wzdO3aleXLl1ufufa8i5TUqlULFxcXtm/fTuvWrVm1ahUODg5cunTJ+izIqK1btxIXF0ejRo0yfExCEr9f+numL82aARGxGWPGiEgD4OHvz3UPYmJirISrgwcPWpEqYE3x+uabb/LKK6+wYcMG6w87owIDA4H4P4QaNWpgs9msxKTdu3ezc+dOxo0bx4YNG1i+fHmGg4Fz585x5coVPvroI2bMmMEbb7zBwYMHrZHOUpuwxe7y5cu4ubnh5uZ2V6/nXly/fp3nnnuO0qVLY7PZ2LBhA1WrViUsLIyNGzcm62pWs2ZN/vzzT7p168aoUaMoV64c/fv35/Dhw7Rp0wY3Nzd8fX2tLog3b95k9uzZdOnShTGjR3M74ib5nAQir0BcNCYuim5t6hHcrwOLF8zj6oGX2b91Ey2qQMeaTtyu5E7w2ljOrhpBkRrVIS6aS2HneTzPRtr835M4bx9Gr4pREPiXdROe1C6cg2XjKFqoAE2ujIR5w2kXF82lsWW4fuUSeYwzZbe3h63x+zeKi+bmJ9E4CMAJ+K4IwR8mvOCIj+Cnj5K8B4WARV0BIhLWHIXfeqb8Bjs6WzdPT+NE04qQN/wguHgRGRWHs4nBo1Dh+IzlVBKtjIMzP8+YTXScIeTCFXyq+dKl26tpJ2al99g4ZkICVdaz11Rt376d9u3bZ0kgAPDcc8+lmK2fmbp27crmzZtzPMGzZs2aXL58OUnSad26dQkMDKR69erW8Mj9+vVj06ZN1K5dmzlz5qQbCED8DJXlypUjICAABwcHmjRpQr58+ShevDjTp0+nSJEiSRJ1T5w4AUDFihUB6NmzJ7Nnz8bNzY0PP/ww1etA/DDaH374IRcuXGDPnj1Uq1aNgwcPsnr1arp06XJX70mfPn04ceIEmzdvtnp6fPXVV6xYsYJffvnlroOLu5VmzQCAMWY4sA9YJOntnEOysmbg4MGDVK9enUaNGrFp0yZOnz5N2bJlARgwYACzZs0iODgYDw8P3nnnHUaNGpXhc0dHR5M/f35iYmLo3r077777LvXr16dbt24MGTKEDz/8kMWLFxMcHMxXX33Fp59+yu3bt3Fyckr33EuWLKFjx45s27aNunXr4uDgwHfffUe/fv04ceIEFSpUSPVYEaFixYo0bdqUn376KcOvJ+Hg5H1xbdFJvqGeO30cRxOHV7EimLhotm3ZyDdffcmw/3zA5InjeaxmdV5+6V9s3RzA6pXLGdCvN56F3K0bbVjIWY4cCOLx+nVwMkJs9C22/LmBPCYOn0rlKeKRj7CQc0RF3KRMyeJERYQTE3mLfHmdcJD7r05OJlGVsv0bZnSc4eiJ03iVKksRT69UvoU6J/qGG/9THJwQRxcc8riw/Nff2LBpG1+M/hoHp7xJzo+jM3HkYeuO3dSt3wiXvAVSOb9Tshtu+fLlKVu2LAEBAXz11VcMHDiQs2fPJmmeScmgQYMYM2YMALNnz+all17K/PfyASQiFCxYkLi4OA4ePJjh0RHV/alYsSInT56kffv2zJ8//67mnWjTpg2//vordevWtcZNeO+99xg9ejS9evWiVq1avPHGG5w6dYqpU6fy2WefERkZibOzMzabjSeeeII2bdqkW92/Z88e6tSpw6hRo/j3v//N2LFj+eyzz3jyySeZOHEiBQoUIE+e9Fvj//77b9zd3bHZbJQpU4adO3dijKFcuXJERERQv359/vjjD6s20y7bagYSvAvkA+KMMZHENxWIiNxbv66HjD1foHPnzmzatIkDBw5YwcDJkyepUKECbm5u1KtXL0mf2ow4ePAgMTExuLq6smXLFgoWLEhMTAw//PCDNUFK37598fDwoGzZsthsNs6fO0f5sqX/13f2jhut/eeVvYt5pqoDtQoG43AiGOKieab0BXrXg2vr/wtXH031Zv339ct80uAU+RzOErfwIo7EpVDlnOjYO8uRjjtvOfWB+i8Dpz7nq1YA22HDdhoADZ4BTk+Dc/+7eZZwdKGET14IPwGOzuRxdMGrRHHOBodRwKsyuOTj5jUXtuzbTafaT/Drb39wO8aVbj1631HNnPzmOeQ/w9n9136i4+D1N9/h+X91AUcXOnfphs3BiQULl7Jzz16aP92aN98eyKeff5nit1tnoMTlyxQpWvSu/iZMwgLwtO8A6r12A4dUxrx3BBqVzniVot1bb73FO++8w4oVKxgzZgx16tRJNxCA+LwBezCQeIjhfzpjDP369aNq1aoaCGSjwYMHs2/fPsaOHXvXE1A98sgj/PrrrzRr1sxa17t3byZPnkyPHj1wd3cH4vMGTp48SZkyZaxrODg4WLUG6alVqxbFihXjq6++AuLHbGjTpg3Tpk1j7ty5tG/fniVLlqR7nj179mCz2RgxYgSfffYZbdu2xd/fn8jISEaOHMmQIUN47733MlwzfC/SrRl4GGRqzYAIyP9ufqM+/4RJE75mx9ZNNGvSkMED36J71xfBFs2rr3SlSsWyfDB4IPPnzODXFUuYNOEb8jo5pHiTjIq4yYXQs5T2Lo6Ji+bUiaPsC9xFhXIluRQWTD4XR4oUKoh38aLcvnUDlzwGNxdHjC2a2KgIYqMicHEymGRjQN0n45jkpnjrdgyhF68SFQsly5THo0ixO77B3nETTeXGmuTbbx4Xhv93JIePnaR9xxfIW8CDb8ZPonmLlmzetosKlavy7Xc/MH7iZEZ8OorVa9bRqGlz3v/wY4YOHZ7uS4iMjOTcuXNUqRI/dcbmzZtp1KgRw4cPZ+jQoVbyUHpWrlzJSy+9xKRJk+ja1erIzKBBg5gwYQLXrl2jcePGhIaGcuTIEfLnz3/v73sOiYiIoHz58ly7do24uDi2b9+On1/6Xy5CQ0Px9vamdu3aVrKUUg+iH3/8kV69erFq1apkib8QP3aMp6cnzZs359y5c+TPnz/VeRzS88orrzBjRvxEvuHh4Vy4cIHp06cTFBTEsmXLOH36tJWUnJoxY8YwaNAga56Jjh07EhcXR5cuXawk8hUrVhAWFmblpUVGRuLm5pZpNQMZaSYwQFegvIh8YowpDXiJyI7MKEBm8KvqJbsmd0v9m2rCz+Bzp4n8+zoueQzexYviSEzSfezHZvrN1gGbgzN/R0QTGW3DvXBRXPO5E3bxKhev3KBcJR/2Bh0iKhZ8a9WhuFepZDfU6zcjmTx1Gi1bt6PmY/7/a3tNuEmfC73AoSMneLpVO3B05oUXX6bmY3X56OMRSc717HPPszfoMLXr1uOTT0fhW7NOsgzlvn37Mm/ePJycnHjyySeZO3fufb8F9uq0L774gvfeew+Ib2b57rvviIuL49tvv6V///6sX7+e5s2b4+Pjw+nTpzl9+nSGprK9082bNylYsCB58+ZFRAgJCbFmgUtP4rwNu0WLFtGpUydeffVVfvrpp4e+mvzLL79k8ODBDB48+K6attq2bUvLli1zNPlMqfTcvHmTqVOnMmDAgFSr6e3NBgD/93//Z9XG3q05c+bQpUsXqlSpwpEjR6z1p0+fpkKFCgwbNizdIbY7d+7Mtm3bOHPmDADTp09n6NCh/Pbbb/j4+PDrr7/Spk0bli5dyrPPPmsdM3/+/EwLBjIyzsAk4FvgUMLzQsDOzOrbmBlLnVKIfO0a37f3W8/4vr5TKoj8WFVkeg2RmXVFZjeUgNfzyJrX8sjiHsjxrx8TWdlVZHVPkTWviax7K34wj00fiWwZkdD/dqx83N5Tvn3tMZEDP8snLz8qb7ctJ7bjK+TCztnSqDyy8Nt/i1wIlIhzu8SneB759P3XRG5dEIm8JhIdIRIXK7du3ZJSpUqJh4eHFC5cWNq1ayci8QO5PP744xIRESF58uSRIkWKSFRUVIr9SW/fvi2ADB8+PNm26OhoefTRRwWQI0eOSEhIiADy9ddfJ9t327Zt0rdvX/H09JRKlSrJzZs3rW32QTiqVasmrVq1kr59+4qbm5vcunUrxTLdjRdffFEKFCgg169ft9adPHlSHB0dBZBjx46JSHwfegcHBwHktddeu69rVqhQQQB55ZVX7us8IiJhYWFWf+UmTZqkOajRwyAqKkrmz58vt2/fzumiKJUj4uLi5O233xZAvvzyy3s+z6VLl8QYIy+++GKybS1atJCyZcumOzFT+fLlpVOnTknWJf6MiY6OliJFiljXiImJEXd392wfdGhPws/AROv2ZlYBMmPJyKBD4eHh1oAQ5cuXt27Iabl8+XKSAW+++eYbAWThwoUSEBAggKxZs8bav1GjRuLv75/sPPaBLNavXy8fffSRGGPk8OHDUqBAAenfv7+IxA+okd5gFV5eXtKzZ0+JjY2VI0eOWH8sX3/9tXWj+uijj2TSpEkCyNatW1M914YNG8QYIz179hQRkZCQEClevLh89dVXAsinn34qf/zxR6YMVHTixAlxdHSUQYMGJdvWu3dv8fX1TfKHX7NmTXFwcJATJ07c13U7dOgggPz555/3dR67ihUrioODg/z111+Zcj6lVM6y2Wzy+++/y40bN+7rPN99912Ks4HOnTtXAFm9enWqx9pnzEzv89/+5ezvv/+WjRs32j/zszUY2E58rpI9KPDkARl50L7YR2gbPny4LFiwIMU3MigoSACZM2eODBgwQPLmzSsRERFpvvn2YYgDAgJEJD4aq1Wrlnh7e0uDBg0EkDNnzlj7Dxs2TBwcHGTPnj3WupiYGClfvrzUr19fbDabnD9/XhwdHcXZ2VmAVMubkvr160vz5s1l3LhxAkj16tWlU6dOki9fPnn66afl6aefljJlykjp0qWlQYMG6X57HThwoABy/vx5mT9/vhVQ2F/zrVu3JE+ePPc93Gznzp3Fzc1NgoODk22LjY1NVhsyb948GTt27H1dUyR+OOHu3btn2rf4adOmyYQJEzLlXEqpf77bt2+Ll5eXNG7cOMXPobCwMJkyZUqy4cVTsmHDBgFk8uTJ8v7770uePHmyPRjoCiwDzgOfAkeAFzKrAJmxFC1aVHbv3m3dyHr37p2s+tN+Y9+yZYusXr1agHTnTLePSZ64mnzHjh3WmPbTp09Psv/Vq1elePHiUrduXWuIVntkuHDhQmu/d999V5544glZuXLlXd2oOnfuLBUrVpSnnnpKSpYsKfXr15cqVapIhw4d5NSpU9a46XfWWKRm69atVtnef/99cXJykscee0xcXV2t1+zv7y+NGzfOcBmPHTsmvr6+1twB27ZtEyDJHOxKKZVb2GuG75wDZeXKlfYbujg5OaVbO2Gz2aR+/fri7e0tVatWtQ+1nH3BgMQHBFWB14EBwCOZdfHMWhwdHaVXr17i4uJijQHfokULOXnypGzevFmio6Pl22+/FUCCg4MlMjJS8uXLZ43tnppmzZpJSk0QgYGBSSaOScw+Lv3bb78t69evF3d3d6lWrVqmjN8+ePBgcXJysl7nnW7duiUFChSQRo0aZSjIiIyMFCcnJxk8eLC0aNFCateuLdevX09SDf7OO++Iq6trsuDq3Llzcvz48WTXt4/l/d///ldE4tvMihcvniQ3QSmlcovbt29LmTJlpG7duhIdHS0iIhcuXJBixYqJr6+v/PLLLxIYGJihc/3555/WF76E+UKyNxh40Bf7m9OlSxcREfnxxx+tJDRApkyZYk3QYk/k6NixoxQuXFhOnz4tNptNLl68mORNj4mJETc3N3njjTcy9Euys9ls0rNnT+vaFSpUSNKUcD/sAU1KUaadfYKNjKpbt640adJEChcuLL1790623T75RuJZ2pYvXy4FCxaUQoUKydmzZ0Ukvrr/pZdeEmOMuLq6yquvvio2m03y589/1++hUkr9k0ybNk0AqVq1qgwbNkz8/PzExcVFgoKC7vpc7du3F0D279+vwcCdi5OTkwCydu1a6w3bsGGDfP3111K4cGHp2bOnVcVud+jQIXF3d5fq1atL/fr1rRni7NX59lm0Zs+efXe/qQSbN2+W/v37Z1ogIPK/po68efNKZGRkppxzwIABVkb/pEmTkm0PDQ1Nkm27fv16McZIrVq1JH/+/NK0aVM5e/asdO/e3UqCadSokTRp0kSCg4MF0HZ2pVSuZrPZZOnSpVK5cmUBpGzZsvLzzz/f07lCQ0Nl2rRpYrPZNBi4cylZsqQ0aNAgxe4bLVu2lBo1aljJd4n9/vvv4ujoKMWLF5cPP/xQfHx8rO599iS9e50+OCvYkyBbtmyZaeecMWOGVduwY8eOFPepWLGidOjQQUREXnnlFXF3d5dbt25Z0a59GTFihIiI9OjRQ7y9vWXdunUZzl9QSql/utjY2ExtMs3MYCAjwxE/8EqUKMGWLVtS3Obn58fnn3+Ou7u7NQ2uXYsWLTh48CBeXl4UKFCAhg0b0rp1a5YuXcrkyZOpXr26NfTwg6BChQp4eHjwr3/9K9POWa9ePQDy5MmDr69vivs0adKEhQsXcuHCBZYsWcJzzz2Hm5sbr7zyCu7u7ly6dInKlSvzxBNPAPFjioeEhFiTMPn4+GRaeZVS6mHl6Oj4wI5ammowYIy5CiwC5gDrEqKQh46fnx9xcXFcvXo1xRu7ffhagKeffpqSJUvy5ptvEhYWxqxZs9Kd3S87ubm5ERoaetfTJKelUqVKFC5cmNKlS+Pq6priPm+++SY//fQT7du3Jzw83ApGjDEpzn5WqVIlAFatWoWbmxslS5bMtPIqpZTKfGnNTn4J+AsYAZw3xnxjjKmfPcUCY8xpY0yQMeYvY8w9TzyQeMz19L7lOzo60r17d8LCwqhYsWKmfgPPLK6urpkaoBhjGDZsmDVEcEpq1apF586d2b59O4UKFUp3khr7VKAbNmygSpUqyYb2VUop9WBJ61P6lohMEJGGQAMgGJhojDlpjPkse4pHMxGpJfcx9rK3t2A5a1oAABPQSURBVLc1tn1Gqvx79uyJq6srw4YNy9DUk/8Eb7zxRpJJeVIyfPhwHB0d6dixY7oziNlrBmJiYrSJQCmlHgJp3e2sr58ichb4AvjCGOMDvJjVBcssxhj8/PxYsWJFhoKBihUrcvXqVfLmzZsNpXt4+Pj4sHnzZutGn5ZChQpRqFAhrl27psGAUko9BNKqGVif0koROSIi6c8pe/8E+N0Ys9sY0+d+TtSsWTMKFSpEqVKlMrS/BgIpq1evHkWKFMnQvvagQYMBpZR68KUaDIjIu9lZkBQ0FJHHgFbA68aYJok3GmP+v717j5qrKu84/v2RFwKFSIKAhEtMcIEp1MXFFyRcLFhExBaKYgXxVlSkFhEVERddrlhLxStd3g1KkZaLFItyUYlUC4s7ISQkXCKRIAkghDtYimKe/rH3yMnbmck7L3PmzMz5fdaalXPZ7z77yX6TeWafPWcfK2mBpAWrV69uW9EJJ5zA3Xffvc7hbeuexrwBJwNmZv1vQjO7JLVfnLkLIuKB/OfDwMXAnmPOz4uI0YgY3WKLLdrWNTIyMu5PtNYds2fPZmRkZK1va5iZWX+a6DTv93W1FWNI2ljSlMY2cBCwtMxrWnedeOKJXH311UyZMqXqppiZ2Tq0e87AU61OAWXfVH8ZcHH+Ct0IcF5E/LTka1oXbbrppsyZM6fqZpiZ2Ti0+zbBE8AeEfHQ2BOSVpbXJIiIe4BdyryGmZmZJe1uE5wDtPou3nkltMXMzMwq0HJkICL+oc25T5TTHDMzM+u1jiYQSppbUjvMzMysIp1+m+DQUlphZmZmlek0GeifJfzMzMysKzpNBl5dSivMzMysMi2TAUkXFrY/BxARa/L+/PKbZmZmZr3QbmRgh8L268eca//8XzMzMxsY7ZKBmOA5MzMzGyDtnkD4J5J2IyUMG+Vt0ZvHEZuZmVmPtEsGHgS+nLd/U9hu7JuZmdkQaPcEwgN62RAzMzOrxoSWMJY0dkKhmZmZDagJJQPAd7vaCjMzM6tMy9sEki5pdQp4aTnNMTMzs15rN4FwP+AdwDNjjgvYs7QWmZmZWU+1SwZuAP4nIq4ae0LSsvKaZGZmZr3U7tsEb2xz7rXlNMfMzMx6rd3aBOtcoXA8ZczMzKy/tfs2wS8kfUjSjOJBSRtIep2k7wHvLrd5ZmZmVrZ2cwYOBo4Bzpc0C3gC2BCYBMwHzoiIReU30czMzMrUbs7A/wLfAL4haX1gc+DZiHiiV40zMzOz8rUbGfijiPg9aa0CMzMzGzITfQKhmZmZDQknA2ZmZjW3zmRA0k5Nju1fSmvMzMys58YzMnChpE8o2UjSV4HPlt0wMzMz643xJAOvAbYDrgNuBh4A9imzUQCSDpa0TNJySaeUfT0zM7O6Gk8y8HvgWWAj0nMGVkTEmjIbJWkS8HXgjcBOwFHNbleYmZnZizeeZOBmUjKwB7Av6Y35olJblVZFXB4R90TE74ALgMNKvqaZmVktjec5A++NiAV5+zfAYZLeWWKbALYBVhb2V5FuV/yRpGOBYwFmzFjriclmZmbWgfEkAw+PXZ8A+H/LGndZswWQYq2diHnAPIDR0dFoUt7MzMzGYTzJwOWkN2KR5gzMApYBO5fYrlWkSYsN25ImLpqZmVmXrTMZiIhXFfcl7Q58oLQWJTcDO+QFku4HjgTeXvI1zczMamlcaxMURcRCSXuU0ZjCNZ6XdDxwBWmVxLMi4vYyr2lmZlZX60wGJH20sLsesDuwurQWZRHxY+DHZV/HzMys7sYzMjClsP08aQ7BD8ppjpmZmfXaeOYMfLoXDTEzM7NqtEwGJF3KmK/zFUXEoaW0yMzMzHqq3cjAF3vWCjMzM6tMu2RgRUTc17OWmJmZWSXarU3ww8aGJE8YNDMzG1LtkoHiI4G3L7shZmZmVo12yUC02DYzM7Mh0m7OwC6SniKNEGyUt8n7EREvKb11ZmZmVrqWyUBETOplQ8zMzKwa7W4TmJmZWQ04GTAzM6s5JwNmZmY152TAzMys5pwMmJmZ1ZyTATMzs5pzMmBmZlZzTgbMzMxqzsmAmZlZzTkZMDMzqzknA2ZmZjXnZMDMzKzmnAyYmZnVnJMBMzOzmnMyYGZmVnNOBszMzGqu75IBSXMl3S9pUX4dUnWbzMzMhtlI1Q1o4YyI+GLVjTAzM6uDvhsZMDMzs97q12TgeEm3STpL0rRmBSQdK2mBpAWrV6/udfvMzMyGhiKi9xeVrgS2anLqVOAG4BEggM8A0yPimHb1jY6OxoIFC7reTjMzs34l6ZaIGO1GXZXMGYiIA8dTTtKZwGUlN8fMzKzW+u42gaTphd3DgaVVtcXMzKwO+vHbBJ+XtCvpNsG9wAeqbY6Zmdlw67tkICLeWXUbzMzM6qTvbhOYmZlZbzkZMDMzqzknA2ZmZjXnZMDMzKzmnAyYmZnVnJMBMzOzmnMyYGZmVnNOBszMzGrOyYCZmVnNORkwMzOrOScDZmZmNedkwMzMrOacDJiZmdWckwEzM7OaczJgZmZWc04GzMzMas7JgJmZWc05GTAzM6s5JwNmZmY152TAzMys5pwMmJmZ1ZyTATMzs5pzMmBmZlZzTgbMzMxqzsmAmZlZzTkZMDMzq7lKkgFJb5V0u6Q1kkbHnPukpOWSlkl6QxXtMzMzq5ORiq67FHgz8O3iQUk7AUcCOwNbA1dK2jEi/tD7JpqZmdVDJSMDEXFnRCxrcuow4IKIeC4iVgDLgT172zozM7N66bc5A9sAKwv7q/IxMzMzK0lptwkkXQls1eTUqRHxo1Y/1uRYtKj/WOBYgBkzZkyojWZmZlZiMhARB07gx1YB2xX2twUeaFH/PGAewOjoaNOEwczMzNat324TXAIcKWmypFnADsBNFbfJzMxsqFX11cLDJa0C5gCXS7oCICJuBy4E7gB+Cvy9v0lgZmZWrkq+WhgRFwMXtzh3GnBab1tkZmZWX/12m8DMzMx6zMmAmZlZzSli8CfiS3oaaPYQo2GxOfBI1Y0okeMbXMMcGzi+QTfs8b0yIqZ0o6KqHkfcbcsiYnTdxQaTpAWOb3ANc3zDHBs4vkFXh/i6VZdvE5iZmdWckwEzM7OaG5ZkYF7VDSiZ4xtswxzfMMcGjm/QOb5xGooJhGZmZjZxwzIyYGZmZhPkZMDMzKzm+jYZkDRV0kWS7pJ0p6Q5kj4j6TZJiyTNl7R1LitJX5G0PJ/fvVDPuyXdnV/vri6itXUY3/6SnszHF0n6VKGegyUty7GfUl1Ea2sWX+HcSZJC0uZ5fyj6r3BubHxD0X+S5kq6vxDHIYXyn8wxLJP0hsLxvouvk9gkzZT0bOH4twr1vFrSkhzbVyQ1W4K951r9bkr6UO6L2yV9vlB+YPoOOotvWPpP0vcLMdwraVGhfHf6LyL68gV8D3hf3t4AmAq8pHD+BOBbefsQ4CeAgL2AG/PxzYB78p/T8va0qmObQHz7A5c1qWMS8Ctg+1zHYmCnqmNrFV/e3g64Avg1sPkw9V+b+Iai/4C5wElNyu6U2z4ZmJVjmtSv8XUY20xgaYt6biIttqb8+/vGqmNrE98BwJXA5Hx8y0HsuwnENxT9N+b8l4BPdbv/+nJkQNJLgNcC3wWIiN9FxBMR8VSh2MZAY/bjYcA5kdwATJU0HXgD8LOIeCwiHgd+Bhzcs0BamEB8rewJLI+IeyLid8AFpL+LSrWKL58+AziZtWMbiv7Lp5vF18og9l8zhwEXRMRzEbECWE6Kre/im0BsreqZTkrer4/0v/I5wF93tbET0Ca+vwNOj4jn8vGH848MTN/BhOJrVc+g9V/jvIC/Ac7Ph7rWf32ZDJCymdXAv0q6VdJ3JG0MIOk0SSuBo4HGcOs2wMrCz6/Kx1odr1qn8QHMkbRY0k8k7ZyPDVR8kg4F7o+IxWPKD0X/tYkPhqD/8rnjlW7lnCVpWj42SP3XaWwAs3LZqyTtl49tQ4qnoR9ig9bx7QjsJ+nGHMceufwg9R10Hh8MR/817Ac8FBF35/2u9V+/JgMjwO7ANyNiN+C3wCkAEXFqRGwHnAscn8s3u9cTbY5XrdP4FgIvj4hdgK8CP8zHBym+ucCprJ3gNAxD/82ldXzD0H+nAN8EXgHsCjxIGq6Eweq/TmN7EJiRy34UOC9/euvH2KB1fCOkW217AR8HLsyfMgep76Dz+Ial/xqO4oVRAehi//VrMrAKWBURN+b9i0h/QUXnAW8plN+ucG5b4IE2x6vWUXwR8VREPJO3fwysrzQ5bdDimwUslnQvqa0LJW3F8PRf0/iGpf8i4qGI+ENErAHOJA1FNsoPSv91FFsefn00b99Cug+7Y65n20K9/RAbtP7dXAX8Z74VdxOwhrSIzyD1HXQY3xD1H5JGgDcD3x9Tviv915fJQET8Blgp6ZX50F8Ad0jaoVDsUOCuvH0J8C4lewFPRsSDpIlcB0malof9DsrHKtVpfJK2asx0lbQnqd8eBW4GdpA0S9IGwJGkv4tKtYhvYURsGREzI2Im6Zd191x2GPqvZXxD0n935PusDYcDS/P2JcCRkiZLmgXsQJqc1XfxdRqbpC0kTcrb25Niuyf/fj4taa/ct+8CftSrOFppFR9pNOp1AJJ2JE0qe4QB6jvoPL4h6j+AA4G7IqJ4e6N7/Rd9MHuy2Ys0XLcAuI3U0dOAH5D+kd4GXApsk8sK+Dop61sCjBbqOYY0qWI58LdVxzXB+I4HbifNCL0B2LtQzyHAL3Psp1YdV7v4xpy/lxdm2w9F/7WJbyj6D/i33D+35f9YphfKn5pjWEZhVnY/xtdJbKTRuUbfLQT+qlDPaP73+ivga+Qnulb9ahHfBsC/5/YuBF43iH3XaXzD0n/5+NnAcU3Kd6X//DhiMzOzmuvL2wRmZmbWO04GzMzMas7JgJmZWc05GTAzM6s5JwNmZmY152TArAsknSHpxML+FZK+U9j/kqSPdvmaz3Szvlznrlp7NcK5kk4ax89J0s/z090axw5XWr1xdgntnCnp7d2udx3XfJWks3t5TbNecTJg1h3XAXsDSFqP9HS3nQvn9wauraBdndqV9P3kTh0CLI61F9s6CriG9MCTbpsJNE0G8pPaui4ilgDbSppRRv1mVXIyYNYd15KTAVISsJT0hLNpkiYDfwrcKmkTSf8laaHSWuqHAUj6nKQPNirLn8g/lrc/LulmpUV0Pt3s4s3K5E/Pd0o6U2mN9/mSNsrn9shlr5f0BUlL85PK/hF4m9K66W/L1e8k6b8l3SPphBbxH03hCW6SNgH2Ad5LIRmQtH+uq7Fe+7mFpzMeko9do7S+/GX5+J/rhbXcb5U0BTidtDDNIkkfkfQeSf8h6VJgfh6paMS1pBFLvv5Vki6U9EtJp0s6WtJNudwrcrm35p9dLOnqQpyXUk5yY1atqp+25Jdfw/IiPXVwBvAB4DjgM6RPzPsAV+cyI6SlUyGNHiwnPYFxN+CqQl135LoOAublMusBlwGvzWWeyX82LUP69Pw8sGsudyHwjry9lPwkRNIb69K8/R7ga4V2zCWNekzO7X0UWL9J7L8GphT23wF8N29fR3o0M8D+wJOkZ6WvB1wP7AtsSFplbVYudz5wWd6+FNgnb2+S/w73b5wvtHsVsFnefwtpyetJwMuA+4Dp+eeeyNuTgfuBT+ef+TDwL3l7CS88AXRq4Tr7AJdW/bvml1/dfnlkwKx7GqMDe5Pe5K4v7F+Xywj4Z0m3AVeSlhV9WUTcCmwpaWtJuwCPR8R9pDf6g4BbSY9TnU16/nhRuzIrImJR3r4FmClpKumNu9Gm89YR1+WRFnx5BHiY9OY61mYR8XRh/yjSGurkP48qnLspIlZFWhRoESlpmU16ZvyKXKa4Mtu1wJfzqMTUiHi+RTt/FhGP5e19gfMjLT70EHAV0FjW9uaIeDAiniM9qnV+Pr4kt6VxzbMlvZ+UUDQ8DGzd4vpmA6uUe2tmNdWYN/Aq0ifvlcDHgKeAs3KZo4EtgFdHxO+VVjjcMJ+7CDgC2IoX3kgFfDYivt3muk3LSJoJPFc49AdgI5ovb9rO2Dqa/b/xvKT1ImKNpJeSFo35M0lBejMNSSe3qa9lmyLidEmXk0ZZbpB0YIuivy1st4uxeP01hf01uS1ExHGSXgO8CVgkaddIq99tCDzbpm6zgeSRAbPuuRb4S+Cx/In0MWAqMIc0SgCwKfBwTgQOAF5e+PkLSPejjyAlBpBWaTwm34NH0jaSthxz3fGU+aOIeJy8Yls+VLwH/jQwpZOgs2XA9nn7COCciHh5pFUctwNWkD6tt3IXsH1OYAAa8xWQ9IqIWBIRnyMt4DJ7HO28mjT3YZKkLUi3TW4abzD5mjdGxKdIq/s1loPdkRdWazQbGk4GzLpnCem++g1jjj2Zh9gBzgVGJS0gjRI0luEmIm4nvcHdH2mJVSJiPmkY/3pJS0hJwlpvguMp08R7gXmSrid9in4yH/8FacJgcQLheFxOuh8P6ZbAxWPO/4AWs/9zDM8CHwR+Kuka4KFCm05sTOYjfSr/CWlFt+fzBL+PNKny4lxmMfBz4ORIy8OO1xfyhMKlpMRicT5+QI7VbKh41UKzGpK0SUQ8k7dPIS3Z++EXUd900mjA619sm/K3C74O3B0RZ0y0vm7L3wq5Cti3zbwFs4HkkQGzenpT/vS/FNgP+KcXU1keyThThYcOTcD7JS0irT+/KdBunkQVZgCnOBGwYeSRATMzs5rzyICZmVnNORkwMzOrOScDZmZmNedkwMzMrOacDJiZmdXc/wE0O8BaH+gsOAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(8,5))\n", + "plt.plot(lam, flux, color='k')\n", + "plt.plot(lam, gaussian_fit(lam), color='darkorange')\n", + "plt.xlim(6300,6700)\n", + "plt.xlabel('Wavelength (Angstroms)')\n", + "plt.ylabel('Flux ({})'.format(units_flux))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see the fit is not doing a good work. Let's print the parameters of this fit:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: Gaussian1D\n", + "Inputs: ('x',)\n", + "Outputs: ('y',)\n", + "Model set size: 1\n", + "Parameters:\n", + " amplitude mean stddev \n", + " ----------------- ----------------- -----------------\n", + " 16.75070628912542 9456.749530943964 2368.395706441934\n" + ] + } + ], + "source": [ + "print(gaussian_fit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise \n", + "\n", + "Go back to the previous plot and try to make the fit work. Note: **Do not spend more than 10 minutes** in this exercise. A couple of ideas to try: \n", + "* Is it not working because of the model to fit we chose? You can find more models to use [here](http://docs.astropy.org/en/stable/modeling/#module-astropy.modeling.functional_models).\n", + "* Is it not working because of the fitter we chose?\n", + "* Is it not working because of the range of data we are fitting? \n", + "* Is it not working because how we are plotting the data? " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Compound models" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To make this fit work one model is not enough. We actually need to combine a couple of models. This technique is called [compound model](http://docs.astropy.org/en/stable/modeling/#compound-models) in `astropy`. The idea is that we can add, rest, divide or multiply models that already exist in [`astropy.modeling`](http://docs.astropy.org/en/stable/modeling/#models-and-fitting-astropy-modeling) and fit the compound model to our data.\n", + "\n", + "For our problem we are going to combine the gaussian with a polynomial of degree 1 to account for the slope and the background of spectrum has close to the $H\\alpha$ line. Take a look to the plot we made before to convince yourself that this is the case.\n", + "\n", + "Now let's make our compound model!" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "compound_model = models.Gaussian1D(1, 6563, 10) + models.Polynomial1D(degree=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After this point, the algorithm to fit the data works exactly the same as before: we define a fitter and then give to the fitter the model and the data." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "fitter = fitting.LevMarLSQFitter()\n", + "compound_fit = fitter(compound_model, lam, flux)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(8,5))\n", + "plt.plot(lam, flux, color='k')\n", + "plt.plot(lam, compound_fit(lam), color='darkorange')\n", + "plt.xlim(6300,6700)\n", + "plt.xlabel('Wavelength (Angstroms)')\n", + "plt.ylabel('Flux ({})'.format(units_flux))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It works! Let's take a look to the fit we just made. " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: CompoundModel0\n", + "Inputs: ('x',)\n", + "Outputs: ('y',)\n", + "Model set size: 1\n", + "Expression: [0] + [1]\n", + "Components: \n", + " [0]: \n", + "\n", + " [1]: \n", + "Parameters:\n", + " amplitude_0 mean_0 ... c1_1 \n", + " ------------------ ------------------ ... --------------------\n", + " 7.0208917442781855 6564.1363171493185 ... 0.003239952053005842\n" + ] + } + ], + "source": [ + "print(compound_fit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's print all the parameters in a fancy way:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "amplitude_0 7.0208917442781855\n", + "mean_0 6564.1363171493185\n", + "stddev_0 1.9776147551996561\n", + "c0_1 -12.793356185541937\n", + "c1_1 0.003239952053005842\n" + ] + } + ], + "source": [ + "for x,y in zip(compound_fit.param_names, compound_fit.parameters):\n", + " print(x,y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see that the result includes all the parameter to fit from a gaussian (mean, std and amplitude) and the two coefficients from the polynomial of degree 1. So now if we want the amplitud of the line we could do:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Parameter('amplitude_0', value=7.0208917442781855)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "compound_fit.amplitude_0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Conclusions:** What was the difference from the first simple Gaussian to the compound model? The linear model that we added to the second model allowed the base of the Gaussian fit to have a slope and a background level. Normal Gaussians go to zero at $\\pm \\inf$, this one doesn't. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### More tools to fit the data: fixed and bounded parameters of the model\n", + "The mean value of the gaussian from our previous model indicates were the $H\\alpha$ line is. In our fit result, we can tell that is a little off from where we know it should be. One way to fix this, is to define a **[fixed parameters](http://docs.astropy.org/en/stable/api/astropy.modeling.Parameter.html#astropy.modeling.Parameter.fixed)** as part of the model." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "compound_model_fixed = models.Gaussian1D(1, 6563, 10) + models.Polynomial1D(degree=1)\n", + "compound_model_fixed.mean_0.fixed = True" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's use this new model with a fixed parameter to fit the data the same way we did before." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "fitter = fitting.LevMarLSQFitter()\n", + "compound_fit_fixed = fitter(compound_model_fixed, lam, flux)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(8,5))\n", + "plt.plot(lam, flux, color='k')\n", + "plt.plot(lam, compound_fit_fixed(lam), color='darkorange')\n", + "plt.xlim(6300,6700)\n", + "plt.xlabel('Wavelength (Angstroms)')\n", + "plt.ylabel('Flux ({})'.format(units_flux))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: CompoundModel1\n", + "Inputs: ('x',)\n", + "Outputs: ('y',)\n", + "Model set size: 1\n", + "Expression: [0] + [1]\n", + "Components: \n", + " [0]: \n", + "\n", + " [1]: \n", + "Parameters:\n", + " amplitude_0 mean_0 ... c0_1 c1_1 \n", + " ------------------ ------ ... ------------------- ---------------------\n", + " 1.5325747104561047 6563.0 ... -12.791030002605362 0.0032374486280527695\n" + ] + } + ], + "source": [ + "print(compound_fit_fixed)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What happend here is that we were too strict with the mean value, so we did not get a good fit. But the mean value is where we want it! Let's loose this condition a little. Another thing we can do is to define a [**minimum and maximum value**](http://docs.astropy.org/en/stable/api/astropy.modeling.Parameter.html#astropy.modeling.Parameter.max) for the mean." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "compound_model_bounded = models.Gaussian1D(1, 6563, 10) + models.Polynomial1D(degree=1)\n", + "delta = 0.5\n", + "compound_model_bounded.mean_0.max = 6563 + delta\n", + "compound_model_bounded.mean_0.min = 6563 - delta\n", + "\n", + "fitter = fitting.LevMarLSQFitter()\n", + "compound_fit_bounded = fitter(compound_model_bounded, lam, flux)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(8,5))\n", + "plt.plot(lam, flux, color='k')\n", + "plt.plot(lam, compound_fit_bounded(lam), color='darkorange')\n", + "plt.xlim(6300,6700)\n", + "plt.xlabel('Wavelength (Angstroms)')\n", + "plt.ylabel('Flux ({})'.format(units_flux))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: CompoundModel2\n", + "Inputs: ('x',)\n", + "Outputs: ('y',)\n", + "Model set size: 1\n", + "Expression: [0] + [1]\n", + "Components: \n", + " [0]: \n", + "\n", + " [1]: \n", + "Parameters:\n", + " amplitude_0 mean_0 ... c0_1 c1_1 \n", + " ----------------- ------ ... ------------------- ---------------------\n", + " 6.657305067408649 6563.5 ... -12.793362542046482 0.0032399500252079877\n" + ] + } + ], + "source": [ + "print(compound_fit_bounded)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Better! By loosing the condition we added to the mean value, we got a better fit and the mean of the gaussian is closer to where we want it." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise\n", + "Modify the value of delta to change the minimum and maximum values for the mean of the gaussian. Look for:\n", + "* The better delta so the mean is closer to the real value of the $H\\alpha$ line.\n", + "* What is the minimum delta for which the fit is still good according to the plot?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Custom model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What would happend in the case you need a model that `astropy.modeling` doesn't provide? To solve that problem, astropy has another tool called [custom model](http://docs.astropy.org/en/stable/modeling/new.html). Using this tool, we can create any model we want. \n", + "\n", + "There are two ways to create a custom model: \n", + "* [basic](http://docs.astropy.org/en/stable/modeling/new.html#basic-custom-models) \n", + "* [full](http://docs.astropy.org/en/stable/modeling/new.html#a-step-by-step-definition-of-a-1-d-gaussian-model)\n", + "\n", + "We use the basic custom model when we need just a simple function to fit and the full custom model when we need a more complex function. Let's use an example to understand each one of the custom models." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Basic custom model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One you might not find between the astropy models is an **Exponential Model**. Let's see one example." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "x1 = np.linspace(0,10,100)\n", + "\n", + "a = 3\n", + "b = -2\n", + "c = 0\n", + "y1 = a*np.exp(b*x1+c)\n", + "y1 += np.random.normal(0., 0.2, x1.shape)\n", + "y1_err = np.ones(x1.shape)*0.2" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.errorbar(x1 , y1, yerr=y1_err, fmt='.')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can define a simple custom model in the following way specifying which parameters we want to fit." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "@custom_model\n", + "def exponential(x, a=1., b=1., c=1.):\n", + " '''\n", + " f(x)=a*exp(b*x + c)\n", + " '''\n", + " return a*np.exp(b*x+c)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have one more available model to use in the same way we always fit data. Let's use the same algorithm as always (**model**, **fitter** & **fit the data**) but with our new model." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "exp_model = exponential(1.,-1.,1.) \n", + "fitter = fitting.LevMarLSQFitter()\n", + "exp_fit = fitter(exp_model, x1, y1, weights = 1.0/y1_err**2)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.errorbar(x1 , y1, yerr=y1_err, fmt='.')\n", + "plt.plot(x1, exp_fit(x1))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The fit looks good in the plot. Let's check the parameters and the Reduce Chi Square Value, which will give us information about the goodness of the fit." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: exponential\n", + "Inputs: ('x',)\n", + "Outputs: ('x',)\n", + "Model set size: 1\n", + "Parameters:\n", + " a b c \n", + " ------------------ ------------------- ------------------\n", + " 1.3221630600191585 -1.8415466004307253 0.7771231057959449\n" + ] + } + ], + "source": [ + "print(exp_fit)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "def calc_reduced_chi_square(fit, x, y, yerr, N, n_free):\n", + " '''\n", + " fit (array) values for the fit\n", + " x,y,yerr (arrays) data\n", + " N total number of points\n", + " n_free number of parameters we are fitting\n", + " '''\n", + " return 1.0/(N-n_free)*sum(((fit - y)/yerr)**2)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9451150678329252" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calc_reduced_chi_square(exp_fit(x1), x1, y1, y1_err, len(x1), 3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Reduce Chi Square Value close to 1. Great! This means our fit is good, and we can corroborate it by comparing the values we got for the parameters and the ones we selected.\n", + "\n", + "**Note:** Fits of non-linear parameters (like in our example) are extremely dependent on initial conditions. Pay attention to the initial conditions you select." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise\n", + "Modify the initial conditions of the fit and check yourself the last note. To compare the fits you can take note of the Reduce Chi Square Value you get for each initial condition." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Full custom model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What if we want to use a model from `astropy.modeling` but with different parameters to fit? One example is the [Sine Model](http://docs.astropy.org/en/stable/api/astropy.modeling.functional_models.Sine1D.html#astropy.modeling.functional_models.Sine1D). It has a very particular definition of the frequency and phase and has no general constant. Let's see the following example." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "x2 = np.linspace(0,10,100)\n", + "a = 3\n", + "b = 2\n", + "c = 4\n", + "d = 1\n", + "y2 = a*np.sin(b*x2+c)+d\n", + "y2 += np.random.normal(0., 0.5, x2.shape)\n", + "y2_err = np.ones(x2.shape)*0.3" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.errorbar(x2, y2, yerr=y2_err, fmt='.')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this case we can define a full model to be able to choose the parameters we want to fit. In this type of custom model we can set the **derivative of the function** that is going to be useful for the fitter. " + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "class sine_new(Fittable1DModel):\n", + " a = Parameter()\n", + " b = Parameter()\n", + " c = Parameter()\n", + " d = Parameter()\n", + " \n", + " @staticmethod\n", + " def evaluate(x, a, b, c, d):\n", + " return a*np.sin(b*x+c)+d\n", + " \n", + " @staticmethod\n", + " def fit_deriv(x, a, b, c, d):\n", + " d_a = np.sin(b*x+c)+d\n", + " d_b = a*np.cos(b*x+c)*x\n", + " d_c = a*np.sin(b*x+c)\n", + " d_d = np.ones(x.shape)\n", + " return [d_a, d_b, d_c, d_d]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Same way as always, we are going to fit the data with our **new model**. Once more, the fit is very **sensible to the initial conditions** due to the non-linearity of the parameters." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "sine_model = sine_new(a=4.,b=2.,c=4.,d=0.) \n", + "fitter = fitting.LevMarLSQFitter()\n", + "sine_fit = fitter(sine_model, x2, y2, weights = 1.0/y2_err**2)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.errorbar(x2, y2, yerr=y2_err, fmt='.')\n", + "plt.plot(x2,sine_fit(x2))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: sine_new\n", + "Inputs: ('x',)\n", + "Outputs: ('y',)\n", + "Model set size: 1\n", + "Parameters:\n", + " a b c d \n", + " ------------------ ------------------ ----------------- ------------------\n", + " 3.5149381303979244 2.0186168190729683 3.714206247918291 1.0391132497698146\n" + ] + } + ], + "source": [ + "print(sine_fit)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7.029186805386363" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calc_reduced_chi_square(sine_fit(x2), x2, y2, y2_err, len(x2), 3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looks like a good fit in the plot but the Reduce Chi Squared Values could be improved. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise\n", + "Play with the initial values for the last fit and improve the Redice Chi Squared Value. \n", + "\n", + "**Note:** A fancy way of doing this would be to code a function which iterates over different initial conditions, optimizing the Reduce Chi Squared Value. No need to do it here, but feel free to try." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise\n", + "\n", + "Custom models are also useful when we want to fit a **non-usual function** to our data. As an example, create a full custom model to fit the following data." + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "x3 = np.linspace(-2,3,100)\n", + "y3 = x3**2* np.exp(-0.5 * (x3)**3 / 2**2)\n", + "y3 += np.random.normal(0., 0.5, x3.shape)\n", + "y3_err = np.ones(x3.shape)*0.5" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.errorbar(x3,y3,yerr=y3_err,fmt='.')\n", + "plt.show()" + ] + }, + { + "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.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tutorials/notebooks/User-Defined-Model/requirements.txt b/tutorials/notebooks/User-Defined-Model/requirements.txt new file mode 100644 index 000000000..c42f5eb60 --- /dev/null +++ b/tutorials/notebooks/User-Defined-Model/requirements.txt @@ -0,0 +1,3 @@ +numpy +astropy +matplotlib \ No newline at end of file From be4d3580bcca77d87fc5c084ff04c2ddd28b424f Mon Sep 17 00:00:00 2001 From: Rocio Kiman Date: Tue, 21 Aug 2018 12:13:52 -0400 Subject: [PATCH 33/83] Lia's comments added --- .../User-Defined-Model.ipynb | 103 +++++++++++------- 1 file changed, 65 insertions(+), 38 deletions(-) diff --git a/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb b/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb index 6791f6594..4e74f106b 100644 --- a/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb +++ b/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb @@ -13,7 +13,8 @@ "* Know and understand tools to make user defined models with `astropy` and in which cases it could be useful\n", "* Learn compound models\n", "* Learn custom models\n", - "* This tutorial assumes the student knows how to fit data using `astropy.modeling`. Check the first tutorial in case you are not familiar with it [here](https://github.com/astropy/astropy-tutorials/tree/master/tutorials/notebooks/Models-Quick-Fit).\n", + "\n", + "This tutorial assumes the student knows how to fit data using `astropy.modeling`. Check the first tutorial in case you are not familiar with it [here](https://github.com/astropy/astropy-tutorials/tree/master/tutorials/notebooks/Models-Quick-Fit).\n", "\n", "## Keywords\n", "Modeling, User Defined Model, Custom Models, Compound Models \n", @@ -57,14 +58,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Let's start with an exercise" + "### Let's fit an Emission Line from a star spectrum with `astropy.modeling` " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "M dwarfs are low mass stars (Less than half of the mass of the sun). Currently we do not understand completely the physics inside low mass stars because they do not behave the same way higher mass stars do. For example, they stay magnetically active longer than higher mass stars. One way to measure magnetic activity is the height of the [$H\\alpha$](https://en.wikipedia.org/wiki/H-alpha) emission line. It is located at $6563$ Angstroms at the spectrum. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "M dwarfs are low mass stars (Less than half of the mass of the sun). Currently we do not understand completely the physics inside low mass stars because they do not behave the same way higher mass stars do. For example, they stay magnetically active longer than higher mass stars. One way to measure magnetic activity is the height of the [$H\\alpha$](https://en.wikipedia.org/wiki/H-alpha) emission line. It is located at $6563 (angstroms/to replace) $ at the spectrum. " + "Let's search for a spectrum of an M dwarf in the Sloan Digital Sky Survey (SDSS). There are two ways of doing this:\n", + "* By hand from the SDSS database\n", + "* With astroquery\n", + "\n", + "Choose one below:" ] }, { @@ -73,19 +85,19 @@ "source": [ "#### Import Spectrum by hand\n", "\n", - "Let's search for a spectrum of an M dwarf in the Sloan Digital Sky Survey: [SDSS database](https://dr12.sdss.org/basicSpectra). SDSS has a particular way to identify the stars it observes: it uses three numbers: Plate, Fiber and MJD (Modified Julian Date). The star we are going to use has:\n", + "Go to this website: [SDSS database](https://dr12.sdss.org/basicSpectra). SDSS has a particular way to identify the stars it observes: it uses three numbers: Plate, Fiber and MJD (Modified Julian Date). The star we are going to use has:\n", "* Plate: 1349\n", "* Fiber: 216\n", "* MJD: 52797\n", "\n", - "So go ahead and download the fits file and save it in the same folder this tutorial is." + "So go ahead, put this numbers in the website and download the fits file and save it in the same folder this tutorial is." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Once you are done, we can load the file by using the package `astropy.fits`." + "Once you are done, we can load the file by using the package `astropy.fits`. If you chose this way, uncomment the next line and ignore \"Import Spectrum using astroquery\":" ] }, { @@ -183,7 +195,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Each fits file is different according to what the person who made it wanted to include. The information about the file usually is in `fitsfile[0].header`. We would like to have the units from the flux and wavelength. In our case these are:" + "Each fits file is different according to what the person who made it icluding depending on how the observation was made. The information about the file usually is in `fitsfile[0].header`. We would like to have the units from the flux and wavelength. For SDSS spectrum we found were the units are in this [SDSS tutorial](https://www.sdss.org/dr12/tutorials/quicklook/#python):" ] }, { @@ -325,7 +337,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can see the fit is not doing a good work. Let's print the parameters of this fit:" + "We can see the fit is not doing a good job. Let's print the parameters of this fit:" ] }, { @@ -376,18 +388,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To make this fit work one model is not enough. We actually need to combine a couple of models. This technique is called [compound model](http://docs.astropy.org/en/stable/modeling/#compound-models) in `astropy`. The idea is that we can add, rest, divide or multiply models that already exist in [`astropy.modeling`](http://docs.astropy.org/en/stable/modeling/#models-and-fitting-astropy-modeling) and fit the compound model to our data.\n", + "One model is not enough to make this fit work. We need to combine a couple of models to make a [compound model](http://docs.astropy.org/en/stable/modeling/#compound-models) in `astropy`. The idea is that we can add, subtract, divide or multiply models that already exist in [`astropy.modeling`](http://docs.astropy.org/en/stable/modeling/#models-and-fitting-astropy-modeling) and fit the compound model to our data.\n", "\n", - "For our problem we are going to combine the gaussian with a polynomial of degree 1 to account for the slope and the background of spectrum has close to the $H\\alpha$ line. Take a look to the plot we made before to convince yourself that this is the case.\n", + "For our problem we are going to combine the gaussian with a polynomial of degree 1 to account for the background spectrum close to the $H\\alpha$ line. Take a look at the plot we made before to convince yourself that this is the case.\n", "\n", "Now let's make our compound model!" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'models' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mcompound_model\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodels\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mGaussian1D\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m6563\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mmodels\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPolynomial1D\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdegree\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'models' is not defined" + ] + } + ], "source": [ "compound_model = models.Gaussian1D(1, 6563, 10) + models.Polynomial1D(degree=1)" ] @@ -504,7 +528,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can see that the result includes all the parameter to fit from a gaussian (mean, std and amplitude) and the two coefficients from the polynomial of degree 1. So now if we want the amplitud of the line we could do:" + "We can see that the result includes all the fit parameters from the gaussian (mean, std and amplitude) and the two coefficients from the polynomial of degree 1. So now if we want the amplitude of the line we could do:" ] }, { @@ -531,7 +555,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Conclusions:** What was the difference from the first simple Gaussian to the compound model? The linear model that we added to the second model allowed the base of the Gaussian fit to have a slope and a background level. Normal Gaussians go to zero at $\\pm \\inf$, this one doesn't. " + "**Conclusions:** What was the difference between the first simple Gaussian and the compound model? The linear model that we added to the second model allowed the base of the Gaussian fit to have a slope and a background level. Normal Gaussians go to zero at $\\pm \\inf$; this one doesn't. " ] }, { @@ -539,7 +563,7 @@ "metadata": {}, "source": [ "### More tools to fit the data: fixed and bounded parameters of the model\n", - "The mean value of the gaussian from our previous model indicates were the $H\\alpha$ line is. In our fit result, we can tell that is a little off from where we know it should be. One way to fix this, is to define a **[fixed parameters](http://docs.astropy.org/en/stable/api/astropy.modeling.Parameter.html#astropy.modeling.Parameter.fixed)** as part of the model." + "The mean value of the gaussian from our previous model indicates where the $H\\alpha$ line is. In our fit result, we can tell that it is a little off from $6563$ Angstroms. One way to fix this is to fix some of the parameters of the model. In `astropy.modeling` these are called **[fixed parameters](http://docs.astropy.org/en/stable/api/astropy.modeling.Parameter.html#astropy.modeling.Parameter.fixed)**." ] }, { @@ -628,7 +652,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "What happend here is that we were too strict with the mean value, so we did not get a good fit. But the mean value is where we want it! Let's loose this condition a little. Another thing we can do is to define a [**minimum and maximum value**](http://docs.astropy.org/en/stable/api/astropy.modeling.Parameter.html#astropy.modeling.Parameter.max) for the mean." + "We can see in the plot that the height of the fit does not match the $H\\alpha$ line height. What happend here is that we were too strict with the mean value, so we did not get a good fit. But the mean value is where we want it! Let's loose this condition a little. Another thing we can do is to define a [**minimum and maximum value**](http://docs.astropy.org/en/stable/api/astropy.modeling.Parameter.html#astropy.modeling.Parameter.max) for the mean." ] }, { @@ -729,13 +753,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "What would happend in the case you need a model that `astropy.modeling` doesn't provide? To solve that problem, astropy has another tool called [custom model](http://docs.astropy.org/en/stable/modeling/new.html). Using this tool, we can create any model we want. \n", + "What should you do if you need a model that `astropy.modeling` doesn't provide? To solve that problem, Astropy has another tool called [custom model](http://docs.astropy.org/en/stable/modeling/new.html). Using this tool, we can create any model we want. \n", "\n", - "There are two ways to create a custom model: \n", + "We will describe two way to create a custom model: \n", "* [basic](http://docs.astropy.org/en/stable/modeling/new.html#basic-custom-models) \n", "* [full](http://docs.astropy.org/en/stable/modeling/new.html#a-step-by-step-definition-of-a-1-d-gaussian-model)\n", "\n", - "We use the basic custom model when we need just a simple function to fit and the full custom model when we need a more complex function. Let's use an example to understand each one of the custom models." + "We use the basic custom model when we need a simple function to fit and the full custom model when we need a more complex function. Let's use an example to understand each one of the custom models." ] }, { @@ -749,7 +773,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "One you might not find between the astropy models is an **Exponential Model**. Let's see one example." + "An **Exponential Model** is no provided by Astropy models. Let's see one example of basic custom model for this case. First, let's simulate a dataset that follows an exponential:" ] }, { @@ -793,7 +817,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can define a simple custom model in the following way specifying which parameters we want to fit." + "We can define a simple custom model by specifying which parameters we want to fit." ] }, { @@ -814,7 +838,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we have one more available model to use in the same way we always fit data. Let's use the same algorithm as always (**model**, **fitter** & **fit the data**) but with our new model." + "Now we have one more available model to use in the same way we always fit data. " ] }, { @@ -850,13 +874,6 @@ "plt.show()" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The fit looks good in the plot. Let's check the parameters and the Reduce Chi Square Value, which will give us information about the goodness of the fit." - ] - }, { "cell_type": "code", "execution_count": 30, @@ -881,6 +898,13 @@ "print(exp_fit)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The fit looks good in the plot. Let's check the parameters and the Reduced Chi Square value, which will give us information about the goodness of the fit." + ] + }, { "cell_type": "code", "execution_count": 31, @@ -921,7 +945,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Reduce Chi Square Value close to 1. Great! This means our fit is good, and we can corroborate it by comparing the values we got for the parameters and the ones we selected.\n", + "The Reduced Chi Square value is close to 1. Great! This means our fit is good, and we can corroborate it by comparing the values we got for the parameters and the ones we used to simulate the data.\n", "\n", "**Note:** Fits of non-linear parameters (like in our example) are extremely dependent on initial conditions. Pay attention to the initial conditions you select." ] @@ -931,7 +955,7 @@ "metadata": {}, "source": [ "## Exercise\n", - "Modify the initial conditions of the fit and check yourself the last note. To compare the fits you can take note of the Reduce Chi Square Value you get for each initial condition." + "Modify the initial conditions of the fit and check yourself the dependance of the non-linear paramaters. You can check it by looking at the Reduced Chi Square value: if it gets closer to 1 the fit is better and vice versa. To compare the fits you can take note of the Reduced Chi Square value you get for each initial condition." ] }, { @@ -945,7 +969,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "What if we want to use a model from `astropy.modeling` but with different parameters to fit? One example is the [Sine Model](http://docs.astropy.org/en/stable/api/astropy.modeling.functional_models.Sine1D.html#astropy.modeling.functional_models.Sine1D). It has a very particular definition of the frequency and phase and has no general constant. Let's see the following example." + "What if we want to use a model from `astropy.modeling`, but with a different set of parameters? One example is the [Sine Model](http://docs.astropy.org/en/stable/api/astropy.modeling.functional_models.Sine1D.html#astropy.modeling.functional_models.Sine1D). It has a very particular definition of the frequency and phase. Let's see an exaple for the full custom model. Again, first let's create a simulated dataset." ] }, { @@ -989,7 +1013,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For this case we can define a full model to be able to choose the parameters we want to fit. In this type of custom model we can set the **derivative of the function** that is going to be useful for the fitter. " + "For this case we will define a full model to be able to choose the parameters we want to fit. In this type of custom model we can set the **derivative of the function**, which is used by different fitters. \n", + "\n", + "Fitters that use derivative:\n", + "* ..." ] }, { @@ -1021,7 +1048,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Same way as always, we are going to fit the data with our **new model**. Once more, the fit is very **sensible to the initial conditions** due to the non-linearity of the parameters." + "Same way as always, we are going to fit the data with our **new model**. Once more, the fit is very **sensitive to the initial conditions** due to the non-linearity of the parameters." ] }, { @@ -1105,7 +1132,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Looks like a good fit in the plot but the Reduce Chi Squared Values could be improved. " + "The Reduced Chi Squared value is showing the same as the plot: this fit could be improved. The Reduced Chi Squared is not close to 1 and the fit if off by small phase." ] }, { @@ -1113,9 +1140,9 @@ "metadata": {}, "source": [ "## Exercise\n", - "Play with the initial values for the last fit and improve the Redice Chi Squared Value. \n", + "Play with the initial values for the last fit and improve the Reduced Chi Squared value. \n", "\n", - "**Note:** A fancy way of doing this would be to code a function which iterates over different initial conditions, optimizing the Reduce Chi Squared Value. No need to do it here, but feel free to try." + "**Note:** A fancy way of doing this would be to code a function which iterates over different initial conditions, optimizing the Reduced Chi Squared value. No need to do it here, but feel free to try." ] }, { @@ -1124,7 +1151,7 @@ "source": [ "## Exercise\n", "\n", - "Custom models are also useful when we want to fit a **non-usual function** to our data. As an example, create a full custom model to fit the following data." + "Custom models are also useful when we want to fit an **unusual function** to our data. As an example, create a full custom model to fit the following data." ] }, { From da69055fc1c84164723370d9fe788463ea782595 Mon Sep 17 00:00:00 2001 From: Rocio Kiman Date: Tue, 21 Aug 2018 12:15:04 -0400 Subject: [PATCH 34/83] Small changes --- tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb b/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb index 4e74f106b..4c835b27d 100644 --- a/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb +++ b/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb @@ -1132,7 +1132,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The Reduced Chi Squared value is showing the same as the plot: this fit could be improved. The Reduced Chi Squared is not close to 1 and the fit if off by small phase." + "The Reduced Chi Squared value is showing the same as the plot: this fit could be improved. The Reduced Chi Squared is not close to 1 and the fit is off by small phase." ] }, { From a3b9bf934aabd74e6e8ba500bf45832dcd8735fe Mon Sep 17 00:00:00 2001 From: Rocio Kiman Date: Tue, 4 Sep 2018 18:19:41 -0400 Subject: [PATCH 35/83] Kelle's comments added --- .../User-Defined-Model.ipynb | 240 ++++++++---------- 1 file changed, 111 insertions(+), 129 deletions(-) diff --git a/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb b/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb index 4c835b27d..71dd7cea2 100644 --- a/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb +++ b/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb @@ -11,10 +11,11 @@ "\n", "## Learning Goals\n", "* Know and understand tools to make user defined models with `astropy` and in which cases it could be useful\n", - "* Learn compound models\n", - "* Learn custom models\n", + "* We will define models usign two different tools:\n", + " * Compound models\n", + " * Custom models\n", "\n", - "This tutorial assumes the student knows how to fit data using `astropy.modeling`. Check the first tutorial in case you are not familiar with it [here](https://github.com/astropy/astropy-tutorials/tree/master/tutorials/notebooks/Models-Quick-Fit).\n", + "This tutorial assumes the student knows how to fit data using `astropy.modeling`. This topic is covered in the [Models-Quick-Fit tutorial](https://astropy-tutorials.readthedocs.io/en/latest/rst-tutorials/Models-Quick-Fit.html).\n", "\n", "## Keywords\n", "Modeling, User Defined Model, Custom Models, Compound Models \n", @@ -58,7 +59,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Let's fit an Emission Line from a star spectrum with `astropy.modeling` " + "### Fit an Emission Line from a star spectrum with `astropy.modeling` " ] }, { @@ -72,49 +73,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's search for a spectrum of an M dwarf in the Sloan Digital Sky Survey (SDSS). There are two ways of doing this:\n", - "* By hand from the SDSS database\n", - "* With astroquery\n", - "\n", - "Choose one below:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Import Spectrum by hand\n", - "\n", - "Go to this website: [SDSS database](https://dr12.sdss.org/basicSpectra). SDSS has a particular way to identify the stars it observes: it uses three numbers: Plate, Fiber and MJD (Modified Julian Date). The star we are going to use has:\n", + "Let's search for a spectrum of an M dwarf in the Sloan Digital Sky Survey (SDSS). First, we are going to look for the spectrum in the [SDSS database](https://dr12.sdss.org/basicSpectra). SDSS has a particular way to identify the stars it observes: it uses three numbers: Plate, Fiber and MJD (Modified Julian Date). The star we are going to use has:\n", "* Plate: 1349\n", "* Fiber: 216\n", "* MJD: 52797\n", "\n", - "So go ahead, put this numbers in the website and download the fits file and save it in the same folder this tutorial is." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once you are done, we can load the file by using the package `astropy.fits`. If you chose this way, uncomment the next line and ignore \"Import Spectrum using astroquery\":" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "#spectrum = fits.open('spec-1349-52797-0216.fits')" + "So go ahead, put this numbers in the website and click on Plot to visuzlize the spectrum. Try to localize the $H\\alpha$ line. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### Import Spectrum using astroquery\n", - "Another way of importing the spectrum is using from [`astroquery.sdss`](https://astroquery.readthedocs.io/en/latest/sdss/sdss.html#module-astroquery.sdss) the [SDSSClass](http://astroquery.readthedocs.io/en/latest/api/astroquery.sdss.SDSSClass.html). We can get the spectrum using the position of the star or, like in our case, the plate, fiber and mjd." + "We could download the spectrum by hand from this website, but we are going to import it using the [SDSSClass](http://astroquery.readthedocs.io/en/latest/api/astroquery.sdss.SDSSClass.html) from [`astroquery.sdss`](https://astroquery.readthedocs.io/en/latest/sdss/sdss.html#module-astroquery.sdss). We can get the spectrum using the position of the star or, like in our case, the plate, fiber and mjd." ] }, { @@ -195,7 +166,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Each fits file is different according to what the person who made it icluding depending on how the observation was made. The information about the file usually is in `fitsfile[0].header`. We would like to have the units from the flux and wavelength. For SDSS spectrum we found were the units are in this [SDSS tutorial](https://www.sdss.org/dr12/tutorials/quicklook/#python):" + "Each fits file is different according to what the person who made it including depending on how the observation was made. The information about the file usually is in `fitsfile[0].header`. We would like to have the units from the flux and wavelength. For SDSS spectrum we found were the units are in this [SDSS tutorial](https://www.sdss.org/dr12/tutorials/quicklook/#python):" ] }, { @@ -219,23 +190,46 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 21, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "'wtype=linear label=Wavelength units=Angstroms'" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "wtype=linear label=Wavelength units=Angstroms\n" + ] } ], "source": [ "#Units of the wavelegth\n", - "spectrum[0].header['WAT1_001']" + "units_wavelength_full = spectrum[0].header['WAT1_001']\n", + "print(units_wavelength_full)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are going to select only the characters of the unit we care about: Angstroms" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Angstroms\n" + ] + } + ], + "source": [ + "units_wavelength = spectrum[0].header['WAT1_001'][36:]\n", + "print(units_wavelength)" ] }, { @@ -247,14 +241,14 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -265,7 +259,7 @@ "plt.plot(lam, flux, color='k')\n", "plt.xlim(6300,6700)\n", "plt.axvline(x=6563, linestyle='--')\n", - "plt.xlabel('Wavelength (Angstroms)')\n", + "plt.xlabel('Wavelength ({})'.format(units_wavelength))\n", "plt.ylabel('Flux ({})'.format(units_flux))\n", "plt.show()" ] @@ -274,7 +268,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Exercise\n", + "## Fit an Emission Line with a Gaussian Model\n", "We just plotted our spectrum! Check different ranges of wavelength to see how the full spectrum looks like." ] }, @@ -282,16 +276,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The blue dashed line marks the $H\\alpha$ emission line. We can tell this is an active star because it has a high emission line.\n", + "The blue dashed line marks the $H\\alpha$ emission line. We can tell this is an active star because it has a strong emission line.\n", "\n", "Now, we would like to measure the height of this line. Let's use `astropy.modeling` to fit a gaussian to the $H\\alpha$ line. We are going to initialize a gaussian model at the position of the $H\\alpha$ line. The idea is that the gaussian amplitude will tell us the height of the line.\n", "\n", - "We are going to go quick over this part of the tutorial because it involves fitting with `astropy.modeling` and this was explained in a [first tutorial](https://github.com/astropy/astropy-tutorials/tree/master/tutorials/notebooks/Models-Quick-Fit). Check it out if you would like to know more about it." + "We are going to go quick over this part of the tutorial because it involves fitting with `astropy.modeling` and this was explained in the [Models-Quick-Fit tutorial](https://astropy-tutorials.readthedocs.io/en/latest/rst-tutorials/Models-Quick-Fit.html). " ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -309,14 +303,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAFACAYAAAAh/38IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xd8zWf7wPHPncgQIzGCxJ5RGqMiqFVarVlU+2ipUvwo1Uk9rfap0actLdWiVFVLbWpTWkWovVJi75VhE5XIOtfvj+R8n0QmMmiu9+v1feWc77zPSXK+17nv675vIyIopZRSKvdyyOkCKKWUUipnaTCglFJK5XIaDCillFK5nAYDSimlVC6nwYBSSimVy2kwoJRSSuVyGgwopZRSuZwGA0oppVQup8GAUkoplcvlyekCZIaiRYtKuXLlcroYSimlVLbZvXv3ZRHxzIxz/SOCgXLlyrFr166cLoZSSimVbYwxZzLrXNpMoJRSSuVyGgwopZRSuZwGA0oppVQup8GAUkoplctpMKCUUkrlchoMKKWUUrmcBgNKKaVULqfBgFJKKZXLaTCglFJK5XIaDCillFK5nAYDSimlVC6nwYBSSimVy+VYMGCMKW2MWW+MOWSMOWCMeSth/TBjTLAx5q+EpXVOlVEppZTKDXJy1sJYYKCI7DHGFAB2G2PWJGwbKyKjc7BsSimlVK6RY8GAiIQCoQmPbxpjDgElc6o8SimlVG71QOQMGGPKAbWB7QmrBhhj9hljfjTGFErlmD7GmF3GmF2XLl3KppIqpZRS/zw5HgwYY/IDC4G3RSQcmARUBGoRX3MwJqXjROR7EfETET9PT89sK69SSin1T5OjwYAxxon4QGCWiCwCEJELIhInIjZgCuCfk2VUSiml/ulysjeBAaYCh0Tkq0TrvRLt1hHYn91lU0oppXKTnOxN0BDoBgQZY/5KWDcEeMkYUwsQ4DTQN2eKp5RSSuUOOdmbYBNgUtj0a3aXRSmllMrNcjyBUCmllFI5S4MBpZRSKpfTYEAppZTK5TQYUEoppXI5DQaUUkqpXE6DAaWUUiqX02BAKaWUyuU0GFBKKaVyOQ0GlFJKqVxOgwGllFIql9NgQCmllMrlNBhQSimlcjkNBpRSSqlcToMBpZRSKpfTYEAppZTK5TQYUEoppXI5DQaUUkqpXE6DAaWUUiqX02BAKaWUyuU0GFBKKaVyOQ0GlFJKqVxOgwGllFIql9NgQCmllMrlNBhQSimlcjkNBpRSSqlcToMBpZRSKpfLsWDAGFPaGLPeGHPIGHPAGPNWwvrCxpg1xphjCT8L5VQZlVJKqdwgJ2sGYoGBIvIIUB943RhTDXgfWCsilYG1Cc+VUkoplUVyLBgQkVAR2ZPw+CZwCCgJtAemJ+w2HeiQMyVUSimlcocHImfAGFMOqA1sB4qLSCjEBwxAsZwrmVJKKfXPl+PBgDEmP7AQeFtEwu/iuD7GmF3GmF2XLl3KugIqpZRS/3A5GgwYY5yIDwRmiciihNUXjDFeCdu9gIspHSsi34uIn4j4eXp6Zk+BlVJKqX+gnOxNYICpwCER+SrRpmVA94TH3YGl2V02pZRSKjfJk4PXbgh0A4KMMX8lrBsCjATmG2N6AWeBF3KofEoppVSukGPBgIhsAkwqm5/MzrIopZRSuVmOJxAqpZRSKmdpMKCUUkrlchoMKKWUUrmcBgNKKaVULqfBgFJKKZXLaTCglFJK5XIaDCillFK5XLrjDBhj/IDGgDcQCewH/hCRq1lcNqWUUkplg1RrBowxPYwxe4APgLzAEeLnCWgErDHGTDfGlMmeYiqllFIqq6RVM5APaCgikSltNMbUAioTP2SwUkoppR5SqQYDIvJtWgeKyF9pbVdKKaXUwyEjOQPjAblj9Q1gl4jojIJKKaXUQy4jvQlcgFrAsYSlBlAY6GWM+ToLy6aUUkqpbJCRWQsrAc1FJBbAGDMJ+B1oAQRlYdmUUkoplQ0yUjNQkvhkQrt8gLeIxAFRWVIqpZRSSmWbjNQMfAH8ZYwJAAzQBPjMGJMP+CMLy6aUUkqpbJBuMCAiU40xvwL+xAcDQ0QkJGHze1lZOKWUUkplvYwOR+wAXAKuApWMMU2yrkhKKaWUyk4Z6Vo4CugMHABsCasF2JiF5VJKKaVUNslIzkAHwEdENFlQKaWU+gfKSDPBScApqwuilFJKqZyRkZqBCOJ7E6wlUVdCEXkzy0qllFJKqWyTkWBgWcKS2J3DEyullFLqIZWRroXTEz83xpQGXsyyEimllFIqW2Woa6Expqgxpp8xZiMQABTP0lIppZRSKtukWjNgjCkAdAS6AFWAxUAFESmVTWVTSimlVDZIq5ngIrAD+AjYJCJijOmYPcVSSimlVHZJq5lgCOAKTAI+MMZUzOyLG2N+NMZcNMbsT7RumDEm2BjzV8LSOrOvq5RSWS08PJxly+7MvVbqwZRqMCAiY0WkHvAs8XMSLAG8jTH/NsZUyaTrTwNaprB+rIjUSlh+zaRrKaVUtunfvz/t27fn3LlzOV0UpdKVbgKhiJwUkU9FxBeoC7gDqzLj4iKykfj5DpRS6h8jICCAWbNmAXD+/PkcLo1S6Us1GDDG/GaMeccYU9W+TkSCRGSIiGR6k8EdBhhj9iU0IxRKpXx9jDG7jDG7Ll26lMXFUUqpjLHZbPTv35/8+fMDEBISks4RSuW8tGoGugPXgGHGmD3GmEnGmPbGmPxZXKZJQEWgFhAKjElpJxH5XkT8RMTP09Mzi4uklFIZExISwqFDh3jnnXes50o96NLKGQgTkWki8iLgB/wM1AF+M8b8YYwZnBUFEpELIhInIjZgCuCfFddRSqmscOPGDQCqVauGk5OTBgPqoZCR4YhJuDFvTVg+NsYUBZ7JigIZY7xEJDThaUdgf1r7K6XUgyQ8PBwADw8PvLy8NBhQD4V0EwiNMV8YYwoaY5yMMWuNMZeBliIy634vboyZQ3yA4WOMOW+M6QV8YYwJMsbsA5oB79zvdZRSKrvYawbc3d3x9vbWYEA9FDJSM/C0iAxOGHDoPPACsB6Yeb8XF5GXUlg99X7Pq5RSOcVeM1CwYEG8vb05fPhwDpdIqfRlZG4Cp4SfrYE5IqJdAZVSKhVaM6AeRhkJBpYbYw4Tn0S41hjjCdzO2mIppdTDyR4M2GsGrl+/TkRERA6XSqm0pTXOgBeAiLwPNAD8RCQGiADaZ0/xlFLq4RIeHo4xhvz58+Pt7Q1AaGhoOkcplbPSqhn40RizzRgzEqhJ/JDEiMgtEQnLltIppdRD5saNGxQoUAAHBwcrGNCmAvWgSzWBUERaGWNcgSeI7+I32hhzFlgNrBaRs9lTRKWUeniEh4fj7u4OoMGAemik2ZtARG6TcPMHMMaUB1oBE4wxJUREBwRSSqlEbty4QcGCBQENBtTDI0ODDtmJyClgIjDRGOOcNUVSSqmHV+KaAQ8PD1xdXTUYUA+8tBIISxtj5hpj/jTGDDHGOCXatkREorOniEop9fC4ceOGFQwYY7R7oXoopJlACAQAbwBewAZjTJGEbWWzuFxKKfVQCg8Pt5oJIL6pIDg4OAdLpFT60goGPEXkOxH5S0TeIL55YKMxpiIg2VM8pZR6uCSuGQDw8vIiLEw7YKkHW1rBgFNCbwIARGQm8BbwG/E1BUoppe5wZ81AiRIlNBhQD7y0goEfgHqJV4jIH8TPTaAzCSql1B1iYmKIjIxMUjNQokQJbty4we3bOnCrenClGgyIyFgR2ZDC+kARaZG1xVJKqYdP4kmK7IoXLw7AhQsXcqRMSmVERqYwLpkdBVFKqYdd4kmK7EqUKAGgTQXqgZZmMGCM8QV+yaayKKXUQy2lmgF7MKA1A+pBltY4A82AuUC37CuOUko9vFKqGbA3E2jNgHqQpTUC4TKgnogcz67CKKXUw8xeM5A4GChWrBigwYB6sKXVTDAb+NgYk25egVJKqf/VDCRuJnB2dqZIkSLaTKAeaGn1JuhLfBfCmdlXHKWUenil1EwA8U0FWjOgHmRpfusXkf+SMGOhUkqptKWUQAg68JB68KXbBCAiP2dHQZRSKiMWLVqEj48PkZGROV2UZG7cuIGzszOurq5J1mswoB50GZrC2BhTAyiXeH8RWZRFZVJKqVQtWLCAo0ePEhgYyOOPP57TxUnizqGI7YoXL645A+qBlm4wYIz5EagBHABsCasF0GBAKZWtRIQ///wTgJ07dz5wwcCdkxTZlShRglu3bvH333+TP3/+HCiZUmnLSE+B+iLiJyLdReTVhKVnlpdMKZWr7dmzB5vNlmTdmTNnrOmAd+zYcc/njo6OZtmyZfTp08cKLjJDajUD9zoKYVhYGKtXp5y2NWfOHBYsWHD3hVQqBRkJBrYaY6pleUmUUirB8ePHqVOnDrNnzwZg2rRpzJs3j02bNgFQqVKlDAcD27dvZ8uWLUnWvfnmm7Rv354pU6bQs2dPoqOjM6Xc169fT7Fm4F7nJ/jiiy9o27YtUVFRSdZfvHiR3r17M2rUqHsvrFKJZCQYmE58QHDEGLPPGBNkjNmX1QVTSv3z/fXXX5w5cybZ+qNHjwKwceNGbDYbgwYN4tVXX2XWrFkULFiQHj16cPz4ca5evZrm+efNm0ejRo14/vnnEREA4uLiWLBgAc8//zxLly7l+PHjTJo06b5fi81mIygoCB8fn2Tb7rVmYO/evcTFxSULIsaMGUNERITmIahMk5Fg4EfihyRuCbQD2ib8vG/GmB+NMReNMfsTrStsjFljjDmW8LNQZlxLKfVgERFatWpF3759k207ffo0ANu2bePw4cNcuXKFyMhIVq9eTcOGDalfvz4Au3btSvX8M2fO5KWXXsLDw4PQ0FD2799vHXP16lU6depEu3btaNGiBSNGjLDGCLhXhw4d4saNGzRo0CDZtnsJBkSEffviv3eFhIRY6y9dusSECRNwcHDgwoULVpCj1P3ISDBwVkSWicgpETljXzLp+tOIDzISex9YKyKVgbUJz5VS/zCHDx8mLCyMgIAAIiIikmyzBwP79+9n5cqVAPTp0weARo0a4efnB8QnEaZkyZIl9OjRg2bNmllNBL///jsAq1atwsHBgRYtWmCMYeDAgVy9epXdu3ff1+vZunUrQIrBQNGiRXFxcbFeV0ZcuHCBy5cvAxAaGmqtnzNnDhEREfTq1YuYmBiuXbt2X+VWCjIWDBw2xsw2xrxkjHnOvmTGxUVkI3BnPV974psmSPjZITOupZR6sAQEBAAQFRXF+vXrk2yz3zRFhHHjxuHl5cX48eP57LPP6NmzJ+7u7vj4+KSYN7B7925efPFF/Pz8WLp0KZUrV6ZatWr89ttvAKxevRp/f3+KFCkCQIUKFQCsxMR7tXXrVooUKULlypWTbXN0dOSRRx4hKCgow+ez1wpA0mDg8OHDFCpUiGbNmgE6G6LKHBkJBvICUcDTxDcP2JsKskpxEQkFSPhZLKWdjDF9jDG7jDG7Ll26lIXFUSp3OXHiBGvWrMny62zYsIESJUrg5uaWLGP+9OnT1K1bF4Dz58/TpEkTnJ2d+eCDD6wqd39/f3bs2JGkmvzatWs8//zzFCtWjBUrVljd+J555hk2btzIuXPn2LFjBy1b/q9CsmTJkkDmBAP169fHGJPidl9f37sKBuz7GmOSBAPHjh2jUqVK95yUqFRKMjIC4aspLDnetVBEvk/o8ujn6emZ08VR6oF19uxZ/Pz8MlxFPWzYMDp06EBcXFymleHw4cP4+voydOhQIP4b/4YNG2jevDnNmjVj1apVSfY/c+YMtWvX5pFHHgGgSZMmyc5Zt25dwsLCktzE+/XrR3BwMPPnz6do0aLW+meeeYaoqCjq16+PiNCmTRtrm5ubGx4eHpw/f/6eX9+1a9c4dOhQik0Edr6+voSEhKSb9Gi3b98+vLy8KFGiRJKcgePHj1O5cmWdGlllqnSDAWPMdGOMR6LnhRIGIsoqF4wxXgnX8gIuZuG1lHooiAgBAQH3lCy2ceNGdu/ezbx58zK0//79+4mIiODkyZN3fa2U7Ny5kwYNGrB//36mT5+OiHDs2DHCwsJo2rQpLVu25MSJExw7dgyAiIgILl68SNmyZa1EwcaNGyc7r7+/P/C/8Qa2bdvGvHnzGDJkiHWcXZMmTShevDienp7MnTvXyjmwK1Wq1H3VDGzfvh1IOV/AztfXFyBJ7cCqVas4d+5civvv27ePGjVq4OXlZdUMREVFcfbsWSpVqmTVkGjNgMoMGWkmqCEi1+1PROQaUDvrisQyoHvC4+7A0iy8llIPhYCAAJo1a8bChQvv+lh7N73UBq9JLC4ujsOHDwPcVZV2Wr788kucnJz44IMPOHPmDEeOHLHyBZo2bWp9S7e/NntXw3LlytGrVy969uxJ9erVk523Zs2aODk5WU0F77//PsWKFWPQoEHJ9s2bNy/BwcEEBgbSuXPnZNtLliyZYjBw+PBhK4ExLevWrSNPnjxW00ZK7gwGAgICaN26NUOGDEm2b2xsLAcPHkwWDJw6dQqbzUblypUpVKgQefLkua9gICIiItkYBhAffH722Wds2LAh1WPnzp1Ly5Ytkw0MpR5OGQkGHBJ37zPGFCaDcxqkxxgzB9gK+BhjzhtjegEjgRbGmGNAi4TnSuVq9sF2li9fftfH2r9xb9q0yZpVLzWnTp3i9u3bQOYEAzabjXXr1tGqVSurN8CqVauYOnUqFStWpEqVKpQvX56GDRvy888/IyJWc0a5cuVo2LAhU6dOxcEh+UeVq6srNWrUYOfOnaxatYoNGzbwn//8J9Xhfh0dHVNtzy9VqpTVTDB37lymTZvG4sWL8ff354UXXkizRkZEWLRoEU8++SQFChRIdT9vb28KFSpEUFAQt27dolevXgCsXLmS2NjYJPuuXLmS6OhofH19kwQD9t9lpUqVcHBwoFixYvccDNhsNho1asSrr76abNvZs2f58MMPeeaZZ1ixYkWKx3788cf89ttv990LQz0gRCTNBXgFOAR8AowADgPd0jsuO5c6deqIUg+ja9euSY8ePSQ4ODjN/Vq1aiWAeHp6Slxc3F1d47HHHpNChQoJIIsWLUpz3yVLlgggDg4O0qlTp7u6TkoCAwMFkOnTp4uISNWqVcXb21sAmTRpkrXfd999J4Ds2rVLJk6cKEC674mISL9+/aRAgQJSuXJlqVy5skRFRd1TOT/++GMxxsjff/8tTk5OQvz8K+Ls7CyAXLx4MdVj9+7dK4B8//336V6nSZMm0qBBA+nbt68A8uabbwog69evt/ZZtmyZODs7S82aNeXGjRtW2WJiYuSrr74SQC5fviwiIrVr15bWrVvL0aNHpXPnzvL3339n+DUvXrxYAPHy8kq2bf78+QJI2bJlJU+ePHL69Okk29esWWO9Rx9//HGGr6kyF7BLMuk+mtEpjDsBF4BLwHMiMiNzQhGlcrcpU6Ywbdq0NL/xiwjbtm3D09OTS5cupTnQTkrHHjt2jM6dO1OgQIF0mwoOHjwIQPPmzTOlZmDt2rUAPPnkk0B8Il9ISAjFixenR48e1n7/+te/cHZ25ueff+bMmTM4OztbbeJp8ff35+bNmxw7dozx48fj7Ox8T+UsWbIkIsKaNWuIiYlh+PDhTJ48me+//x4g1XZ9iG/ecHBwoH379ulex9fXl23btjF58mTee+89Pv30U1xcXFi2bBkQ//vq06cP1apVY/369RQsWBAvLy9EhAsXLnDs2DE8PDwoXLgwED+Y0YULF5gzZw7z5s1j7dq1iAhdu3Zl8eLFqZZDEpoBIL7bYuIERYjPw3BxcWH+/PnExsaybds2IH6sh7feeosxY8ZQtGhR6tatm+Lf7pUrV7h4UdO9HiapBgMJ3fa+Mca0BE6KyAQRGS8iB7OxfEr9Y8XFxTFx4kQADhw4kOp+R48e5dq1a7z33ns4ODhkqA3b7uLFi9y8eZNq1arx1FNPWQPvpObAgQOULl2axx9/nOPHjxMZGZnha0F8Vn3iG+fatWvx8fGxuu+1atUKgHfeeQdXV1drv0KFCvHss8/y888/8/vvv1OmTJkUmwbuZE8i7NChA88888xdlTWxUqVKAVg35Zdffpk+ffpYuQopBQMffPCBNURy48aNKVYsxV7QSfj6+iIiPPfcc4wcOZL8+fPz5JNPsnTpUuuGHxYWRo8ePShUKL511svLC4i/adt7EtibO+xTI9tv1uvWrSMoKIjZs2fzwQcfpNqev3btWnbu3Mkrr7wCkKyqf8eOHdSuXZuaNWvi6OhIUFAQ169fZ8qUKYwbN47Vq1fTu3dvOnXqRGBgYJJ8ixUrVlCpUiXatcuUgWpVNknrv60+sBh4AthgjPnVGPOWMaZKtpRMqTucPHmS//u//+P48eM5XZRMsWrVKk6fPo2zs3OawYD9g75NmzbUr1//roIBe/Jg5cqVqVu3LqdPn+bmzZup7n/w4EGqVauGr68vNpuN/fv3s3fv3nSvc+PGDbp27YqXlxdVq1bl0KFDREdHs3HjRqtWAODpp59m4cKFvPPOO8nOMWLECDw9PQkMDKRcuXIZen2PPPIIU6dOZfLkyRnaPzX2YGXlypW4u7tTvnx5AEqXLg0kDwY2btzIyJEjmTlzJidOnOCFF17I0HVeeOEFRo4cyYwZM6xg59lnn+XkyZMcOnTIqo2xJxtC0mDAPsaAnT0YsPdmWLdunfVN/ciRI/zxxx8plmPJkiXkz5+fsWPH4uDgkCQYiI2NZdeuXfj7++Pi4oKPjw9BQUHs2bMHgJEjR9K3b1/efvtt64a/ZMkSbt26Za2Liopi586dGe5GqR4AGW1PALyAnsB8IBCYmFltFfe7aM7AP9+yZcukQIECAsjQoUNzujiZolWrVuLt7S0vv/yyFC9ePMm2U6dOWY/79u0r7u7uEhcXJ59++qkAEhoamqFrTJ06VQA5ceKELFq0yGqXT0lsbKy4urrKu+++K4cPHxZASpYsKYAsWbIkzesMGDBAHBwcZMCAAeLp6SmPPvqovPzyyxk6NrFbt27J8OHDZeXKlRk+JjNcunTJagNv1qyZtT4uLk5cXFzkvffeS7LOz89PSpUqJVeuXJG1a9dKdHT0PV/7xIkTAsjEiRNlzJgxyXIUzp49K4CMGzdOHBwckrTRjx071ip3pUqVBBAfHx+pVauWFC9eXNq0aZPiNR9//HFp1KiRiIhUq1ZN2rZta23bt2+fADJz5kwREencubOUL19evvjiiyT5CiIiNptNfHx8BBBXV1cB5PXXX5fffvst1d99ZGTkXee9pMZmsyV5fv78eRk5cmSS/5+MOHnypHTv3l3Cw8MzpVzZhUzMGchwrwCJHw3wR+BHY4wDkHqHWqUykYjwxhtvULZsWW7cuJGhb6oPuqioKNatW0f//v3x9vZm5syZXLlyhSJFirBr1y7q1q3LmjVreOqpp9i2bRv16tXDwcGB1q1b8+GHH7Jq1aoUs8DvdPToUZycnChTpozVhezw4cPUqVMn2b72ngTVq1enUqVKuLm5cenSJdzd3fnhhx9SbRP/66+/mDhxIv3792f8+PG0adOGVq1acfDgQYYOHXpX1cVubm58/PHHGd4/sxQpUgQXFxeioqJ47LHHrPUODg6UKlUqSc3AggUL2LVrF9OnT6dw4cI0b978vq5dvnx5vLy82LRpE87OztZ4CHb23IlvvvkGm81GzZo1rW32gYcA/v3vf/N///d/HDlyhBEjRhAXF8fw4cNp2LAh9erV4+OPP8bDw4O4uDj27t1Lz57xY8fVqVMnyYiT9nEb7E0wvr6+zJs3j/Xr11OuXDlrGGeIHx1xzZo1LFy4kEOHDtGlSxeaNm1KVFQUrq6uBAQEJPm7uXTpEo899hgvvfQSX3zxBSKCzWbD0dHxrt+3P//8kxdeeIFx48bxr3/9i88//5xhw4YRHR3NtWvXGDky4x3Rli9fzvTp06lRowbvvvtu6jvaYiEuCuKiE37m8ONMlG4wYIxZTnzkmdgNYJcxZreI3M7UEj1kzp8/jzHGqmZUmS8oKIgzZ84wZcoUfv/992ztynThwgU8PT0z1H4dExPDoUOH8PHxwcXFJc19AwMDiYqKolGjRuTNmxeIr6Jv3Lix9cG8YcMG6tWrR1BQkPWBWrNmTUqWLMnKlSuTBQM//PADjz76KPXr12fNmjWsXbuWwMBAKlSoQJ48eahYsSKOjo4cOnQoWXmuXbtGt27dcHBwoEGDBjg6OrJs2TJrkJ5Ro0YREhKCt7d3kuOio6N57bXXKFKkCJ988gkALVu2ZPHixZQoUSLZ4D8PKvv/8MmTJ5MEAxDfVJA4GJg2bRrly5fn5ZdfzrRrN2rUiM2bN+Pp6ZmkiQDAyckJT09PqzmiY8eO1jZ7MJA/f366devGu+++y82bN2nbti0VKlTgypUr7N+/n2+++Yb58+ezYMECChcuzK1bt6hdO364mDp16jBjxgxCQkIoXLgwy5Ytw8PDw2qOsJfnt99+47nnkk9LU7p0ad5+++0k61xcXHj88cet8SQgPqh/9dVXOX/+PPPmzWPUqFFMmDCBYcOGMXPmTCufJC42lmOHD1C1SgWITbjx2aIhNoo/fl/JryuW8kSj+vw4ZRK1C/3N0jGvUjBkFQd/mcbYnrW5EHyWMuErYLtHkmOtx3FR8c8TPW598xD+b0D+C+8jP/2AsR9ju+PmK5k8poKjS6LFOeXHefKCi0cK+7gAEzKtKBmpGTgJeAJzEp53Jr5nQRVgCvHTG/+j2Ww2VqxYQbt27ZL1U+7WrRsRERFWm53KfEuXLsUYQ7t27QgLC2PBggWEh4dTsGDBezpfbGwsLVq0oEyZMowePZrUhrO+du0aFSpU4KOPPuKDDz5I97z/+c9/GDVqFM7Oznz66afW4De3b9+mT58+1KxZk4EDBwJYM+k1aNCAmJgYID55r3HjxmzcuBGIH7lv165d2Gw2a2Q7YwytW7dm7ty5REdHW9nzJ0+epE+fPpQsWZItW7bQtWtX7HN22L+ZOzs7U7FiRWtQocTatm3Lnj17WLBggTUEsL2t39XVlc8//5wZM2bw73//O8lxb775Jtu3b2fevHmwfOi6AAAgAElEQVR4eFgDldKhw8M3v1ipUqU4efJkslqT0qVLW4Pv3Lhxg7Vr1/LWW29lKEDMqIYNG7JgwQKCg4MZMGBAsu0+Pj6ULl2an376KclnkD0YqFu3Li4uLjz55JMEBgZSq1YtjDGMHz8eiJ+2uWPHjrz33nvW+WvXqgkxkfjXrIJnfujfrR1XLoZw5VIY/+nzMiZ0O9iiqVvsOm0eAZc8Nl72c4T90zL07XXs01c4tH8v0QtaExsVwZmTx3i/XAhffpif6MizRH1XgY6Xz/Pc67G47GxNzEEXnBwFx7hoqgL8lvx9egp46jEg4k+e7WpfGwFx02jZBSAQKgFcgU0J/7MOecDBGfIk3EDvfOzoQkTkbW5GGS7+HUPBMgUoU65Swo34f/vYTB6Mkys4uvDTz7PZuWcfr7/5Do/WeCz9G3pKjx3yQCrjXmRc5gUDGckV2JjaOuBAZrVX3M+S1TkDK1asEEB+//33ZNuKFSsmgISEhGRpGe7X9u3bpWHDhnLt2rWcLspdq1OnjjRo0EBE4nMHANm8eXOK+wYEBMjatWuTtSUmNm/ePAHEGCNFihRJ8fcqIlYbe5kyZSQ2NjbFfX755ReZPXu2hIaGSt68eeXpp5+WBg0aiKenp8TGxsrt27etMQLc3Nzk6tWrIiLSqVMnKV++vIjEt3sWKFBABgwYIDExMVZuROHCheW///2vAHLlyhXrmvaxANatW2etGzRokDg6OooxRooXLy4ODg4yefJkqVmzpkycONHa79lnn5Xq1asneQ2nTp0SQL744otU37NGjRrJI488Yj2PioqSIUOGCCDvv/9+qsc9TLp06SL58+dP1p49ZMgQcXR0lNjYWJk1a5YAsmXLloyd1GYTiY0WibopEnFF5GaIyPVTIleOiFzcJxK6U+T8Zjm85jt5xgdpVw1ZO+k1kQMzRPZNFQmcKLJrrNz+c4REb/xY5M8PRQLeE1n7psjvfeX20i4yswsS9KmPyKJ2EjX7CYmcVk9kVgORnx8T+am6yNTKIpPLyM0v88uVEUjkKEeJGYXI6ExexjqLjCsg8m1Rke+8JWK8lxx8Dzk8xEW2v4n8+Tpy+JOSEjmrmSzqjmx6v6RMfxEJGlNfFg/wlgnPO0vEb2/J1/9ylw+aI1vGPy+ye5zI3ski+6fJkaXDpOOjyK/fDpBt8z6Rs1tmioRskyXfD5W2DSrI+f0bRG6clZEfvysebkYib16VdWvXyKBBg2T37t3WryQwMFA++uijJJ8R1apVk/bt20vVqlUl8f3EZrPJ1q1bpU+fPlKwYEGpUqWKfPTRR1aeRufOna19b9y4Id27d8/WewGZmDOQkWDgEFAm0fMywMGEx4GZVZD7WbI6GLAnbY0ePTrJ+ps3b1p/FD/88EOWXNtms911MozdihUrZOjQoWKz2eSpp54SQJYvX565Bcxi586dE0A+//xzERE5ffq0lWwlInLlyhU5cOCA2Gw2uX37thQsWFAA8ff3T5LoZGez2cTf318qV64sQUFB8uijj4qjo6OMHj062U2gf//+1u931apVyc5169Yt63o1a9YUR0dHOXbsmMyZM8e6YfznP/8RQN59913rhmuz2aREiRLStWtX61z16tWTZs2aya5duwSQ5s2bCyDVqlUTHx+fJNe9efOmODs7S79+/UREJCIiQgoXLiydOnWS1157zUriSsngwYPF2dlZYmJirHU//PCDAHLgwIFUfw9ffvmlABIWFiZXr16VmjVrCiA9evRINVDKVrY4kZhIkds3RG5dFAk/J3LthMjlgyIXAkVCtouc2yhyeo3IiZUiRxeJHJojsn+6yN7vRfaMl9Dl78nBaa+IbB4qsvEDkfXvivzxuhz8upFMexG5Nf9Z2faBt6zp7yK2eU+KzGksMtNfZHpNkR8fEZlSQeS7kiLfeoqMKygy1kVktMncG+4YB5Gv84qM9xCZWExkcmkJ/7qExEzxEfm5tsis+iJzm4gsaCGyqK3I0udEVrwksqqH3PjlJfmmPfJFW+SHHsVFtgwX2T5SZNdXIoHfiuz7QeTAzyKH54kcWyJy8leRM2tFzm+Snq19xdcLuX5qu8j1kyI3g0UiLotEhYvERsUHPXe4ffu2lCpVSnx8fGTo0KFy7tw5a1vt2rUFEBcXF7l27Zrs2bNHAGnatKkVqCe+0YqI9OrVS/Lly5dukt/s2bMFkH379kmzZs2s/+FPPvlEREReeOEFAeTo0aMiEp8Q6urqKgMHDpQJEyYIIHv27JHg4GCpUaOGAJI3b17p2rWrlC1bVgCpV6+e9O/fX1xcXKwA/5dffhFARo4ceT9/yXclM4OBjDQTDAQ2GWNOAAYoD/Q3xuQDpmfg+Ife/v37geR9wU+dOmU9XrFihTW86N1Ys2YNEyZMYNGiRSkm0cyaNYtu3brx9ttvM3r06LtKtPnmm29Ys2YNly9ftroY7dixg7Zts3IG6nsXFxdHSEiI1Z0L4psIAKvNvEyZMri7u7Nnzx5atmxpzVH/448/4uXlRXh4ON27d2f69OksXbrUSpI6cOAAbdu2pU6dOuzYsYOJEyfy6KOPsmXLFl555RUGDRrEwoULmTt3LmXKlAHi+2I/+eST7N27lylTpiSZ9hbiB5sJDw/Hz8+PXbt20bNnTypVqkSRIkVwdHRkwYIF/Pzzz3To0IExY8YQGBjI+PHj6dixI2FhYTRs2NA6V/Xq1Vm8eDHz588HYODAgaxbt46DBw8mGZwH4tuHu3fvzpQpU3jrrbdYt24dV69e5fXXX6dOnTpUrlyZ3r17p/geP/LII0RHR3P69GmrTfiPP/7Ay8vLah5IyeOPPw7Ati2buHIplDNH97J45iQ6tGsN4SdzPpHKFpPGX1bGlEhYuAw4OFlVuuUB1wrAhT3kiwmlhHdRTFxk/HanfHdXNZzG4zfeGcSW7bvYtHUnefO5p7y/Q/L//9QHQE6qIDDvqzNs2bKFnj3b0KtBxhM1S/l15NC1/LiX88/wMS4uLpw9exYgWfNq27ZtCQwM5Nlnn8XDw4PatWvTrl07li9fjre3N40bN2bdunWICMYYbty4wbx586zBs9Ji/zsODAxky5Yt9OrVi3PnzjFu3DjeeOMNq2vuhg0bqFy5MqGhody+fZsKFSrw0ksvMXDgQKZOnWrlAH3//fd07tyZggULEh4eznfffUfnzp25evUqEydOZM6cOfTv39/qerly5cpkzWkPAxMfXKSyMb7XQH1gN1CV+GDgsDxgSYN+fn5yN6Oy3a0aNWoQFBSEv79/ktyApUuX0qFDB/z8/Dh06BBXrlxJN3HsTr169eLHH39k79691KhRI9l2f39/Dhw4QEREBP369bMGqUmPiODp6cmVK1cA8PDwoGjRolSqVCnZdLEPguXLlzN48GCOHj3KgQMHqFq1KgBPPPEEly5dShKINWnShC1bthAXF8fgwYNZtmwZefPmpW7dusyaNYuLFy/i6elJ7969+eabbwDo27cv06ZNw8HBgQIFCnDq1Cny5csHxL9XM2fOpF+/frRr1445c+YQHBxMqVKlGD16NKGhoXzzzTeEhYUlyaRu2rQpISEhHDhwgBkzZtCxY0drZLgnnniCTZs2ERcXx7p162jWrBnLli2jffv2lChRgrCwMP766y8rM3zTpk0888wzRERE8EiViuzds4Nypb2RuCi+HPlfunZ+PuGmF5/YdO3KBXr1eJkSnoW5dCGER6tW4uOP3sfERf9vvyQ3zfifF0LPs2rFUlo0b0LJEkWR2NtsWLeG4kUL8UiV8qnecCUuGlt0JI6Z10wOmGRtt4nbaDP0+D5vwP97nHidE5j/vdCgoCBq1KhBvXr12L59OwEBATRt2jQz3wgAFi1aREBAAOPGjcv0c9t9++23DBgwgPHjx6eYm5Bd9u7dS506dfj11195+umngfgcGX9/f0aMGEGpUqXo2bMnQUFBHD16lLfeeovg4GC2bdtm9XJITWRkJPny5aNp06YEBASwbNkyK+fI/kXBGEPXrl2ZMWMGf/75J02aNGH16tU888wzdO3aleXLl1ufufa8i5TUqlULFxcXtm/fTuvWrVm1ahUODg5cunTJ+izIqK1btxIXF0ejRo0yfExCEr9f+numL82aARGxGWPGiEgD4OHvz3UPYmJirISrgwcPWpEqYE3x+uabb/LKK6+wYcMG6w87owIDA4H4P4QaNWpgs9msxKTdu3ezc+dOxo0bx4YNG1i+fHmGg4Fz585x5coVPvroI2bMmMEbb7zBwYMHrZHOUpuwxe7y5cu4ubnh5uZ2V6/nXly/fp3nnnuO0qVLY7PZ2LBhA1WrViUsLIyNGzcm62pWs2ZN/vzzT7p168aoUaMoV64c/fv35/Dhw7Rp0wY3Nzd8fX2tLog3b95k9uzZdOnShTGjR3M74ib5nAQir0BcNCYuim5t6hHcrwOLF8zj6oGX2b91Ey2qQMeaTtyu5E7w2ljOrhpBkRrVIS6aS2HneTzPRtr835M4bx9Gr4pREPiXdROe1C6cg2XjKFqoAE2ujIR5w2kXF82lsWW4fuUSeYwzZbe3h63x+zeKi+bmJ9E4CMAJ+K4IwR8mvOCIj+Cnj5K8B4WARV0BIhLWHIXfeqb8Bjs6WzdPT+NE04qQN/wguHgRGRWHs4nBo1Dh+IzlVBKtjIMzP8+YTXScIeTCFXyq+dKl26tpJ2al99g4ZkICVdaz11Rt376d9u3bZ0kgAPDcc8+lmK2fmbp27crmzZtzPMGzZs2aXL58OUnSad26dQkMDKR69erW8Mj9+vVj06ZN1K5dmzlz5qQbCED8DJXlypUjICAABwcHmjRpQr58+ShevDjTp0+nSJEiSRJ1T5w4AUDFihUB6NmzJ7Nnz8bNzY0PP/ww1etA/DDaH374IRcuXGDPnj1Uq1aNgwcPsnr1arp06XJX70mfPn04ceIEmzdvtnp6fPXVV6xYsYJffvnlroOLu5VmzQCAMWY4sA9YJOntnEOysmbg4MGDVK9enUaNGrFp0yZOnz5N2bJlARgwYACzZs0iODgYDw8P3nnnHUaNGpXhc0dHR5M/f35iYmLo3r077777LvXr16dbt24MGTKEDz/8kMWLFxMcHMxXX33Fp59+yu3bt3Fyckr33EuWLKFjx45s27aNunXr4uDgwHfffUe/fv04ceIEFSpUSPVYEaFixYo0bdqUn376KcOvJ+Hg5H1xbdFJvqGeO30cRxOHV7EimLhotm3ZyDdffcmw/3zA5InjeaxmdV5+6V9s3RzA6pXLGdCvN56F3K0bbVjIWY4cCOLx+nVwMkJs9C22/LmBPCYOn0rlKeKRj7CQc0RF3KRMyeJERYQTE3mLfHmdcJD7r05OJlGVsv0bZnSc4eiJ03iVKksRT69UvoU6J/qGG/9THJwQRxcc8riw/Nff2LBpG1+M/hoHp7xJzo+jM3HkYeuO3dSt3wiXvAVSOb9Tshtu+fLlKVu2LAEBAXz11VcMHDiQs2fPJmmeScmgQYMYM2YMALNnz+all17K/PfyASQiFCxYkLi4OA4ePJjh0RHV/alYsSInT56kffv2zJ8//67mnWjTpg2//vordevWtcZNeO+99xg9ejS9evWiVq1avPHGG5w6dYqpU6fy2WefERkZibOzMzabjSeeeII2bdqkW92/Z88e6tSpw6hRo/j3v//N2LFj+eyzz3jyySeZOHEiBQoUIE+e9Fvj//77b9zd3bHZbJQpU4adO3dijKFcuXJERERQv359/vjjD6s20y7bagYSvAvkA+KMMZHENxWIiNxbv66HjD1foHPnzmzatIkDBw5YwcDJkyepUKECbm5u1KtXL0mf2ow4ePAgMTExuLq6smXLFgoWLEhMTAw//PCDNUFK37598fDwoGzZsthsNs6fO0f5sqX/13f2jhut/eeVvYt5pqoDtQoG43AiGOKieab0BXrXg2vr/wtXH031Zv339ct80uAU+RzOErfwIo7EpVDlnOjYO8uRjjtvOfWB+i8Dpz7nq1YA22HDdhoADZ4BTk+Dc/+7eZZwdKGET14IPwGOzuRxdMGrRHHOBodRwKsyuOTj5jUXtuzbTafaT/Drb39wO8aVbj1631HNnPzmOeQ/w9n9136i4+D1N9/h+X91AUcXOnfphs3BiQULl7Jzz16aP92aN98eyKeff5nit1tnoMTlyxQpWvSu/iZMwgLwtO8A6r12A4dUxrx3BBqVzniVot1bb73FO++8w4oVKxgzZgx16tRJNxCA+LwBezCQeIjhfzpjDP369aNq1aoaCGSjwYMHs2/fPsaOHXvXE1A98sgj/PrrrzRr1sxa17t3byZPnkyPHj1wd3cH4vMGTp48SZkyZaxrODg4WLUG6alVqxbFihXjq6++AuLHbGjTpg3Tpk1j7ty5tG/fniVLlqR7nj179mCz2RgxYgSfffYZbdu2xd/fn8jISEaOHMmQIUN47733MlwzfC/SrRl4GGRqzYAIyP9ufqM+/4RJE75mx9ZNNGvSkMED36J71xfBFs2rr3SlSsWyfDB4IPPnzODXFUuYNOEb8jo5pHiTjIq4yYXQs5T2Lo6Ji+bUiaPsC9xFhXIluRQWTD4XR4oUKoh38aLcvnUDlzwGNxdHjC2a2KgIYqMicHEymGRjQN0n45jkpnjrdgyhF68SFQsly5THo0ixO77B3nETTeXGmuTbbx4Xhv93JIePnaR9xxfIW8CDb8ZPonmLlmzetosKlavy7Xc/MH7iZEZ8OorVa9bRqGlz3v/wY4YOHZ7uS4iMjOTcuXNUqRI/dcbmzZtp1KgRw4cPZ+jQoVbyUHpWrlzJSy+9xKRJk+ja1erIzKBBg5gwYQLXrl2jcePGhIaGcuTIEfLnz3/v73sOiYiIoHz58ly7do24uDi2b9+On1/6Xy5CQ0Px9vamdu3aVrKUUg+iH3/8kV69erFq1apkib8QP3aMp6cnzZs359y5c+TPnz/VeRzS88orrzBjRvxEvuHh4Vy4cIHp06cTFBTEsmXLOH36tJWUnJoxY8YwaNAga56Jjh07EhcXR5cuXawk8hUrVhAWFmblpUVGRuLm5pZpNQMZaSYwQFegvIh8YowpDXiJyI7MKEBm8KvqJbsmd0v9m2rCz+Bzp4n8+zoueQzexYviSEzSfezHZvrN1gGbgzN/R0QTGW3DvXBRXPO5E3bxKhev3KBcJR/2Bh0iKhZ8a9WhuFepZDfU6zcjmTx1Gi1bt6PmY/7/a3tNuEmfC73AoSMneLpVO3B05oUXX6bmY3X56OMRSc717HPPszfoMLXr1uOTT0fhW7NOsgzlvn37Mm/ePJycnHjyySeZO3fufb8F9uq0L774gvfeew+Ib2b57rvviIuL49tvv6V///6sX7+e5s2b4+Pjw+nTpzl9+nSGprK9082bNylYsCB58+ZFRAgJCbFmgUtP4rwNu0WLFtGpUydeffVVfvrpp4e+mvzLL79k8ODBDB48+K6attq2bUvLli1zNPlMqfTcvHmTqVOnMmDAgFSr6e3NBgD/93//Z9XG3q05c+bQpUsXqlSpwpEjR6z1p0+fpkKFCgwbNizdIbY7d+7Mtm3bOHPmDADTp09n6NCh/Pbbb/j4+PDrr7/Spk0bli5dyrPPPmsdM3/+/EwLBjIyzsAk4FvgUMLzQsDOzOrbmBlLnVKIfO0a37f3W8/4vr5TKoj8WFVkeg2RmXVFZjeUgNfzyJrX8sjiHsjxrx8TWdlVZHVPkTWviax7K34wj00fiWwZkdD/dqx83N5Tvn3tMZEDP8snLz8qb7ctJ7bjK+TCztnSqDyy8Nt/i1wIlIhzu8SneB759P3XRG5dEIm8JhIdIRIXK7du3ZJSpUqJh4eHFC5cWNq1ayci8QO5PP744xIRESF58uSRIkWKSFRUVIr9SW/fvi2ADB8+PNm26OhoefTRRwWQI0eOSEhIiADy9ddfJ9t327Zt0rdvX/H09JRKlSrJzZs3rW32QTiqVasmrVq1kr59+4qbm5vcunUrxTLdjRdffFEKFCgg169ft9adPHlSHB0dBZBjx46JSHwfegcHBwHktddeu69rVqhQQQB55ZVX7us8IiJhYWFWf+UmTZqkOajRwyAqKkrmz58vt2/fzumiKJUj4uLi5O233xZAvvzyy3s+z6VLl8QYIy+++GKybS1atJCyZcumOzFT+fLlpVOnTknWJf6MiY6OliJFiljXiImJEXd392wfdGhPws/AROv2ZlYBMmPJyKBD4eHh1oAQ5cuXt27Iabl8+XKSAW+++eYbAWThwoUSEBAggKxZs8bav1GjRuLv75/sPPaBLNavXy8fffSRGGPk8OHDUqBAAenfv7+IxA+okd5gFV5eXtKzZ0+JjY2VI0eOWH8sX3/9tXWj+uijj2TSpEkCyNatW1M914YNG8QYIz179hQRkZCQEClevLh89dVXAsinn34qf/zxR6YMVHTixAlxdHSUQYMGJdvWu3dv8fX1TfKHX7NmTXFwcJATJ07c13U7dOgggPz555/3dR67ihUrioODg/z111+Zcj6lVM6y2Wzy+++/y40bN+7rPN99912Ks4HOnTtXAFm9enWqx9pnzEzv89/+5ezvv/+WjRs32j/zszUY2E58rpI9KPDkARl50L7YR2gbPny4LFiwIMU3MigoSACZM2eODBgwQPLmzSsRERFpvvn2YYgDAgJEJD4aq1Wrlnh7e0uDBg0EkDNnzlj7Dxs2TBwcHGTPnj3WupiYGClfvrzUr19fbDabnD9/XhwdHcXZ2VmAVMubkvr160vz5s1l3LhxAkj16tWlU6dOki9fPnn66afl6aefljJlykjp0qWlQYMG6X57HThwoABy/vx5mT9/vhVQ2F/zrVu3JE+ePPc93Gznzp3Fzc1NgoODk22LjY1NVhsyb948GTt27H1dUyR+OOHu3btn2rf4adOmyYQJEzLlXEqpf77bt2+Ll5eXNG7cOMXPobCwMJkyZUqy4cVTsmHDBgFk8uTJ8v7770uePHmyPRjoCiwDzgOfAkeAFzKrAJmxFC1aVHbv3m3dyHr37p2s+tN+Y9+yZYusXr1agHTnTLePSZ64mnzHjh3WmPbTp09Psv/Vq1elePHiUrduXWuIVntkuHDhQmu/d999V5544glZuXLlXd2oOnfuLBUrVpSnnnpKSpYsKfXr15cqVapIhw4d5NSpU9a46XfWWKRm69atVtnef/99cXJykscee0xcXV2t1+zv7y+NGzfOcBmPHTsmvr6+1twB27ZtEyDJHOxKKZVb2GuG75wDZeXKlfYbujg5OaVbO2Gz2aR+/fri7e0tVatWtQ+1nH3BgMQHBFWB14EBwCOZdfHMWhwdHaVXr17i4uJijQHfokULOXnypGzevFmio6Pl22+/FUCCg4MlMjJS8uXLZ43tnppmzZpJSk0QgYGBSSaOScw+Lv3bb78t69evF3d3d6lWrVqmjN8+ePBgcXJysl7nnW7duiUFChSQRo0aZSjIiIyMFCcnJxk8eLC0aNFCateuLdevX09SDf7OO++Iq6trsuDq3Llzcvz48WTXt4/l/d///ldE4tvMihcvniQ3QSmlcovbt29LmTJlpG7duhIdHS0iIhcuXJBixYqJr6+v/PLLLxIYGJihc/3555/WF76E+UKyNxh40Bf7m9OlSxcREfnxxx+tJDRApkyZYk3QYk/k6NixoxQuXFhOnz4tNptNLl68mORNj4mJETc3N3njjTcy9Euys9ls0rNnT+vaFSpUSNKUcD/sAU1KUaadfYKNjKpbt640adJEChcuLL1790623T75RuJZ2pYvXy4FCxaUQoUKydmzZ0Ukvrr/pZdeEmOMuLq6yquvvio2m03y589/1++hUkr9k0ybNk0AqVq1qgwbNkz8/PzExcVFgoKC7vpc7du3F0D279+vwcCdi5OTkwCydu1a6w3bsGGDfP3111K4cGHp2bOnVcVud+jQIXF3d5fq1atL/fr1rRni7NX59lm0Zs+efXe/qQSbN2+W/v37Z1ogIPK/po68efNKZGRkppxzwIABVkb/pEmTkm0PDQ1Nkm27fv16McZIrVq1JH/+/NK0aVM5e/asdO/e3UqCadSokTRp0kSCg4MF0HZ2pVSuZrPZZOnSpVK5cmUBpGzZsvLzzz/f07lCQ0Nl2rRpYrPZNBi4cylZsqQ0aNAgxe4bLVu2lBo1aljJd4n9/vvv4ujoKMWLF5cPP/xQfHx8rO599iS9e50+OCvYkyBbtmyZaeecMWOGVduwY8eOFPepWLGidOjQQUREXnnlFXF3d5dbt25Z0a59GTFihIiI9OjRQ7y9vWXdunUZzl9QSql/utjY2ExtMs3MYCAjwxE/8EqUKMGWLVtS3Obn58fnn3+Ou7u7NQ2uXYsWLTh48CBeXl4UKFCAhg0b0rp1a5YuXcrkyZOpXr26NfTwg6BChQp4eHjwr3/9K9POWa9ePQDy5MmDr69vivs0adKEhQsXcuHCBZYsWcJzzz2Hm5sbr7zyCu7u7ly6dInKlSvzxBNPAPFjioeEhFiTMPn4+GRaeZVS6mHl6Oj4wI5ammowYIy5CiwC5gDrEqKQh46fnx9xcXFcvXo1xRu7ffhagKeffpqSJUvy5ptvEhYWxqxZs9Kd3S87ubm5ERoaetfTJKelUqVKFC5cmNKlS+Pq6priPm+++SY//fQT7du3Jzw83ApGjDEpzn5WqVIlAFatWoWbmxslS5bMtPIqpZTKfGnNTn4J+AsYAZw3xnxjjKmfPcUCY8xpY0yQMeYvY8w9TzyQeMz19L7lOzo60r17d8LCwqhYsWKmfgPPLK6urpkaoBhjGDZsmDVEcEpq1apF586d2b59O4UKFUp3khr7VKAbNmygSpUqyYb2VUop9WBJ61P6lohMEJGGQAMgGJhojDlpjPkse4pHMxGpJfcx9rK3t2A5a1oAABPQSURBVLc1tn1Gqvx79uyJq6srw4YNy9DUk/8Eb7zxRpJJeVIyfPhwHB0d6dixY7oziNlrBmJiYrSJQCmlHgJp3e2sr58ichb4AvjCGOMDvJjVBcssxhj8/PxYsWJFhoKBihUrcvXqVfLmzZsNpXt4+Pj4sHnzZutGn5ZChQpRqFAhrl27psGAUko9BNKqGVif0koROSIi6c8pe/8E+N0Ys9sY0+d+TtSsWTMKFSpEqVKlMrS/BgIpq1evHkWKFMnQvvagQYMBpZR68KUaDIjIu9lZkBQ0FJHHgFbA68aYJok3GmP+v717j5qrKu84/v2RFwKFSIKAhEtMcIEp1MXFFyRcLFhExBaKYgXxVlSkFhEVERddrlhLxStd3g1KkZaLFItyUYlUC4s7ISQkXCKRIAkghDtYimKe/rH3yMnbmck7L3PmzMz5fdaalXPZ7z77yX6TeWafPWcfK2mBpAWrV69uW9EJJ5zA3Xffvc7hbeuexrwBJwNmZv1vQjO7JLVfnLkLIuKB/OfDwMXAnmPOz4uI0YgY3WKLLdrWNTIyMu5PtNYds2fPZmRkZK1va5iZWX+a6DTv93W1FWNI2ljSlMY2cBCwtMxrWnedeOKJXH311UyZMqXqppiZ2Tq0e87AU61OAWXfVH8ZcHH+Ct0IcF5E/LTka1oXbbrppsyZM6fqZpiZ2Ti0+zbBE8AeEfHQ2BOSVpbXJIiIe4BdyryGmZmZJe1uE5wDtPou3nkltMXMzMwq0HJkICL+oc25T5TTHDMzM+u1jiYQSppbUjvMzMysIp1+m+DQUlphZmZmlek0GeifJfzMzMysKzpNBl5dSivMzMysMi2TAUkXFrY/BxARa/L+/PKbZmZmZr3QbmRgh8L268eca//8XzMzMxsY7ZKBmOA5MzMzGyDtnkD4J5J2IyUMG+Vt0ZvHEZuZmVmPtEsGHgS+nLd/U9hu7JuZmdkQaPcEwgN62RAzMzOrxoSWMJY0dkKhmZmZDagJJQPAd7vaCjMzM6tMy9sEki5pdQp4aTnNMTMzs15rN4FwP+AdwDNjjgvYs7QWmZmZWU+1SwZuAP4nIq4ae0LSsvKaZGZmZr3U7tsEb2xz7rXlNMfMzMx6rd3aBOtcoXA8ZczMzKy/tfs2wS8kfUjSjOJBSRtIep2k7wHvLrd5ZmZmVrZ2cwYOBo4Bzpc0C3gC2BCYBMwHzoiIReU30czMzMrUbs7A/wLfAL4haX1gc+DZiHiiV40zMzOz8rUbGfijiPg9aa0CMzMzGzITfQKhmZmZDQknA2ZmZjW3zmRA0k5Nju1fSmvMzMys58YzMnChpE8o2UjSV4HPlt0wMzMz643xJAOvAbYDrgNuBh4A9imzUQCSDpa0TNJySaeUfT0zM7O6Gk8y8HvgWWAj0nMGVkTEmjIbJWkS8HXgjcBOwFHNbleYmZnZizeeZOBmUjKwB7Av6Y35olJblVZFXB4R90TE74ALgMNKvqaZmVktjec5A++NiAV5+zfAYZLeWWKbALYBVhb2V5FuV/yRpGOBYwFmzFjriclmZmbWgfEkAw+PXZ8A+H/LGndZswWQYq2diHnAPIDR0dFoUt7MzMzGYTzJwOWkN2KR5gzMApYBO5fYrlWkSYsN25ImLpqZmVmXrTMZiIhXFfcl7Q58oLQWJTcDO+QFku4HjgTeXvI1zczMamlcaxMURcRCSXuU0ZjCNZ6XdDxwBWmVxLMi4vYyr2lmZlZX60wGJH20sLsesDuwurQWZRHxY+DHZV/HzMys7sYzMjClsP08aQ7BD8ppjpmZmfXaeOYMfLoXDTEzM7NqtEwGJF3KmK/zFUXEoaW0yMzMzHqq3cjAF3vWCjMzM6tMu2RgRUTc17OWmJmZWSXarU3ww8aGJE8YNDMzG1LtkoHiI4G3L7shZmZmVo12yUC02DYzM7Mh0m7OwC6SniKNEGyUt8n7EREvKb11ZmZmVrqWyUBETOplQ8zMzKwa7W4TmJmZWQ04GTAzM6s5JwNmZmY152TAzMys5pwMmJmZ1ZyTATMzs5pzMmBmZlZzTgbMzMxqzsmAmZlZzTkZMDMzqzknA2ZmZjXnZMDMzKzmnAyYmZnVnJMBMzOzmnMyYGZmVnNOBszMzGqu75IBSXMl3S9pUX4dUnWbzMzMhtlI1Q1o4YyI+GLVjTAzM6uDvhsZMDMzs97q12TgeEm3STpL0rRmBSQdK2mBpAWrV6/udfvMzMyGhiKi9xeVrgS2anLqVOAG4BEggM8A0yPimHb1jY6OxoIFC7reTjMzs34l6ZaIGO1GXZXMGYiIA8dTTtKZwGUlN8fMzKzW+u42gaTphd3DgaVVtcXMzKwO+vHbBJ+XtCvpNsG9wAeqbY6Zmdlw67tkICLeWXUbzMzM6qTvbhOYmZlZbzkZMDMzqzknA2ZmZjXnZMDMzKzmnAyYmZnVnJMBMzOzmnMyYGZmVnNOBszMzGrOyYCZmVnNORkwMzOrOScDZmZmNedkwMzMrOacDJiZmdWckwEzM7OaczJgZmZWc04GzMzMas7JgJmZWc05GTAzM6s5JwNmZmY152TAzMys5pwMmJmZ1ZyTATMzs5pzMmBmZlZzTgbMzMxqzsmAmZlZzTkZMDMzq7lKkgFJb5V0u6Q1kkbHnPukpOWSlkl6QxXtMzMzq5ORiq67FHgz8O3iQUk7AUcCOwNbA1dK2jEi/tD7JpqZmdVDJSMDEXFnRCxrcuow4IKIeC4iVgDLgT172zozM7N66bc5A9sAKwv7q/IxMzMzK0lptwkkXQls1eTUqRHxo1Y/1uRYtKj/WOBYgBkzZkyojWZmZlZiMhARB07gx1YB2xX2twUeaFH/PGAewOjoaNOEwczMzNat324TXAIcKWmypFnADsBNFbfJzMxsqFX11cLDJa0C5gCXS7oCICJuBy4E7gB+Cvy9v0lgZmZWrkq+WhgRFwMXtzh3GnBab1tkZmZWX/12m8DMzMx6zMmAmZlZzSli8CfiS3oaaPYQo2GxOfBI1Y0okeMbXMMcGzi+QTfs8b0yIqZ0o6KqHkfcbcsiYnTdxQaTpAWOb3ANc3zDHBs4vkFXh/i6VZdvE5iZmdWckwEzM7OaG5ZkYF7VDSiZ4xtswxzfMMcGjm/QOb5xGooJhGZmZjZxwzIyYGZmZhPkZMDMzKzm+jYZkDRV0kWS7pJ0p6Q5kj4j6TZJiyTNl7R1LitJX5G0PJ/fvVDPuyXdnV/vri6itXUY3/6SnszHF0n6VKGegyUty7GfUl1Ea2sWX+HcSZJC0uZ5fyj6r3BubHxD0X+S5kq6vxDHIYXyn8wxLJP0hsLxvouvk9gkzZT0bOH4twr1vFrSkhzbVyQ1W4K951r9bkr6UO6L2yV9vlB+YPoOOotvWPpP0vcLMdwraVGhfHf6LyL68gV8D3hf3t4AmAq8pHD+BOBbefsQ4CeAgL2AG/PxzYB78p/T8va0qmObQHz7A5c1qWMS8Ctg+1zHYmCnqmNrFV/e3g64Avg1sPkw9V+b+Iai/4C5wElNyu6U2z4ZmJVjmtSv8XUY20xgaYt6biIttqb8+/vGqmNrE98BwJXA5Hx8y0HsuwnENxT9N+b8l4BPdbv/+nJkQNJLgNcC3wWIiN9FxBMR8VSh2MZAY/bjYcA5kdwATJU0HXgD8LOIeCwiHgd+Bhzcs0BamEB8rewJLI+IeyLid8AFpL+LSrWKL58+AziZtWMbiv7Lp5vF18og9l8zhwEXRMRzEbECWE6Kre/im0BsreqZTkrer4/0v/I5wF93tbET0Ca+vwNOj4jn8vGH848MTN/BhOJrVc+g9V/jvIC/Ac7Ph7rWf32ZDJCymdXAv0q6VdJ3JG0MIOk0SSuBo4HGcOs2wMrCz6/Kx1odr1qn8QHMkbRY0k8k7ZyPDVR8kg4F7o+IxWPKD0X/tYkPhqD/8rnjlW7lnCVpWj42SP3XaWwAs3LZqyTtl49tQ4qnoR9ig9bx7QjsJ+nGHMceufwg9R10Hh8MR/817Ac8FBF35/2u9V+/JgMjwO7ANyNiN+C3wCkAEXFqRGwHnAscn8s3u9cTbY5XrdP4FgIvj4hdgK8CP8zHBym+ucCprJ3gNAxD/82ldXzD0H+nAN8EXgHsCjxIGq6Eweq/TmN7EJiRy34UOC9/euvH2KB1fCOkW217AR8HLsyfMgep76Dz+Ial/xqO4oVRAehi//VrMrAKWBURN+b9i0h/QUXnAW8plN+ucG5b4IE2x6vWUXwR8VREPJO3fwysrzQ5bdDimwUslnQvqa0LJW3F8PRf0/iGpf8i4qGI+ENErAHOJA1FNsoPSv91FFsefn00b99Cug+7Y65n20K9/RAbtP7dXAX8Z74VdxOwhrSIzyD1HXQY3xD1H5JGgDcD3x9Tviv915fJQET8Blgp6ZX50F8Ad0jaoVDsUOCuvH0J8C4lewFPRsSDpIlcB0malof9DsrHKtVpfJK2asx0lbQnqd8eBW4GdpA0S9IGwJGkv4tKtYhvYURsGREzI2Im6Zd191x2GPqvZXxD0n935PusDYcDS/P2JcCRkiZLmgXsQJqc1XfxdRqbpC0kTcrb25Niuyf/fj4taa/ct+8CftSrOFppFR9pNOp1AJJ2JE0qe4QB6jvoPL4h6j+AA4G7IqJ4e6N7/Rd9MHuy2Ys0XLcAuI3U0dOAH5D+kd4GXApsk8sK+Dop61sCjBbqOYY0qWI58LdVxzXB+I4HbifNCL0B2LtQzyHAL3Psp1YdV7v4xpy/lxdm2w9F/7WJbyj6D/i33D+35f9YphfKn5pjWEZhVnY/xtdJbKTRuUbfLQT+qlDPaP73+ivga+Qnulb9ahHfBsC/5/YuBF43iH3XaXzD0n/5+NnAcU3Kd6X//DhiMzOzmuvL2wRmZmbWO04GzMzMas7JgJmZWc05GTAzM6s5JwNmZmY152TArAsknSHpxML+FZK+U9j/kqSPdvmaz3Szvlznrlp7NcK5kk4ax89J0s/z090axw5XWr1xdgntnCnp7d2udx3XfJWks3t5TbNecTJg1h3XAXsDSFqP9HS3nQvn9wauraBdndqV9P3kTh0CLI61F9s6CriG9MCTbpsJNE0G8pPaui4ilgDbSppRRv1mVXIyYNYd15KTAVISsJT0hLNpkiYDfwrcKmkTSf8laaHSWuqHAUj6nKQPNirLn8g/lrc/LulmpUV0Pt3s4s3K5E/Pd0o6U2mN9/mSNsrn9shlr5f0BUlL85PK/hF4m9K66W/L1e8k6b8l3SPphBbxH03hCW6SNgH2Ad5LIRmQtH+uq7Fe+7mFpzMeko9do7S+/GX5+J/rhbXcb5U0BTidtDDNIkkfkfQeSf8h6VJgfh6paMS1pBFLvv5Vki6U9EtJp0s6WtJNudwrcrm35p9dLOnqQpyXUk5yY1atqp+25Jdfw/IiPXVwBvAB4DjgM6RPzPsAV+cyI6SlUyGNHiwnPYFxN+CqQl135LoOAublMusBlwGvzWWeyX82LUP69Pw8sGsudyHwjry9lPwkRNIb69K8/R7ga4V2zCWNekzO7X0UWL9J7L8GphT23wF8N29fR3o0M8D+wJOkZ6WvB1wP7AtsSFplbVYudz5wWd6+FNgnb2+S/w73b5wvtHsVsFnefwtpyetJwMuA+4Dp+eeeyNuTgfuBT+ef+TDwL3l7CS88AXRq4Tr7AJdW/bvml1/dfnlkwKx7GqMDe5Pe5K4v7F+Xywj4Z0m3AVeSlhV9WUTcCmwpaWtJuwCPR8R9pDf6g4BbSY9TnU16/nhRuzIrImJR3r4FmClpKumNu9Gm89YR1+WRFnx5BHiY9OY61mYR8XRh/yjSGurkP48qnLspIlZFWhRoESlpmU16ZvyKXKa4Mtu1wJfzqMTUiHi+RTt/FhGP5e19gfMjLT70EHAV0FjW9uaIeDAiniM9qnV+Pr4kt6VxzbMlvZ+UUDQ8DGzd4vpmA6uUe2tmNdWYN/Aq0ifvlcDHgKeAs3KZo4EtgFdHxO+VVjjcMJ+7CDgC2IoX3kgFfDYivt3muk3LSJoJPFc49AdgI5ovb9rO2Dqa/b/xvKT1ImKNpJeSFo35M0lBejMNSSe3qa9lmyLidEmXk0ZZbpB0YIuivy1st4uxeP01hf01uS1ExHGSXgO8CVgkaddIq99tCDzbpm6zgeSRAbPuuRb4S+Cx/In0MWAqMIc0SgCwKfBwTgQOAF5e+PkLSPejjyAlBpBWaTwm34NH0jaSthxz3fGU+aOIeJy8Yls+VLwH/jQwpZOgs2XA9nn7COCciHh5pFUctwNWkD6tt3IXsH1OYAAa8xWQ9IqIWBIRnyMt4DJ7HO28mjT3YZKkLUi3TW4abzD5mjdGxKdIq/s1loPdkRdWazQbGk4GzLpnCem++g1jjj2Zh9gBzgVGJS0gjRI0luEmIm4nvcHdH2mJVSJiPmkY/3pJS0hJwlpvguMp08R7gXmSrid9in4yH/8FacJgcQLheFxOuh8P6ZbAxWPO/4AWs/9zDM8CHwR+Kuka4KFCm05sTOYjfSr/CWlFt+fzBL+PNKny4lxmMfBz4ORIy8OO1xfyhMKlpMRicT5+QI7VbKh41UKzGpK0SUQ8k7dPIS3Z++EXUd900mjA619sm/K3C74O3B0RZ0y0vm7L3wq5Cti3zbwFs4HkkQGzenpT/vS/FNgP+KcXU1keyThThYcOTcD7JS0irT+/KdBunkQVZgCnOBGwYeSRATMzs5rzyICZmVnNORkwMzOrOScDZmZmNedkwMzMrOacDJiZmdXc/wE0O8BaH+gsOAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -342,7 +336,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -397,21 +391,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 13, "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'models' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mcompound_model\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodels\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mGaussian1D\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m6563\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mmodels\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPolynomial1D\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdegree\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mNameError\u001b[0m: name 'models' is not defined" - ] - } - ], + "outputs": [], "source": [ "compound_model = models.Gaussian1D(1, 6563, 10) + models.Polynomial1D(degree=1)" ] @@ -420,12 +402,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "After this point, the algorithm to fit the data works exactly the same as before: we define a fitter and then give to the fitter the model and the data." + "After this point, the algorithm to fit the data works exactly the same as before except we use a compound model instead of the gaussian model." ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -435,14 +417,14 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -468,7 +450,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -504,7 +486,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -528,12 +510,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can see that the result includes all the fit parameters from the gaussian (mean, std and amplitude) and the two coefficients from the polynomial of degree 1. So now if we want the amplitude of the line we could do:" + "We can see that the result includes all the fit parameters from the gaussian (mean, std and amplitude) and the two coefficients from the polynomial of degree 1. So now if we want to see the amplitude:" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -542,7 +524,7 @@ "Parameter('amplitude_0', value=7.0208917442781855)" ] }, - "execution_count": 17, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -568,7 +550,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -585,7 +567,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -595,14 +577,14 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -621,7 +603,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -652,12 +634,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can see in the plot that the height of the fit does not match the $H\\alpha$ line height. What happend here is that we were too strict with the mean value, so we did not get a good fit. But the mean value is where we want it! Let's loose this condition a little. Another thing we can do is to define a [**minimum and maximum value**](http://docs.astropy.org/en/stable/api/astropy.modeling.Parameter.html#astropy.modeling.Parameter.max) for the mean." + "We can see in the plot that the height of the fit does not match the $H\\alpha$ line height. What happend here is that we were too strict with the mean value, so we did not get a good fit. But the mean value is where we want it! Let's loosen this condition a little. Another thing we can do is to define a [**minimum and maximum value**](http://docs.astropy.org/en/stable/api/astropy.modeling.Parameter.html#astropy.modeling.Parameter.max) for the mean." ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -672,14 +654,14 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -698,7 +680,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -729,7 +711,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Better! By loosing the condition we added to the mean value, we got a better fit and the mean of the gaussian is closer to where we want it." + "Better! By loosening the condition we added to the mean value, we got a better fit and the mean of the gaussian is closer to where we want it." ] }, { @@ -778,7 +760,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 26, "metadata": {}, "outputs": [], "source": [ @@ -794,14 +776,14 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 27, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -822,7 +804,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -843,7 +825,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 29, "metadata": {}, "outputs": [], "source": [ @@ -854,14 +836,14 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 30, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -876,7 +858,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -888,9 +870,9 @@ "Outputs: ('x',)\n", "Model set size: 1\n", "Parameters:\n", - " a b c \n", - " ------------------ ------------------- ------------------\n", - " 1.3221630600191585 -1.8415466004307253 0.7771231057959449\n" + " a b c \n", + " ------------------ ----------------- ------------------\n", + " 1.5574802431736667 -2.12276086649367 0.7200291670876124\n" ] } ], @@ -907,7 +889,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -923,16 +905,16 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "0.9451150678329252" + "1.1988798062039328" ] }, - "execution_count": 32, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -974,7 +956,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 34, "metadata": {}, "outputs": [], "source": [ @@ -990,14 +972,14 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 35, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1021,7 +1003,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ @@ -1053,7 +1035,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 37, "metadata": {}, "outputs": [], "source": [ @@ -1064,14 +1046,14 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 38, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1086,7 +1068,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -1098,9 +1080,9 @@ "Outputs: ('y',)\n", "Model set size: 1\n", "Parameters:\n", - " a b c d \n", - " ------------------ ------------------ ----------------- ------------------\n", - " 3.5149381303979244 2.0186168190729683 3.714206247918291 1.0391132497698146\n" + " a b c d \n", + " ------------------ ------------------ ------------------ ------------------\n", + " 3.0801859165001506 2.0129142766418027 3.9125034577688784 0.9922039497594952\n" ] } ], @@ -1110,16 +1092,16 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "7.029186805386363" + "2.2140902225914516" ] }, - "execution_count": 39, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1156,7 +1138,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 41, "metadata": {}, "outputs": [], "source": [ @@ -1168,14 +1150,14 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 42, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, From 38e99e5329a09f07a59d6c32277938a6d43bb1f3 Mon Sep 17 00:00:00 2001 From: Rocio Kiman Date: Tue, 4 Sep 2018 21:52:15 -0400 Subject: [PATCH 36/83] Final details and clear outputs --- .../User-Defined-Model.ipynb | 527 ++++-------------- 1 file changed, 101 insertions(+), 426 deletions(-) diff --git a/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb b/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb index 71dd7cea2..3775883bf 100644 --- a/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb +++ b/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb @@ -33,18 +33,9 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rociokiman/anaconda3/lib/python3.6/site-packages/astroquery/sdss/__init__.py:29: UserWarning: Experimental: SDSS has not yet been refactored to have its API match the rest of astroquery (but it's nearly there).\n", - " warnings.warn(\"Experimental: SDSS has not yet been refactored to have its API \"\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", @@ -85,23 +76,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We could download the spectrum by hand from this website, but we are going to import it using the [SDSSClass](http://astroquery.readthedocs.io/en/latest/api/astroquery.sdss.SDSSClass.html) from [`astroquery.sdss`](https://astroquery.readthedocs.io/en/latest/sdss/sdss.html#module-astroquery.sdss). We can get the spectrum using the position of the star or, like in our case, the plate, fiber and mjd." + "We could download the spectrum by hand from this website, but we are going to import it using the [SDSSClass](http://astroquery.readthedocs.io/en/latest/api/astroquery.sdss.SDSSClass.html) from [`astroquery.sdss`](https://astroquery.readthedocs.io/en/latest/sdss/sdss.html#module-astroquery.sdss). We can get the spectrum using the plate, fiber and mjd in the following way:" ] }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rociokiman/anaconda3/lib/python3.6/site-packages/astroquery/sdss/core.py:856: VisibleDeprecationWarning: Reading unicode strings without specifying the encoding argument is deprecated. Set the encoding, use None for the system default.\n", - " comments='#'))\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "spectrum = SDSS.get_spectra(plate=1349, fiberID=216, mjd=52797)[0]" ] @@ -116,31 +98,11 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "text/plain": [ - "ColDefs(\n", - " name = 'flux'; format = 'E'\n", - " name = 'loglam'; format = 'E'\n", - " name = 'ivar'; format = 'E'\n", - " name = 'and_mask'; format = 'J'\n", - " name = 'or_mask'; format = 'J'\n", - " name = 'wdisp'; format = 'E'\n", - " name = 'sky'; format = 'E'\n", - " name = 'model'; format = 'E'\n", - ")" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "spectrum[1].columns" ] @@ -154,7 +116,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -166,22 +128,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Each fits file is different according to what the person who made it including depending on how the observation was made. The information about the file usually is in `fitsfile[0].header`. We would like to have the units from the flux and wavelength. For SDSS spectrum we found were the units are in this [SDSS tutorial](https://www.sdss.org/dr12/tutorials/quicklook/#python):" + "Each fits file is different according to what the person who made it including depending on how the observation was made. The information about the file usually is in `fitsfile[0].header`. We would like to have the units from the flux and wavelength. For SDSS spectrum we found where the units are in this [SDSS tutorial](https://www.sdss.org/dr12/tutorials/quicklook/#python):" ] }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1E-17 erg/cm^2/s/Ang\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "#Units of the flux\n", "units_flux = spectrum[0].header['bunit']\n", @@ -190,17 +144,9 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "wtype=linear label=Wavelength units=Angstroms\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "#Units of the wavelegth\n", "units_wavelength_full = spectrum[0].header['WAT1_001']\n", @@ -216,19 +162,11 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Angstroms\n" - ] - } - ], - "source": [ - "units_wavelength = spectrum[0].header['WAT1_001'][36:]\n", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "units_wavelength = units_wavelength_full[36:]\n", "print(units_wavelength)" ] }, @@ -241,20 +179,9 @@ }, { "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.plot(lam, flux, color='k')\n", "plt.xlim(6300,6700)\n", @@ -269,7 +196,7 @@ "metadata": {}, "source": [ "## Fit an Emission Line with a Gaussian Model\n", - "We just plotted our spectrum! Check different ranges of wavelength to see how the full spectrum looks like." + "We just plotted our spectrum! Check different ranges of wavelength to see how the full spectrum looks like in comparison to the one we saw before." ] }, { @@ -285,7 +212,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -303,20 +230,9 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.figure(figsize=(8,5))\n", "plt.plot(lam, flux, color='k')\n", @@ -336,24 +252,9 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: Gaussian1D\n", - "Inputs: ('x',)\n", - "Outputs: ('y',)\n", - "Model set size: 1\n", - "Parameters:\n", - " amplitude mean stddev \n", - " ----------------- ----------------- -----------------\n", - " 16.75070628912542 9456.749530943964 2368.395706441934\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "print(gaussian_fit)" ] @@ -382,7 +283,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "One model is not enough to make this fit work. We need to combine a couple of models to make a [compound model](http://docs.astropy.org/en/stable/modeling/#compound-models) in `astropy`. The idea is that we can add, subtract, divide or multiply models that already exist in [`astropy.modeling`](http://docs.astropy.org/en/stable/modeling/#models-and-fitting-astropy-modeling) and fit the compound model to our data.\n", + "One model is not enough to make this fit work. We need to combine a couple of models to make a [compound model](http://docs.astropy.org/en/stable/modeling/#compound-models) in `astropy`. The idea is that we can sum, rest, divide or multiply models that already exist in [`astropy.modeling`](http://docs.astropy.org/en/stable/modeling/#models-and-fitting-astropy-modeling) and fit the compound model to our data.\n", "\n", "For our problem we are going to combine the gaussian with a polynomial of degree 1 to account for the background spectrum close to the $H\\alpha$ line. Take a look at the plot we made before to convince yourself that this is the case.\n", "\n", @@ -391,7 +292,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -407,7 +308,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -417,20 +318,9 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.figure(figsize=(8,5))\n", "plt.plot(lam, flux, color='k')\n", @@ -450,29 +340,9 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: CompoundModel0\n", - "Inputs: ('x',)\n", - "Outputs: ('y',)\n", - "Model set size: 1\n", - "Expression: [0] + [1]\n", - "Components: \n", - " [0]: \n", - "\n", - " [1]: \n", - "Parameters:\n", - " amplitude_0 mean_0 ... c1_1 \n", - " ------------------ ------------------ ... --------------------\n", - " 7.0208917442781855 6564.1363171493185 ... 0.003239952053005842\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "print(compound_fit)" ] @@ -486,21 +356,9 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "amplitude_0 7.0208917442781855\n", - "mean_0 6564.1363171493185\n", - "stddev_0 1.9776147551996561\n", - "c0_1 -12.793356185541937\n", - "c1_1 0.003239952053005842\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "for x,y in zip(compound_fit.param_names, compound_fit.parameters):\n", " print(x,y)" @@ -510,25 +368,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can see that the result includes all the fit parameters from the gaussian (mean, std and amplitude) and the two coefficients from the polynomial of degree 1. So now if we want to see the amplitude:" + "We can see that the result includes all the fit parameters from the gaussian (mean, std and amplitude) and the two coefficients from the polynomial of degree 1. So now if we want to see just the amplitude:" ] }, { "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Parameter('amplitude_0', value=7.0208917442781855)" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "compound_fit.amplitude_0" ] @@ -537,7 +384,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Conclusions:** What was the difference between the first simple Gaussian and the compound model? The linear model that we added to the second model allowed the base of the Gaussian fit to have a slope and a background level. Normal Gaussians go to zero at $\\pm \\inf$; this one doesn't. " + "**Conclusions:** What was the difference between the first simple Gaussian and the compound model? The linear model that we summed up to the gaussian model allowed the base of the Gaussian fit to have a slope and a background level. Normal Gaussians go to zero at $\\pm \\inf$; this one doesn't. " ] }, { @@ -550,7 +397,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -567,7 +414,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -577,20 +424,9 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.figure(figsize=(8,5))\n", "plt.plot(lam, flux, color='k')\n", @@ -603,29 +439,9 @@ }, { "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: CompoundModel1\n", - "Inputs: ('x',)\n", - "Outputs: ('y',)\n", - "Model set size: 1\n", - "Expression: [0] + [1]\n", - "Components: \n", - " [0]: \n", - "\n", - " [1]: \n", - "Parameters:\n", - " amplitude_0 mean_0 ... c0_1 c1_1 \n", - " ------------------ ------ ... ------------------- ---------------------\n", - " 1.5325747104561047 6563.0 ... -12.791030002605362 0.0032374486280527695\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "print(compound_fit_fixed)" ] @@ -639,7 +455,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -654,20 +470,9 @@ }, { "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAFACAYAAAAh/38IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xt8znX/wPHX59p5M9swM5PznErIMDlFIUUOuR2SCDd3iO6UJJX8Oki6JaWDFEWonIlOQnJmzqc5n7YZW8Zmx+v9+2Pb1WanCzvQ3s/H4/vYru/xfV07fN7fz+lrRASllFJKFV+Wog5AKaWUUkVLkwGllFKqmNNkQCmllCrmNBlQSimlijlNBpRSSqliTpMBpZRSqpjTZEAppZQq5jQZUEoppYo5TQaUUkqpYs6xqAPID2XKlJHKlSsXdRhKKaVUodmxY8dFEfHNj3P9I5KBypUrs3379qIOQymllCo0xphT+XUubSZQSimlijlNBpRSSqliTpMBpZRSqpjTZEAppZQq5jQZUEoppYo5TQaUUkqpYk6TAaWUUqqY02RAKaWUKuY0GVBKKaWKOU0GlFJKqWJOkwGllFKqmNNkQCmllCrmiiwZMMbcZYz53Rhz0Biz3xgzMm39eGPMOWPMrrTlkaKKUSmllCoOivKphcnAKBHZaYzxBHYYY35J2zZFRCYXYWxKKaVUsVFkyYCIhAFhad9fMcYcBAKKKh6llFKquLot+gwYYyoDDYAtaauGG2P2GGO+NMb45HDMYGPMdmPM9sjIyEKKVCmllPrnKfJkwBhTAlgIPCciMcAnQDWgPqk1B+9nd5yIfC4iQSIS5OvrW2jxKqWUUv80RZoMGGOcSE0E5orIIgARiRCRFBGxAjOAxkUZo1JKKfVPV5SjCQwwEzgoIv/LsN4/w25dgX2FHZtSSilVnBTlaIJmQF9grzFmV9q6sUBvY0x9QICTwJCiCU8ppZQqHopyNMEGwGSz6cfCjkUppZQqzoq8A6FSSimlipYmA0oppVQxp8mAUkopVcxpMqCUUkoVc5oMKKWUUsWcJgNKKaVUMafJgFJKKVXMaTKglFJKFXOaDCillFLFnCYDSimlVDGnyYBSSilVzGkyoJRSShVzmgwopZRSxZwmA0oppVQxp8mAUkopVcxpMqCUUkoVc5oMKKWUUsWcJgNKKaVUMafJgFJKKVXMaTKglFJKFXOaDCillFLFnCYDSimlVDGnyYBSSilVzGkyoJRSShVzmgwopZRSxZwmA0oppVQxV2TJgDHmLmPM78aYg8aY/caYkWnrSxljfjHGhKZ99SmqGJVSSqnioChrBpKBUSJSGwgGhhlj6gBjgN9EJBD4Le21UkoppQpIkSUDIhImIjvTvr8CHAQCgM7A7LTdZgNdiiZCpZRSqni4LfoMGGMqAw2ALYCfiIRBasIAlC26yJRSSql/viJPBowxJYCFwHMiEnMDxw02xmw3xmyPjIwsuACVUkqpf7giTQaMMU6kJgJzRWRR2uoIY4x/2nZ/4EJ2x4rI5yISJCJBvr6+hROwUkop9Q9UlKMJDDATOCgi/8uwaRnQL+37fsDSwo5NKaWUKk4ci/DazYC+wF5jzK60dWOBicB3xpiBwGngX0UUn1JKKVUsFFkyICIbAJPD5gcLMxallFKqOCvyDoRKKaWUKlqaDCillFLFnCYDSimlVDGnyYBSSilVzGkyoJRSShVzmgwopZRSxZwmA0oppVQxl+c8A8aYIKAFUB64BuwDfhWRqAKOTSmllFKFIMeaAWNMf2PMTuBlwA04TOpzApoDvxhjZhtjKhZOmEoppZQqKLnVDHgAzUTkWnYbjTH1gUBSpwxWSiml1B0qx2RARD7O7UAR2ZXbdqWUUkrdGezpMzANkOtWXwa2i4g+UVAppZS6w9kzmsAFqA+Epi33AqWAgcaYDwowNqWUUkoVAnueWlgdaCMiyQDGmE+An4G2wN4CjE0ppZRShcCemoEAUjsTpvMAyotICpBQIFEppZRSqtDYUzMwCdhljFkLGKAl8LYxxgP4tQBjU0oppVQhyDMZEJGZxpgfgcakJgNjReR82uYXCzI4pZRSShU8e6cjtgCRQBRQ3RjTsuBCUkoppVRhsmdo4btAT2A/YE1bLcD6AoxLKaWUUoXEnj4DXYCaIqKdBZVSSql/IHuaCY4DTgUdiFJKKaWKhj01A3Gkjib4jQxDCUVkRIFFpZRSSqlCY08ysCxtyej66YmVUkopdYeyZ2jh7IyvjTF3Ab0KLCKllFJKFSq7hhYaY8oYY54xxqwH1gJ+BRqVUkoppQpNjjUDxhhPoCvwBFADWAxUFZEKhRSbUkoppQpBbs0EF4CtwDhgg4iIMaZr4YSllFJKqcKSWzPBWMAV+AR42RhTLb8vboz50hhzwRizL8O68caYc8aYXWnLI/l9XaWUKmgxMTEsW3Z932ulbk85JgMiMkVEmgCPkfpMgiVAeWPMS8aYGvl0/VnAw9msnyIi9dOWH/PpWkopVWiGDh1K586dOXPmTFGHolSe8uxAKCLHReQtEakLNAK8gFX5cXERWU/q8w6UUuofY8Ovy5k7dy4AZ8+eLeJolMpbjsmAMeYnY8x/jTG10teJyF4RGSsi+d5kcJ3hxpg9ac0IPjnEN9gYs90Ysz0yMrKAw1FKKftYr0XTcEdnxrR1BuD8+fN5HKFU0cutZqAfEA2MN8bsNMZ8YozpbIwpUcAxfQJUA+oDYcD72e0kIp+LSJCIBPn6+hZwSEopZZ/Io9twcxRebeuAp4smA+rOkFufgXARmSUivYAg4GugIfCTMeZXY8zogghIRCJEJEVErMAMoHFBXEcppQpC/KXjALhbrjHqAYsmA+qOYNekQyJiFZFNIvKaiDQjdQbCcwURkDHGP8PLrsC+nPZVSqnbTfJfpwG47BrIf1sKF8NOF3FESuUtz2TAGDPJGFPSGONkjPnNGHMReFhE5t7qxY0x84BNQE1jzFljzEBgkjFmrzFmD9Aa+O+tXkcppQqLNSZ19EBkhZ6UdBGsfx0v4oiUyps9DypqJyKj0yYcOgv8C/gdmHOrFxeR3tmsnnmr51VKqaJiiQsn8io4+lQBwHolrIgjUipv9jQTOKV9fQSYJyI6FFAppXLgmHCBc5fBtVRFAEy8jnZStz97koHlxphDpHYi/M0Y4wvEF2xYSil1Z3JJiuJ8DHj4VgWghCWOuLi4Io5KqdzlNs+AP4CIjAGaAkEikgTEAZ0LJzyllLqzeMhfhMWAR5mKWLHgVwLCwrSpQN3ecqsZ+NIYs9kYMxGoR+qUxIhIrIiEF0p0Sil1J7Em42GuEhnvjMXBkSRHb/w8da4BdfvLbZ6BDsADwFpSh/htNsYsSpv5r2LhhKeUUneQ2AgsBi4newBgdfOlbAlNBtTtL9fRBCISD6xOWzDGVAE6AB8ZY8qJiE4IpJRS6a6mTr8SI54AOJYsj5/nYTZqMqBuc/YMLbQRkRPAdGC6Mca5YEJSSqk71NXUQj/O4g2AY8kAymkzgboD5NaB8C5jzHxjzB/GmLHGGKcM25aISGLhhKiUUneI2NRCP9GpDADG3Q8/T8P58wUyYatS+SbXDoSk9hd4FvAH1hljSqdtq1TAcSml1J3n6nmSrWB1TftX6eGHq6MQHaFTEqvbW27NBL4i8mna988aY54E1htjHgOk4ENTSqk7zNVzXIi1UNIr7cnr7n4AJMdoM4G6veWWDDgZY1zTOhEiInOMMeHAT4BHoUSnlFJ3kqvnOfeXULJkydTXHqnJgIm7UIRBKZW33JoJvgCaZFwhIr+S+mwCfZKgUkpdR66e5/xlwcvLK3WFW1kAPEws8fE6cau6feU2z8AUEVmXzfoQEWlbsGEppdSdR2LDCbtClpoBP0+IiIgowsiUyp09jzAOKIxAlFLqjpaShIm/RPgVMtQM+AKpyUB4uE7cqm5fuSYDxpi6wA+FFItSSt25rkViEMIz1gw4OJHs6EXZElozoG5vuc0z0BqYD/QtvHCUUuoOFZta2IfHZKgZAMTdD78SWjOgbm+51QwsA/4lIkcLKxillLpjxaUW9hFXMycDDiXLazOBuu3llgx8C7xmjMmzX4FSShV7samFfaZmAsDiGUAFb4s2E6jbWm6jCYaQOoRwTuGFo5RSd6i0ZCDiSuaaAUoEUL6kEB4eVkSBKZW3XO/6ReRN0p5YqJRSKhex4cSLC9eSMtcMUKICzg5CfNTZootNqTzk2QQgIl8XRiBKKWWPRYsWUbNmTa5du1bUoWQWG86VFA+cnZ1xdXX9e71nBQAscTolsbp92fUIY2PMvUDljPuLyKICikkppXL0/fffc+TIEUJCQrj//vuLOpy/xYXzV5ILJUted49VInWqFteki0UQlFL2yTMZMMZ8CdwL7AesaasF0GRAKVWoRIQ//vgDgG3btt1eyUBsOJfinfDycs+8Pq1moIxrAlevXqVEiRJFEJxSubNnpECwiASJSD8ReTptGVDgkSmlirWdO3ditVozrTt16hTnzp0DYOvWrTd97sTERJYtW8bgwYNtycUtiw0nMtaSub8AgLsfViwEeN348MLw8HBWr86+29a8efP4/vvvbzZapTKxJxnYZIypU+CRKKVUmqNHj9KwYUO+/fZbAGbNmsWCBQvYsGEDANWrV7c7GdiyZQsbN27MtG7EiBF07tyZGTNmMGDAABITE28t4KRrkBhDWIxkHkkAYHEgwak0FbxufBbCSZMm0bFjRxISEjKtv3DhAoMGDeLdd9+9tbiVSmNPMjCb1ITgsDFmjzFmrzFmT0EHppT659u1axenTp3Ksv7IkSMArF+/HqvVygsvvMDTTz/N3LlzKVmyJP379+fo0aNERUXlev4FCxbQvHlzunfvjogAkJKSwvfff0/37t1ZunQpR48e5ZNPPrm1NxKXWsjvOXqBmjVrZtlsdfenwk3UDOzevZuUlJQsScT7779PXFyczl2g8o09ycCXpE5J/DDQCeiY9vWWGWO+NMZcMMbsy7CulDHmF2NMaNpXn/y4llLq9iIidOjQgSFDhmTZdvLkSQA2b97MoUOHuHTpEteuXWP16tU0a9aM4OBgALZv357j+efMmUPv3r3x9vYmLCyMffv22Y6Jiori8ccfp1OnTrRt25YJEyZw+fLlm38zaXMMHL9wjaZNm2bZ7OBV8YabCUSEPXtS77vOn/97JEJkZCQfffQRFkvqREbpSY5St8KeZOC0iCwTkRMicip9yafrzyI1ychoDPCbiAQCv6W9Vkr9wxw6dIjw8HDWrl1LXFxcpm3pycC+fftYuXIlAIMHDwagefPmBAUFAamdCLOzZMkS+vfvT+vWrW1NBD///DMAq1atwmKx0LZtW4wxjBo1iqioKHbs2HHzbybD7IPZJQPOpatylzecPHnC7lNGRERw8WLqCISwsL8nLJo3bx5xcXEMHDiQpKQkoqOjbz5updLYkwwcMsZ8a4zpbYzplr7kx8VFZD1wfT1fZ1KbJkj72iU/rqWUur2sXbsWgISEBH7//fdM29KTARHhww8/xN/fn2nTpvH2228zYMAAvLy8qFmzZrb9Bnbs2EGvXr0ICgpi6dKlBAYGUqdOHX766ScAVq9eTePGjSldujQAVatWBbB1TLwpac8lSHT0ITAwMMtmi+ddlHCBYwdD7D5leq0AZE4GDh06hI+PD61btwb0aYgqf9iTDLgBCUA7UpsH0psKCoqfiIQBpH0tm91OxpjBxpjtxpjtkZGRBRiOUsXLsWPH+OWXXwr8OuvWraNcuXK4u7tn6TF/8uRJGjVqBMDZs2dp2bIlzs7OvPzyy5QrVw6Axo0bs3Xr1kzV5NHR0XTv3p2yZcuyYsUK2zC+9u3bs379es6cOcPWrVt5+OG/KyQDAlLnAbilZCD6CPHJhqp1gzHGZN2eNrww+vReu0+5d2/qvsaYTMlAaGgo1atXx8/PD9BkQOUPe2YgfDqbpciHForI52lDHoN8fX2LOhylblunT58mKCjIdredl/Hjx9OlSxdSUlLyLYZDhw5Rt25dXn/9dSD1jn/dunW0adOG1q1bs2rVqkz7nzp1igYNGlC7dm0AWrZsmeWcjRo1Ijw8PFMh/swzz3Du3Dm+++47ypQpY1vfvn17EhISCA4ORkR49NFHbdvc3d3x9vbm7Nmbny446dxWdp0TmgQ3y36HEqnJgFNCZJ6dHtPt2bMHf39/ypUrl6nPwNGjRwkMDLQlA/o0RJUf8kwGjDGzjTHeGV77pE1EVFAijDH+adfyBy4U4LWUuiOICGvXrr2pzmLr169nx44dLFiwwK799+3bR1xcHMePH7/ha2Vn27ZtNG3alH379jF79mxEhNDQUMLDw2nVqhUPP/wwx44dIzQ0FIC4uDguXLhApUqVbB0FW7RokeW8jRs3Bv6eb2Dz5s0sWLCAsWPH2o5L17JlS/z8/PD19WX+/Pm2PgfpKlSocPM1A2KFCyHsPJd9fwHAVjNQwevvO35I7b9w5syZbA/Zs2cP9957L/7+/raagYSEBE6fPk316tVtNSRaM6Dygz3NBPeKyF/pL0QkGmhQcCGxDOiX9n0/YGkBXkupO8LatWtp3bo1CxcuvOFj04fp5TR5TUYpKSkcOnQIyFxo3Yr33nsPJycnXn75ZU6dOsXhw4dt/QVatWplu0tPf2/pQw0rV67MwIEDGTBgAHfffXeW89arVw8nJydbU8GYMWMoW7YsL7zwQpZ93dzcOHfuHCEhIfTs2TPL9oCAgGyTgUOHDtk6MObor+M4WePYHWaxNW1kUaI8YhypVfbvz3Xt2rU88sgjjB07NsvuycnJHDhwIEsycOLECaxWK4GBgfj4+ODo6HhLyUBcXFyWOQwgNfl8++23WbduXY7Hzp8/n4cffjjLxFDqzmRPMmDJOLzPGFMKO59pkBdjzDxgE1DTGHPWGDMQmAi0NcaEAm3TXitVrKVPtrN8+fIbPjb9jnvDhg3ExMTkuu+JEyeIj48H8icZsFqtrFmzhg4dOthGA6xatYqZM2dSrVo1atSoQZUqVWjWrBlff/01ImJrzqhcuTLNmjVj5syZWCxZ/1W5urpy7733sm3bNlatWsW6det49dVXc5zu18HBIfv2fFJrBtKbCebPn8+sWbNYvHgxjRs35l//+leuNTISkToKwSmgCZ6entnv5OAM5e/n4doO7N27l9jYWAYOHAjAypUrSU5OzrT7ypUrSUxMpG7dupmSgfSfZfXq1bFYLJQtW/amkwGr1Urz5s15+umns2w7ffo0r7zyCu3bt2fFihXZHvvaa6/x008/3dooDHXbsCcZeB/YaIz5P2PMBGAjMCk/Li4ivUXEX0ScRKSCiMwUkUsi8qCIBKZ9ta+BTak70F9//cXTTz+dqU04O5s2bQJSC9IbvRM7cuQIPj4+JCcn89tvv+W67/79+wGwWCz5kgzs2bOHS5cu8eCDD1K5cmVq1arF5MmT2bp1Ky+88IKtcO7bty8HDx5k586dmZKBvDRu3Jht27bx3HPPERgYaEs4blRAQADh4eHExsby1FNP8fTTT9OtWzcSEhK4du2abYhfdiL3/0RiMjRo+2Su1zBV2nNvuRTOHtnBqFGjOH78OCNGjCA6OtqW7EFqwtejRw/q1atH586dKV++PBcuXCA5OZmjR48C2EYs+Pn5ER4eTmhoKL169SI2Ntbu97xs2TJCQkJstTQZpTe9lCtXjq5du2aZGGrNmjW2xCS7ZEHdeex9hPHjQAQQCXQTkW8KOjClioMZM2Ywa9asXO/4RYTNmzfj6+tLZGRkrhPtZHdsaGgoPXv2xNPTM8+mggMHDgDQpk2bfEkG0pOPBx98EEjtyHf+/Hn8/Pzo37+/bb8ePXrg7OzM119/zalTp3B2dra1ieemcePGXLlyhdDQUKZNm4azs/NNxRkQEICI8Msvv5CUlMQbb7zBZ599xueffw6QY7s+QMzRdeyLgE5duud+kcrtASh9ZQefffYZL774Im+99RYuLi4sW7YMSP15DR48mDp16vD7779TsmRJ/P39EREiIiIIDQ3F29ubUqVKAamFdUREBPPmzWPBggX89ttviAh9+vRh8eLFOYaS3gwAqcMWr09Gt27diouLC9999x3Jycls3rwZSJ3rYeTIkbz//vuUKVOGRo0aZfu7e+nSJS5c0O5ed5Icq/uNMduBP4FVwFoROVBoUSlVDKSkpDB9+nTg7zvy7Bw5coTo6GgmTZrEmDFjWLlypa3zXF4uXLjAlStXqFOnDg899JBt4p2c7N+/n7vuuov777+fNWvWcO3aNdzc3Ox+T9HR0Vy9epW77roLSE0GatasaRu+16FDB6ZOncp///tfXF1dbcf5+Pjw2GOP8fXXX1OlShUqVqyYbdPA9dI/hy5dutC+fXu747xehQqpHfzSC+Unn3ySqlWr2hKvM2fOcN9992U65uWXXyY8PIz3q53kUHI57iub7Sjov5VtwDXjSbsaV4it1I2JEydisVh48MEHWbp0Ke+//z4RERGEh4czZswYfHxSW2f9/f2B1EI7fSRBeo2Kn58fe/futRXWa9asoXLlynz77bfs2LGDzp07Z/s5/vbbb2zbto2nnnqKr7/+mh07dlC+fHnb9q1bt9KgQQPq1auHg0Nq00b79u2ZMWOGbZ8xY8bg7e3NmDFjOHfunO1nvGLFCvr27UuNGjXYsmWLfT+A25UIWJPBmpS6pCRm+D4JrIlpX29hu+3767ZnfG07x3Xny0e5tf0HA81JnSHwDWPMJeAnYJWIHMnXKJSyw/Hjx3nnnXd46aWXqF69elGHc8tWrVrFyZMncXZ2zjUZSP9H/+ijj7JkyRJWrlzJG2+8Ydc10jsPBgYGcvXqVRYvXsyVK1dybNs+cOAAderUoW7dulitVvbt24ezszP16tXL9TqXL19m6NChLFy4EAcHB7Zv3061atVYv349/fr1s+3Xrl07Fi5cSMeOWacqmTBhArt37yYkJISHHnrIrvdXu3ZtZs6cme35bkR6QbZy5Uq8vLyoUqUKgC2pub5mYP369UycOJGW1RwodY+VEtVa5X0RY8FSpT1dravo9sxsWyH92GOP8eOPP3Lw4EFbJ8a6devaDsuYDISGhmYaseDn50dERIRtBsc1a9aQPtT68OHD/Prrr7Rr1y5LKEuWLKFEiRJMmTKFOXPmsGPHDjp1Sp1lPjk5me3btzNo0CBcXFyoWbMme/fuZefOnQBMnDiREydO8Nxzz3Hp0iXGjBljm/HxlVdeYerUqbi5ubFt21aiLl6glJdn/hWGN1pY3kjhnO358rfAzZ4BByewOKd9TVscnP/+PuNrBydwdE39Ph/lmAyISDKwNm1JH+bXAXjTGBMIbBKRofkajVI5WL58OX369OHKlSsEBAQwfvz4og7plk2fPp3y5cvTpk2bLJP8nDx50tZmvmnTJry8vKhVqxaPPvoor7zyCuHh4XZVo6e369aoUYNr164BqQlCw4YNs+ybkpLCwYMHad26ta0w6tq1K+fOnWPJkiV07tw5x+uMGzeO+fPnM3ToUBYsWECPHj2oX78+sbGxmQojYwzdumU/gWnt2rXZtWsXkydPzjL0LyfGGAYMuPVpT9KTgQsXLtC6dWvbnbevry8uLi6cPn3atq/VamXUqFHcU92fNaMsXEtKoVn/D+26jkvtx3E5/gOs+w889Ck4l6Bt27ZA6iRM6T+juvfck3pHmpJE+TIlKO0OF07sRmJO0bhGR7h0CKxJ1PVLooF/Ek6WKKrcU54L4Xs5sy6K/3aqTOzlaPYsGE278ueyFIZ145YztZcPpfZPZkZfH0pf/hp+jQRrIlcuXeDzLnE0r7EZlnThm27RxMb8TKWd+9gwDJqUW4Cjv8CqBymbksiZ150gfDhXJw/n9dLw7iRHnBySIQUss/1u+WeTpwyFZQoOxMUn4ebhiaOLe/aFqZNHlsL3SlwCO3ftpWnzDji7eGQtfPMqnHPbbtsnp8Le4RbefPYdYm/qTDczbtkYYwGaisif+RbJLQgKCpIbaUdVdxYRoUqVKnh6enL58mUaNmyYa3vonSAhIQEvLy+GDh1K+fLlefHFF7l48SKlS5dm+/btNGrUiF9++YWHHnqI+vXr4+fnx08//cSuXbto0KABX375Zba9wK83ZswY/ve//xEXF0doaCh16tRhzpw59OnTJ8u+6VXQM2fOpF+/fpQsWZLk5GTc3Nxo0aJFjv0adu3aRcOGDRk6dCjTpk1j9erVdOjQAYvFwquvvsprr71mV5V/vhGrnXeSf98lSkoi3bp0BGsy3Tp3pG+fXrZ9x7/6ClWr3MVTT/QCaxL79oSw/qeFPNnCj5JEQ68/oZx9yQtihc1vwabxYBzAtRRiHIiKDMfV2QFHi2AkGedbKR9uhMWRhGQhIclKSe/SYHHialwC4ZFR3FW5Gi5uHoRFXOTk6fOU8PLh8tVrNG/xQKbCLDY+kROnz3EpOoZqNWpT4a7KJIuFSe9Pof59jXnk0cdsheGVuHjeePMdghoH0+uJpxDjiNU44uDkkvudcXphmqHw/WPTFv7VoxcffjiNHj168M477zB+/HgSExN56aWXmDjR/oFoH374oa0vxPPPP19wn3c+M8bsEBE7f/lyl+cQQWPMcuD6jOEysD0tkPj8COROdfbsWYwxtjsLlf/27t3LqVOnmDFjBj///HOhDmWKiIjA19fXrsIsKSmJgwcPUrNmTVxcXHLdNyQkhISEBJo3b25rkz9w4AAtWrSw1RKsW7eOJk2asHfvXttdeb169QgICGDlypVZkoEvvviCe+65h+DgYH755Rd+++03QkJCqFq1Ko6OjlSrVg0HBwcOHjyYJZ7o6Gj69u2LxWJo2iQIB2sCKxd/i28pb5Yt/oHPP/2YiMN/4lfGJ1MValJCLDNfe5Z/NSrBO4OawpEfeLhSEtu/HoG3pwfVKvvBro+yqbK1s/r3ZvaVGx/3boDFT6W/WgE//t1DfnxLgIvwR+pzBe4BKjU0lPCvDfeNtD8RADAWaPoqVHwQji2D+CgMwvbjv3M+7AJOru44OLvR+4m+mQrCl8eNJzrmKvUaBPGfocMxaQXnnn1BL4VWAAAgAElEQVQHGfPKazg6u/LDoqU80qkrl6/G8c2ceQRUrMKUqR9x4HAof27aik8ZP774cjbepXy5p959fPb5TJ4eMIBPp07ludHPce7cbkqVKkWfnj1Zv349UVGhYAzbli2j8+jOWCyX6datG80f/z7TW/JI+0wycgR+e3Mn3y+P4pEJqc+aExF6d+rEyp+iqXhwPz3f6MlHH33E+PHjmTNnDh06pHYyTUlJ4ciRI7bZJzNauHAhs2fPplOnTrz00ktER0czZMgQIiIiGDt2LN26dSMkJCTb3/HcpE+w9cEHH/Dss8/i5JR7FXx0dDRLliyhX79+hZvoFiB75gs4DvgC89Je9yR1ZEENYAapjzf+R7NaraxYsYJOnTplGafct29f4uLi7vyOMrexpUuXYoyhU6dOhIeH8/333xMTE0PJkiVv6nzJycm0bduWihUrMnnyZHKazjo6OpqqVasybtw4Xn755TzP++qrrzJp0rt4uDrx5oTXGDlsKFiTiI+L4ZWXR3N37RoM6NcXUhI5/uc8mlWGVlWtpCRe5NHaELt7Lviex+HIfPo3gjLnFxH242VGNLPyROBZ2PwmJiWJz5/yJfTwMlJ+HY4DVrAmceVyFO5rF3FxmxtxJ1pg/ljLgymJPFwN/Jr4wJxGOFuTOPiSAx6uU2HGnEx3yK6xV1jXxYpzd2B1PVgND6S9r7tLwctjgRXNs7xnJ2BaenP5r3/XNjSE1LlDj2X3SdnRRnr9XaGju/373sh5M+w7ZOhwtmzfxeKly6lStYZt32Ejn2P9hs3s3X+Iy1fiKOtfnhEjnuO9nu/l+TuRo4D7U5c0hw5O5bn3nsPR8RrDhw+nd7MJmXbfELuEuIQ43p+0FuPhYVvvkLSfVYdeo3XrpjhXa4dnzXYcDQmhZoueGGN4bUoTIPWxzV27duX5lycwfPhwklKgQVqHyPQmo+7du3P27FnOnDnD888/b/tfl95kZLVas21eyskDDzzA66+/TlRUFJcvX+add95h5cqVNGvWjD///JN9+/bx0UcfERUVRceOHZkxYwYDBgzggw8+YPTo0YSGhtoeIgWpycS4ceM4dOgQy5cvt9WWdenShREjRtC4cWO+/fZbnnzySXbv3n0jPw2OHTuGs7MzZ86c4fvvv+eJJ57Isk9ycjIODqlVNoMGDWLRokWUL1/+ljqu3k7ybCYwxqwXkZbZrTPG7BeRrFODFbKCbiZYuXIlHTt25Oeff7a176Xz8/PjwoULnD9/3tbR53a0detWnn/+eVasWIG3t3feBxSFjD13M9ztdXykPe6ujnw3by7rfv+VF54fyZczPqVunVpZ9j2wbw+kJFC7ZnWMNTnbDkOHDuzlxxXLcHYATw8XHmrzAAHlfLPccUaGn+PQgX14uDvT4N57MBnPlbZvQnwsFknB0VixJifgUAg3CVYciE9MwcnNAydnN7A4ER1zlYvRV0hKATGOXEtMpkLFqpwNi6CcfwUqVKoKFic2bt7GX1dieaRjF1uBGHP1Gp/PnE3zVq0Jbto827bPdyZN5q8rcbw76X1wcCbJCnPnfcfXcxfQs1cfhjwzPNuq3OwL4sKqA78xffr0YdmyZVy+fDnT3d4rr7zCu+++S0JCAgsWLKBPnz5s3Lgx56mHb8KOHTts/SRmzpyZpR/E1atXcXR0zDQCAyAqKorSpUvz8ssv8/bbb3Px4kViY2OpVKlSlmu88847jB07lh49erB48WKuXr2Ks7Mz8fHxPP7440RERFCqVCleeukl21BQSE0CvLy8uHr1qq3pyh5//PEHLVu2pE6dOhw8eBCLxcKQIUMYO3YsFSpUoFu3bixatIgPPviAJUuWEBISwvHjx2nYsCEnT57ks88+yzRvxMaNG2nWrBmfffYZAQEBBAYGUqNGDb766ivee+89Vq1aRaVKlXjttdd46623iI2NZdOmTfz444/07t3bNhpk165dLFy4kAkTJtgSnrvvvpvAwEAOHz6Mh4eHbRSJiLBlyxa++uor5s+fT7ly5ejRowdvvvkmAD179mT+/PkAxMTEMGLECN55551CKwvys5nAnmTgINBeRE6nva4IrBaROsaYEBEpyKmJ7VLQycDbb7/NK6+8wuTJkxk1apRt/dWrV229sr/44gvbjGL5SUQ4deqUXROwYE3J1HP2159/ZM+uHfx3xHAGPt2XbVs28fG0KbRs1jT3XrY30qM3P/cthJ67giExBZJSwNXdk7+uxHEtIRlP71J4+fhiMtxRHj1xhtPnwlLvoho2pmy5gEx3lEli+GrWN8TGJ+FdypewiIsMGfos58Ii+HruAoY9O5J9B4+wdPkqHmzbnuU//kTP3k/yWJfHebLfAOrWa8CYsa+CxZmnBw3G0cWN554fTZfHe9CoSVPW/bGJKtVrkJBkZduOXba4rsbGUrp0aQYOHMj06dO5du0aFSpUoHXr1vj6+vLpp58ybNgwPvrooyzv/6WXXuKDDz4gNjYWR8fUisGZM2cyaNAg9u/fT506dbL93CZPnsyLL75IeHg4zs7OtG7dmt27d9O/f3+++OIL2x3TnWz//v2cOHEiy8iEzz77jP/85z+cPXuWkSNHsnHjRs6ePZuv1cPJycl4e3sTGxvL1q1bc57WOBsLFiygTZs2OdZwpTtx4oTtTrtBgwa20QH2uP/++9m0aRNRUVG2IY95SUhIoHr16nh4eNCrVy8GDRpkG8J53333ERISgouLC+Hh4Zw4cYL77ruPVq1asW7dOowx9OjRw1bQQurd+Pz58wkLC8t5pkdg3rx5PPHEE+zZs4eRI0faHo/9f//3f4wbN44ePXrw/fffc+TIEQIDA7FarXh4eDBs2DCqVKnC8OHD2blzJ35+fnTo0IE9e/bg5uZGt27d2LBhA6dOnaJJkyY0bNiQmTNnEhYWho+PDwsXLqR79+5MnDiRl156ye7P9lYUap8BYBSwwRhzjNSmtSrAUGOMBzA7P4K4LdjuSrMWihdDN1HbD2KOrYfwlrbtkccO06EWODlA1KbP4H43+4bMZPj+3JlThB7aR8vm92ORrHfFlyLOE3XyOM5+pfEvWybz3en1d73XtZU+BDxUAvjyA75sAbQATv0XTmXz/u2VqYo1rx60zhl67ua9r9U4cCU2Hi+fMrZta9f/yddz5/N/b08koEJlxOJIrz5P0bRZS8IiLrJxy3YSU+CVca9TytePQYOH0qlzN+Z/v4hJk/9H7z79wMGJA4dC6dSlGw3uC2LhwoVMnz6dZ555BpcrV/j3U0+xZMkSmjatyfz586lYsSIAHWvVokKFOuzevZuWlypkeS7A/G++Ych3XxIUFMT2ZdsZMGAApTtOxRIdzQfP/ID1Pgtff72VFi260PvNxczY2IZnp63j7q6v8+2maKb37Q53PZD6sZZvwsLFiylVcztHL8LUoeOYt/JRzu88kjo5j9PfVcMlSpSgX79+zJgxg5EjR7JmzRqioqIYNmwYDRs2JDAwkEGDBmX746tduzaJiYmcPHnSNjzz119/xd/fP9s22nT3359apb1p0yYiIyPZvXs38+bNo1evXjf7m3Tbufvuu7N9BkL68MIjR46watWqAmkndnR0JDg4mDVr1mQbQ26ye9ZCdqpUqcL999/Pxo0badDgxu7h0mtE7U0EgEyjMK5vXu3YsSMhISE89thjeHt706BBAzp16sTy5cspX748LVq0YM2aNYgIxhguX77MggULbJNn5Sb99zgkJISNGzcycOBAzpw5w4cffsizzz5re9bEunXrCAwMJCwsjPj4eKpWrUrv3r0ZNWoUM2fOtPUB+vzzz+nZsyclS5YkJiaGTz/9lJ49exIVFcX06dOZN28eQ4cOtSVXK1euLLRkID/lWjOQNmogGNgB1CI1GTh0u3UaDAosLdvfb23f2NMcOx8l532hW2UsWQrBS5ev8tflWAIqVsbVvUSW9s5NW3cQHXOV+EQrFStXJ6hxsF1to2JxYvSYV4iOiSXJCk4u7rh5lKSMnz+vj38z++rbPAttR8hhbvdbtXz5ckaPHs2RI0fYv38/tWrVAlLbHSMjIzONw2/ZsiUbN24kJSWF0aNHs2zZMtzc3GjUqBFz587lwoUL+Pr6MmjQIKZOnQrAkCFDmDVrFhaLBU9PT06cOIFHWturiDBnzhyeeeYZOnXqxLx58zh37hwVKlRg8uTJhIWFMXXqVMLDwyldurQtjlatWnH+/Hn279/PN998Q9euXW0zwz3wwANs2LCBlJQU1qxZQ+vWrVm2bBmdO3emXLlyhIeHs2vXLtv4/Q0bNtC+fXvi4uKoXr06Bw4coGTJksTHx/Ppp58yZMiQTJ/XhQsXCAwMJCAggCNHjhAcHMwff/yR49z76TZv3kzTpk1Zvnw5HTt2xGq1Uq5cOdq1a8ecOXNyPC4+Ph4vLy9GjhzJyZMn2bhxI2fOnMnzev8Ee/fu5d5776VJkyZs2bKFtWvX0qqVHfMK3KBFixaxdu1aPvzQvmGKN+Pjjz9m+PDhTJs2jeHDhxfYdfKye/duGjZsyI8//mgberpt2zYaN27MhAkTqFChAgMGDGDv3r0cOXKEkSNHcu7cOTZv3pznhFvXrl3Dw8ODVq1asXbtWpYtW2brc9SvXz9mz56NMYY+ffrwzTff2JozVq9eTfv27enTpw/Lly8nLi6OZ555hmnTpuV4rfr16+Pi4sKWLVt45JFHWLVqFRaLhcjISNv/Antt2rSJlJQUmjfP2jcnJ/lZM4CI5LqQOp9AnvsV5dKwkovIV3VEZtcTmdNI5Nv7Rea3EvnuIZGFj4gs7iyyrLvIit4iq/qJ/DRI5JdnRNaMFFn7gsj6l0U2vCay6U2RLe+KbP+fyM5pIrs/k6RdM6RfIwf5Vz2kd5CrWI8uEzmxWuTUGpn//nBpXBFZMXOC3F0O+WPZFyLRx0RizohcDReJuySSECOSFC9iTZHsNGjQQAD59NNPRUQkJeXv/bZv3y6AfPjhh/L4449LhQoVsj1Hdk6dOiWAjBs3TipVqiSTJ0+WAQMGSOnSpcVqteZ5fGRkpMTGxtp9vVsRHR0tjo6OUqVKlUyfRVhYmBhj5PXXX8+0//DhwwWQvn37iojI9OnTBRA3Nzfp3r27iIg0adJEWrVqJSIiMTExUqJECenfv79cunRJzp07l20cI0eOFCcnJ4mIiJDZs2cLICEhIbJ+/XoBZOnSpbZ9Dx8+LIC888472Z5r8uTJAkjdunVtn7fVapUvvvhCgoKCpHbt2pKcnJzpmO3bt0uFChXkxRdfFBGRpk2bCiC7d+/O9hrvv/++ANKmTRu5fPlyTh9vJlFRUQLIpEmTRERk9+7dAshXX32V57FNmzaV4OBg8fHxkf79+9t1vX+C6OhoIXVElXTu3Lmow7kl0dHR0rt3bzlz5kxRhyLR0dFZ1oWEhEhiYqKcPHlSAGnevLkA0qBBA/njjz/sPnf6/xKLxSJ//fWXJCUliZ+fnwBSunRp6dKli1SsWFFERL766isBJDQ0VEREfv31VwHE3d1dwsLCcr3OW2+9JYCEh4eLn5+f1KlTRwCZO3fuDXwSqe655x5xc3OTnTt32ta9//770rp1a7l06VK2xwDbJZ/KUXuSgTdIfTaBya+L5vfSsGFDez/vG7Z///5Mv5QnT560bRs2bJh4e3tLbGysODk5yejRo2/o3AkJCeLk5CSA9OvXT3bv3i1ubm4yePBgOXnypPTp00fc3d0lOjpaXn31VbFYLJKYmGjXuRcvXiyAbN682ZZgfPLJJwLIsWPHcj3WarVKlSpVCuwf/pEjR+TYsWO2QnLhwoUCyPr166VMmTK263700UcCyL59+zIdv27dOunUqZOtAEwv7AGZM2eOiIgMHjxYvL29xWq1yueffy6AbNy4Mde4Dhw4IIC88cYb0qZNGylTpoykpKRIXFxclp9vv379xMnJSc6fP5/tuUJDQ8XR0VFmz559Q5+N1Wq1/bxefvllKVu2bJakIV1ycrKsXLlSrl27dkPXqFy5si1RSk8oTp8+nedxo0aNshWK33777Q1d805mtVqlRIkS4ubmJidOnCjqcIqNqlWr2hKwhISEGzr2kUceEUAaNWpkW/fCCy8IIAMHDpRp06YJICdOnJBx48aJxWKxXSMlJUVatGghEydOzPM6O3bsEEDeffddAWTKlCni6+srvXr1kqioKElKSrIr3itXrojFYhFAKlasKBEREXLhwgVxd3cXQIKDg+Xq1atZjivsZOAKYAWSgJi01zH5FUB+LAWZDCxYsEAA2y/PypUrbds6dOgg9913n4iING/eXBo3bnxD5w4JCRFAXF1dJTAwUJ599llxdHS0/VIAMmTIEBER+eKLLwSQ48eP23XuV199VRwcHCQuLs62Lr2mYf78+bkee+zYMQGkRIkSmY6/VaGhofLwww/b3luVKlXk2LFjMmTIEPH09JTExETp1KmT1KxZU0REWrVqJXXq1LHr3MOGDRNXV1eJiooSEZGPP/5YADl16pQEBQXJPffcY1eNyAMPPGCLb9q0abb1wcHB0rx5cxER2bhxowDy0ksv5XquyMhIu2LPSXx8vERERNzSObIzZcoUAWT58uVSvnx5sffvJz1pAwokrtvZiy++KDNnzizqMIqVTz/9VIYOHXrDiYDI34lrxgT+0KFD4unpKX/88Yfs2bNHAJk1a5Y88cQTUrly5ZuKMSUlRcqWLWurdVi/fr3079//hmuS1q1bJ4BMmDBBXF1dpVGjRjJs2DAxxsjEiRPFYrHIM888k+W4Qk0G7oSlIJOB9Dvy8+fPZ6peFRGpWbOmrVp63Lhx4uDgkGt1bXR0tPz444+2QunLL78UQAYMGCCAeHt7S/fu3WXHjh0ydepUWbp0qa0mIL3q6vfff7cr7kcffVTuueeeTOsSEhLExcVFRo0aleux6VXkgCxatMiu69mjTZs24uXlJW+99ZZMnz5dXF1dZeDAgVK5cmXbH83bb78tgGzdulWMMTJ+/Hi7zh0XFyeHDx+2vd6wYYPtLj+9qcUeK1asEE9PT1sNQ7pRo0aJi4uLxMXFScOGDaV8+fJy5coVO9/57SU2NlbKli0rTk5OYrFYZNu2bXYdl/430KBBgwKOUKlbM3PmTAFk1apV2W5PSUmRUqVKSffu3aVJkyby4IMP3vS1+vbta/t/GRMTI6GhoTJu3Djp3LmzGGPk1KlTeZ4jvVkxIiJCli1bJg4ODgLIE088ISIiTz75pHh7e0t8fLztmLi4uEKvGTDAk8Craa/vAhrnVwD5sdibDEyZMkW6d+8u//73v7Ntr8pO165dbXeq/v7+0q9fPxFJ/WVydna2ZZ7phfWPP/6Y7XlOnDghtWvXFkB++uknERF59tlnxcPDQ9auXWv7ZcrYLp1RaGioLZPNzt69e2X69Om21/7+/vLUU09l2S84OFjc3d2lbdu2ObZFDx48WLy8vKRMmTLSs2fPbPe5UenVaRmTqWHDhtl+6T/++GMREVmzZo0AUrNmTXFxccmzzS4nMTExtn4EGWsM7JGx30a69Lvip59++h9RTT5p0qQsd072ePTRRzPVmCh1O4qJiZEpU6bkWk2f3mwAyL///e+bvta3334rgNSoUSPT+hMnTogxRt544408z9GjRw9bHwYRkVmzZkmlSpXk0KFDIiKycuXKLOVDjx49Cj0Z+AT4GDiY9toH2JZfAeTHYm8y4OPjI97e3pk6qeWlevXq0q1bNxEReeihh6RevXpitVrl9OnTmc6TW7+B2NhYqVChgnh7e0upUqWkU6dOIpLatHD//fdLXFycODo6SunSpXOsEouPj7fd6V4vMTFR7rnnHgHk8OHDtju4Dz74IMu+mzdvliFDhoivr69Ur149091teo1FnTp1pEOHDjJkyBBxd3fPl46EvXr1Ek9PT/nrr79s644fP25LBtI772RsO/vPf/5zS9dMb3PMLim6UeHh4bZ/HC1btrSryeF2lpCQIN99912mOw2lipOUlBR57rnnBJD33nvvps8TGRkpxhjp1atXlm1t27aVSpUqZXuDkVGVKlXk8ccfz7Qu4/+YxMREKV26tO0aSUlJ4uXlVejJwM60ryEZ1u3OrwDyY7EnGUi/U5w4caJUqVLFViDn5uLFi5l6jE+dOlUAWbhwoe1u/pdffrHtn1O/gfSOcL///ruMGzdOjDG29quhQ4eKiMjAgQPz7LDi7+8vAwYMkOTkZDl8+LDtl+WDDz6wFVTjxo2zdRTctGlTjudat26dGGNkwIABIpJaBezn5yf/+9//BJC33nrLVtuxfPnyPD+r3Bw7dkwcHBzkhRdeyLJt0KBBmXrci4jUq1dPLBZLnh0d89KlSxcBbqgXcm6qVasmFotFdu3alS/nU0oVLavVKj///LPdo3Fy8umnn8r27duzrJ8/f74Asnr16hyPjYyMtJVNuUm/Obt69apthFNhJwNbAIcMSYFvxsTgdljSq/HfeOMN+f7777P9IPfu3SuAzJs3T4YPHy5ubm55do5bsWKFALJ27VoRSc3G6tevL+XLl7cN+8rYHjR+/HixWCyZhoYkJSVJlSpVJDg4WKxWq5w9e1YcHBzE2dlZgBzjzU5wcLC0adNGPvzwQwHk7rvvlscff1w8PDykXbt20q5dO6lYsaLcdddd0rRp0zzvXtM72Zw9e1a+++47W0KR/p5jY2PF0dFRxowZY3eM2enZs6e4u7tnO6QvOTk5S23IggULZMqUKbd0TRGRRYsWSb9+/fLtLn7WrFny0Ucf5cu5lFL/fPHx8eLv7y8tWrTI9v9QeHi4zJgxQwBZs2ZNrudK72T42WefyZgxY8TR0bHQk4E+wDLgLPAWcBj4V34FkB9LmTJlbG3SgAwaNChL9Wd6wb5x40ZZvXp1lpEB2Rk7dqw4ODhkqiZP79hWunTpLMPGoqKixM/PTxo1amQbDpaeGS5cuNC23/PPPy8PPPCArFy58oYKqp49e0q1atXkoYcekoCAAAkODpYaNWpIly5d5MSJEzJ37lzbZ5CxxiInmzZtssU2ZswYcXJykvvuu09cXV1t77lx48bSokULu2MMDQ2VunXryp9//ikiqc0SgLz22mt2n0Mppf4p0muGf/7550zrV65cmV6gi5OTU561E1arVYKDg6V8+fJSq1Ytad26deGPJiB19sFhwHCgdn5dPL8WBwcHGThwoLi4uMjzzz8vgLRt21aOHz8uf/75pyQmJtqGmp07d06uXbsmHh4e2Q7VyKh169bZDrsKCQnJcRKIefPmCSDPPfec/P777+Ll5SV16tTJcaz4jRg9erQ4OTnZ3uf1YmNjxdPTU5o3b25XknHt2jVbP4e2bdtKgwYN5K+//spUDf7f//5XXF1dsyRXZ86ckaNHj2a5/r333iuAvPnmmyKS2mbm5+d3x/a8V0qpWxEfHy8VK1aURo0a2UaHRURESNmyZaVu3bryww8/SEhIiF3n+uOPP2w3fO+9954OLczyJtI+nPRhGF9++WWmsfozZsyQ0aNHi7Ozs60jR9euXaVUqVJy8uRJsVqtcuHChUwfelJSkri7u8uzzz5r1w8pndVqtQ0VBKRq1ap2DS2xR3pCk12WmW7nzp05zrCXnUaNGknLli2lVKlSMmjQoCzbf/jhB1uNSrrly5dLyZIlxcfHxzZZTXJysvTu3VuMMeLq6ipPP/20bbKWG/0MlVLqn2TWrFkCSK1atWT8+PESFBQkLi4usnfv3hs+V+fOnQVSJ2PTZOC6JX0Wv99++832ga1bt04++OADKVWqlAwYMMBWxZ7u4MGD4uXlJXfffbcEBwcLIHXq1LFV5+/cufOWhpD9+eefMnTo0HxLBET+bupwc3O74VnncjJ8+HBbj/5PPvkky/awsLBMvW1///13McZI/fr1pUSJEtKqVSs5ffq09OvXz9YJpnnz5tKyZUs5d+6cANrOrpQq1qxWqyxdulQCAwMFkEqVKsnXX399U+cKCwuTWbNmidVq1WTg+iUgIECaNm2a7fCNhx9+WO69915b57uMfv75Z3FwcBA/Pz955ZVXpGbNmrbhfemd9G6n6UfTO0E+/PDD+XbOb775xlbbsHXr1mz3qVatmnTp0kVERJ566inx8vKS2NhYW7abvkyYMEFERPr37y/ly5e3zRlgT/8FpZT6p0tOTs7XJtP8TAbseYTxba9cuXJs3Lgx221BQUG88847eHl50blz50zb2rZty4EDB/D398fT05NmzZrxyCOPsHTpUj777DPuvvtuKlWqVBhvwS5Vq1bF29ubHj165Ns5mzRpAqQ+QrVu3brZ7tOyZUsWLlxIREQES5YsoVu3bri7u/PUU0/h5eVFZGQkgYGBPPDAAwBUq1aN8+fPExISAkDNmjXzLV6llLpTOTg4UKJEiaIOI1s5JgPGmChgETAPWJOWhdxxgoKCSElJISoqKtuCvUaNGrbv27VrR0BAACNGjCA8PJy5c+feVo9odXd3JywsDBcXl3w7Z/Xq1SlVqhR33XUXrq6u2e4zYsQIvvrqKzp37kxMTIwtGTHG0KVLl2zPCbBq1Src3d0JCAjIt3iVUkrlP0su2yKBXcAE4KwxZqoxJrhwwgJjzEljzF5jzC5jzPabPU9Q0N+Pes7rLt/BwYF+/foRHh5OtWrV8vUOPL+4urrma4JijGH8+PG8+OKLOe5Tv359evbsyZYtW/Dx8eHBBx/M9ZzVqlUDYN26ddSoUQOLJbdfM6WUUkUtt//SsSLykYg0A5oC54Dpxpjjxpi3Cyc8WotIfREJynvX7JUvX55y5coBeScDAAMGDMDV1ZXx48fj6PiPaEXJ07PPPkufPn1y3eeNN97AwcGBrl274uzsnOu+6TUDSUlJ2kSglFJ3gNxKO9vtp4icBiYBk4wxNYFeBR1YfjHGEBQUxIoVK+xKBqpVq0ZUVBRubm6FEPlr1dMAABNpSURBVN2do2bNmvz555+2gj43Pj4++Pj4EB0drcmAUkrdAXKrGfg9u5UiclhE3iigeDJdCvjZGLPDGDP4Vk7UunVrfHx8qFChgl37ayKQvSZNmlC6dGm79k1PGjQZUEqp21+OyYCIPF+YgWSjmYjcB3QAhhljWmbcaIwZbIzZbozZHhkZmeuJRowYQWhoaJ7V2yr/pPcb0GRAKaVufzfVs8sY81p+B3I9ETmf9vUCsBhofN32z0UkSESCfH19cz2Xo6Oj3Xe0Kn/UqlULR0fHTKM1lFJK3Z5utpv3oHyN4jrGGA9jjGf690A7YF9BXlPlr+eee47169fj6elZ1KEopZTKQ27zDMTktAko6EZ1P2Bx2hA6R+D/27v3qLmq8o7j3x8JBCpIooCEQEhwgRTq4vaChIsFigjYkuKlgqhYrEAt3m+46HLFKhWvdKl4CUqVVkAKRbkpgWphcU1iyBWIxARNELmI3CxFMU//2Hvk5O3M5J2XOXNm5vw+a83Kuex3n/1kv8k8s8+esy+KiB+WfE3roq233ppZs2ZV3QwzMxuDdt8meAzYPyIeHH1C0trymgQRsRrYq8xrmJmZWdLuNsGFQKvv4l1UQlvMzMysAi1HBiLiH9uc+0g5zTEzM7Ne62gCoaQ5JbXDzMzMKtLptwmOK6UVZmZmVplOk4H+WcLPzMzMuqLTZGC/UlphZmZmlWmZDEi6tLD9aYCIWJ/355XfNDMzM+uFdiMDuxa2XzXqXPvn/5qZmdnAaJcMxDjPmZmZ2QBp9wTCP5G0Dylh2CJvi948jtjMzMx6pF0y8ADwhbz9q8J2Y9/MzMyGQLsnEB7ey4aYmZlZNca1hLGk0RMKzczMbECNKxkAvtnVVpiZmVllWt4mkHRlq1PAi8tpjpmZmfVauwmEhwJvBp4adVzAAaW1yMzMzHqqXTJwO/A/EXHj6BOSVpbXJDMzM+uldt8mOKbNuVeW0xwzMzPrtXZrE2x0hcKxlDEzM7P+1u7bBD+W9C5J04sHJW0m6QhJ3wZOLrd5ZmZmVrZ2cwaOBk4BLpY0E3gM2ByYAMwDzo2IxeU30czMzMrUbs7A/wJfAb4iaVNgG+DpiHisV40zMzOz8rUbGfijiPg9aa0CMzMzGzLjfQKhmZmZDQknA2ZmZjW30WRA0h5Njh1WSmvMzMys58YyMnCppI8o2ULSl4BPld0wMzMz642xJAOvAHYCbgUWAL8EDi6zUQCSjpa0UtIqSWeWfT0zM7O6Gksy8HvgaWAL0nMG1kTE+jIbJWkCcB5wDLAHcGKz2xVmZmb2/I0lGVhASgb2Bw4hvTFfVmqr0qqIqyJidUT8DrgEmF3yNc3MzGppLM8ZeHtELMzbvwJmS3pLiW0CmAasLeyvI92u+CNJpwKnAkyfvsETk83MzKwDY0kGHhq9PgHw/5Y17rJmCyDFBjsRc4G5ACMjI9GkvJmZmY3BWJKBa0hvxCLNGZgJrAT2LLFd60iTFht2JE1cNDMzsy7baDIQES8v7kvaFzittBYlC4Bd8wJJ9wMnAG8q+ZpmZma1NKa1CYoiYpGk/ctoTOEaz0o6A7iOtEriBRGxosxrmpmZ1dVGkwFJ7y/sbgLsCzxcWouyiLgWuLbs65iZmdXdWEYGtipsP0uaQ3B5Oc0xMzOzXhvLnIGP96IhZmZmVo2WyYCkqxj1db6iiDiulBaZmZlZT7UbGfhcz1phZmZmlWmXDKyJiF/0rCVmZmZWiXZrE3yvsSHJEwbNzMyGVLtkoPhI4F3KboiZmZlVo10yEC22zczMbIi0mzOwl6QnSCMEW+Rt8n5ExAtLb52ZmZmVrmUyEBETetkQMzMzq0a72wRmZmZWA04GzMzMas7JgJmZWc05GTAzM6s5JwNmZmY152TAzMys5pwMmJmZ1ZyTATMzs5pzMmBmZlZzTgbMzMxqzsmAmZlZzTkZMDMzqzknA2ZmZjXnZMDMzKzmnAyYmZnVnJMBMzOzmuu7ZEDSHEn3S1qcX8dW3SYzM7NhNrHqBrRwbkR8rupGmJmZ1UHfjQyYmZlZb/VrMnCGpKWSLpA0pVkBSadKWihp4cMPP9zr9pmZmQ0NRUTvLyrdAGzf5NRZwO3AI0AAnwCmRsQp7eobGRmJhQsXdr2dZmZm/UrSTyJipBt1VTJnICKOHEs5SecDV5fcHDMzs1rru9sEkqYWdo8HllfVFjMzszrox28TfEbS3qTbBPcBp1XbHDMzs+HWd8lARLyl6jaYmZnVSd/dJjAzM7PecjJgZmZWc04GzMzMas7JgJmZWc05GTAzM6s5JwNmZmY152TAzMys5pwMmJmZ1ZyTATMzs5pzMmBmZlZzTgbMzMxqzsmAmZlZzTkZMDMzqzknA2ZmZjXnZMDMzKzmnAyYmZnVnJMBMzOzmnMyYGZmVnNOBszMzGrOyYCZmVnNORkwMzOrOScDZmZmNedkwMzMrOacDJiZmdWckwEzM7OaczJgZmZWc5UkA5LeIGmFpPWSRkad+6ikVZJWSnp1Fe0zMzOrk4kVXXc58Frg68WDkvYATgD2BHYAbpC0W0T8ofdNNDMzq4dKRgYi4u6IWNnk1Gzgkoh4JiLWAKuAA3rbOjMzs3rptzkD04C1hf11+ZiZmZmVpLTbBJJuALZvcuqsiPh+qx9rcixa1H8qcCrA9OnTx9VGMzMzKzEZiIgjx/Fj64CdCvs7Ar9sUf9cYC7AyMhI04TBzMzMNq7fbhNcCZwgaZKkmcCuwPyK22RmZjbUqvpq4fGS1gGzgGskXQcQESuAS4G7gB8C/+BvEpiZmZWrkq8WRsQVwBUtzp0NnN3bFpmZmdVXv90mMDMzsx5zMmBmZlZzihj8ifiSngSaPcRoWGwDPFJ1I0rk+AbXMMcGjm/QDXt8L4uIrbpRUVWPI+62lRExsvFig0nSQsc3uIY5vmGODRzfoKtDfN2qy7cJzMzMas7JgJmZWc0NSzIwt+oGlMzxDbZhjm+YYwPHN+gc3xgNxQRCMzMzG79hGRkwMzOzcXIyYGZmVnN9mwxImizpMkn3SLpb0ixJn5C0VNJiSfMk7ZDLStIXJa3K5/ct1HOypHvz6+TqItpQh/EdJunxfHyxpI8V6jla0soc+5nVRbShZvEVzn1QUkjaJu8PRf8Vzo2Obyj6T9IcSfcX4ji2UP6jOYaVkl5dON538XUSm6QZkp4uHP9aoZ79JC3LsX1RUrMl2Huu1e+mpHflvlgh6TOF8gPTd9BZfMPSf5K+W4jhPkmLC+W7038R0Zcv4NvA3+XtzYDJwAsL598NfC1vHwv8ABBwIHBHPv4iYHX+c0renlJ1bOOI7zDg6iZ1TAB+BuyS61gC7FF1bK3iy9s7AdcBPwe2Gab+axPfUPQfMAf4YJOye+S2TwJm5pgm9Gt8HcY2A1jeop75pMXWlH9/j6k6tjbxHQ7cAEzKx7cbxL4bR3xD0X+jzn8e+Fi3+68vRwYkvRB4JfBNgIj4XUQ8FhFPFIq9AGjMfpwNXBjJ7cBkSVOBVwPXR8SjEfEb4Hrg6J4F0sI44mvlAGBVRKyOiN8Bl5D+LirVKr58+lzgw2wY21D0Xz7dLL5WBrH/mpkNXBIRz0TEGmAVKba+i28csbWqZyopeb8t0v/KFwJ/3dXGjkOb+P4eOCcinsnHH8o/MjB9B+OKr1U9g9Z/jfMC/ga4OB/qWv/1ZTJAymYeBv5V0p2SviHpBQCSzpa0FjgJaAy3TgPWFn5+XT7W6njVOo0PYJakJZJ+IGnPfGyg4pN0HHB/RCwZVX4o+q9NfDAE/ZfPnaF0K+cCSVPysUHqv05jA5iZy94o6dB8bBopnoZ+iA1ax7cbcKikO3Ic++fyg9R30Hl8MBz913Ao8GBE3Jv3u9Z//ZoMTAT2Bb4aEfsAvwXOBIiIsyJiJ+A7wBm5fLN7PdHmeNU6jW8RsHNE7AV8CfhePj5I8c0BzmLDBKdhGPpvDq3jG4b+OxP4KvBSYG/gAdJwJQxW/3Ua2wPA9Fz2/cBF+dNbP8YGreObSLrVdiDwIeDS/ClzkPoOOo9vWPqv4USeGxWALvZfvyYD64B1EXFH3r+M9BdUdBHwukL5nQrndgR+2eZ41TqKLyKeiIin8va1wKZKk9MGLb6ZwBJJ95HaukjS9gxP/zWNb1j6LyIejIg/RMR64HzSUGSj/KD0X0ex5eHXX+ftn5Duw+6W69mxUG8/xAatfzfXAf+Zb8XNB9aTFvEZpL6DDuMbov5D0kTgtcB3R5XvSv/1ZTIQEb8C1kp6WT70F8BdknYtFDsOuCdvXwm8VcmBwOMR8QBpItdRkqbkYb+j8rFKdRqfpO0bM10lHUDqt18DC4BdJc2UtBlwAunvolIt4lsUEdtFxIyImEH6Zd03lx2G/msZ35D03135PmvD8cDyvH0lcIKkSZJmAruSJmf1XXydxiZpW0kT8vYupNhW59/PJyUdmPv2rcD3exVHK63iI41GHQEgaTfSpLJHGKC+g87jG6L+AzgSuCciirc3utd/0QezJ5u9SMN1C4GlpI6eAlxO+ke6FLgKmJbLCjiPlPUtA0YK9ZxCmlSxCvjbquMaZ3xnACtIM0JvBw4q1HMs8NMc+1lVx9UuvlHn7+O52fZD0X9t4huK/gP+LffP0vwfy9RC+bNyDCspzMrux/g6iY00Otfou0XAXxXqGcn/Xn8GfJn8RNeqXy3i2wz499zeRcARg9h3ncY3LP2Xj38LOL1J+a70nx9HbGZmVnN9eZvAzMzMesfJgJmZWc05GTAzM6s5JwNmZmY152TAzMys5pwMmHWBpHMlvbewf52kbxT2Py/p/V2+5lPdrC/Xubc2XI1wjqQPjuHnJOlH+elujWPHK63euHsJ7Zwh6U3drncj13y5pG/18ppmveJkwKw7bgUOApC0CenpbnsWzh8E3FJBuzq1N+n7yZ06FlgSGy62dSJwM+mBJ902A2iaDOQntXVdRCwDdpQ0vYz6zarkZMCsO24hJwOkJGA56QlnUyRNAv4UuFPSlpL+S9IipbXUZwNI+rSkdzYqy5/IP5C3PyRpgdIiOh9vdvFmZfKn57slna+0xvs8SVvkc/vnsrdJ+qyk5flJZf8EvFFp3fQ35ur3kPTfklZLeneL+E+i8AQ3SVsCBwNvp5AMSDos19VYr/07haczHpuP3ay0vvzV+fif67m13O+UtBVwDmlhmsWS3ifpbZL+Q9JVwLw8UtGIa1kjlnz9GyVdKumnks6RdJKk+bncS3O5N+SfXSLppkKcV1FOcmNWraqftuSXX8PyIj11cDpwGnA68AnSJ+aDgZtymYmkpVMhjR6sIj2BcR/gxkJdd+W6jgLm5jKbAFcDr8xlnsp/Ni1D+vT8LLB3Lncp8Oa8vZz8JETSG+vyvP024MuFdswhjXpMyu39NbBpk9h/DmxV2H8z8M28fSvp0cwAhwGPk56VvglwG3AIsDlplbWZudzFwNV5+yrg4Ly9Zf47PKxxvtDudcCL8v7rSEteTwBeAvwCmJp/7rG8PQm4H/h4/pn3AP+St5fx3BNAJxeuczBwVdW/a3751e2XRwbMuqcxOnAQ6U3utsL+rbmMgH+WtBS4gbSs6Esi4k5gO0k7SNoL+E1E/IL0Rn8UcCfpcaq7k54/XtSuzJqIWJy3fwLMkDSZ9MbdaNNFG4nrmkgLvjwCPER6cx3tRRHxZGH/RNIa6uQ/Tyycmx8R6yItCrSYlLTsTnpm/Jpcprgy2y3AF/KoxOSIeLZFO6+PiEfz9iHAxZEWH3oQuBFoLGu7ICIeiIhnSI9qnZePL8ttaVzzW5LeQUooGh4CdmhxfbOBVcq9NbOaaswbeDnpk/da4APAE8AFucxJwLbAfhHxe6UVDjfP5y4DXg9sz3NvpAI+FRFfb3PdpmUkzQCeKRz6A7AFzZc3bWd0Hc3+33hW0iYRsV7Si0mLxvyZpCC9mYakD7epr2WbIuIcSdeQRllul3Rki6K/LWy3i7F4/fWF/fW5LUTE6ZJeAbwGWCxp70ir320OPN2mbrOB5JEBs+65BfhL4NH8ifRRYDIwizRKALA18FBOBA4Hdi78/CWk+9GvJyUGkFZpPCXfg0fSNEnbjbruWMr8UUT8hrxiWz5UvAf+JLBVJ0FnK4Fd8vbrgQsjYudIqzjuBKwhfVpv5R5gl5zAADTmKyDppRGxLCI+TVrAZfcxtPMm0tyHCZK2Jd02mT/WYPI174iIj5FW92ssB7sbz63WaDY0nAyYdc8y0n3120cdezwPsQN8BxiRtJA0StBYhpuIWEF6g7s/0hKrRMQ80jD+bZKWkZKEDd4Ex1KmibcDcyXdRvoU/Xg+/mPShMHiBMKxuIZ0Px7SLYErRp2/nBaz/3MMTwPvBH4o6WbgwUKb3tuYzEf6VP4D0opuz+YJfu9rUuUVucwS4EfAhyMtDztWn80TCpeTEosl+fjhOVazoeJVC81qSNKWEfFU3j6TtGTve55HfVNJowGver5tyt8uOA+4NyLOHW993Za/FXIjcEibeQtmA8kjA2b19Jr86X85cCjwyedTWR7JOF+Fhw6NwzskLSatP7810G6eRBWmA2c6EbBh5JEBMzOzmvPIgJmZWc05GTAzM6s5JwNmZmY152TAzMys5pwMmJmZ1dz/ARY7yVKpMhUVAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.figure(figsize=(8,5))\n", "plt.plot(lam, flux, color='k')\n", @@ -680,29 +485,9 @@ }, { "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: CompoundModel2\n", - "Inputs: ('x',)\n", - "Outputs: ('y',)\n", - "Model set size: 1\n", - "Expression: [0] + [1]\n", - "Components: \n", - " [0]: \n", - "\n", - " [1]: \n", - "Parameters:\n", - " amplitude_0 mean_0 ... c0_1 c1_1 \n", - " ----------------- ------ ... ------------------- ---------------------\n", - " 6.657305067408649 6563.5 ... -12.793362542046482 0.0032399500252079877\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "print(compound_fit_bounded)" ] @@ -760,7 +545,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -776,20 +561,9 @@ }, { "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.errorbar(x1 , y1, yerr=y1_err, fmt='.')\n", "plt.show()" @@ -804,7 +578,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -825,7 +599,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -836,20 +610,9 @@ }, { "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.errorbar(x1 , y1, yerr=y1_err, fmt='.')\n", "plt.plot(x1, exp_fit(x1))\n", @@ -858,24 +621,9 @@ }, { "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: exponential\n", - "Inputs: ('x',)\n", - "Outputs: ('x',)\n", - "Model set size: 1\n", - "Parameters:\n", - " a b c \n", - " ------------------ ----------------- ------------------\n", - " 1.5574802431736667 -2.12276086649367 0.7200291670876124\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "print(exp_fit)" ] @@ -889,7 +637,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -905,20 +653,9 @@ }, { "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.1988798062039328" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "calc_reduced_chi_square(exp_fit(x1), x1, y1, y1_err, len(x1), 3)" ] @@ -956,7 +693,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -972,20 +709,9 @@ }, { "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.errorbar(x2, y2, yerr=y2_err, fmt='.')\n", "plt.show()" @@ -995,15 +721,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For this case we will define a full model to be able to choose the parameters we want to fit. In this type of custom model we can set the **derivative of the function**, which is used by different fitters. \n", - "\n", - "Fitters that use derivative:\n", - "* ..." + "For this case we will define a full model to be able to choose the parameters we want to fit. In this type of custom model we can set the **derivative of the function**, which is used by different [fitters](http://docs.astropy.org/en/stable/modeling/#id21), for example the `LevMarLSQFitter()`." ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1035,7 +758,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1046,20 +769,9 @@ }, { "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.errorbar(x2, y2, yerr=y2_err, fmt='.')\n", "plt.plot(x2,sine_fit(x2))\n", @@ -1068,44 +780,18 @@ }, { "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: sine_new\n", - "Inputs: ('x',)\n", - "Outputs: ('y',)\n", - "Model set size: 1\n", - "Parameters:\n", - " a b c d \n", - " ------------------ ------------------ ------------------ ------------------\n", - " 3.0801859165001506 2.0129142766418027 3.9125034577688784 0.9922039497594952\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "print(sine_fit)" ] }, { "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.2140902225914516" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "calc_reduced_chi_square(sine_fit(x2), x2, y2, y2_err, len(x2), 3)" ] @@ -1138,7 +824,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1150,20 +836,9 @@ }, { "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.errorbar(x3,y3,yerr=y3_err,fmt='.')\n", "plt.show()" From a8d21389d197dfb5927e2850a22d07e9aa0a1ed2 Mon Sep 17 00:00:00 2001 From: Rocio Kiman Date: Tue, 4 Sep 2018 23:12:12 -0400 Subject: [PATCH 37/83] Removed hidden file --- tutorials/notebooks/User-Defined-Model/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tutorials/notebooks/User-Defined-Model/.DS_Store diff --git a/tutorials/notebooks/User-Defined-Model/.DS_Store b/tutorials/notebooks/User-Defined-Model/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Tue, 11 Sep 2018 15:00:24 -0400 Subject: [PATCH 38/83] Responded to review comments --- tutorials/02-conda_envs.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst index 3ed475e2a..38fd8b7e4 100644 --- a/tutorials/02-conda_envs.rst +++ b/tutorials/02-conda_envs.rst @@ -19,18 +19,19 @@ Step 1: Set up a Python 2 environment conda create -n python2 python=2.7 anaconda -**NOTE:** ``anaconda`` at the end is optional... +**NOTE:** By adding ``anaconda`` at the end, the complete Anaconda Python distribution will be installed. Omitting ``anaconda`` or choosing ``miniconda`` will install a much smaller library of Python packages. You can install any additional packages you need for that environment, after activating it. `Some information about the differences between Anaconda and Miniconda can be found in the conda document pages `__ - Activate the Python 2 environment and install any additional packages you need to run your favorite code library. Here, we show you how to - install the base version of Astropy. If you want to download - Astropy and **all** affiliated packages, you can install ``stsci`` + install the base version of Astropy. :: source activate python2 conda install astropy +**NOTE:** If you want to install Astropy and **all** affiliated packages, you can use `` conda install stsci`` + - When you are ready to return to your default environment: :: From c4b0acc8a2e0581a709cf5119861ab51fc69ba7e Mon Sep 17 00:00:00 2001 From: Joseph Schlitz Date: Tue, 18 Sep 2018 12:12:47 -0400 Subject: [PATCH 39/83] Fixed a ### typo The ### section "Introducting frame transformations" to "Introducing frame transformations" --- .../notebooks/Coordinates-Transform/Coordinates-Transform.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb b/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb index 3f622ad7d..126a363de 100644 --- a/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb +++ b/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb @@ -147,7 +147,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Introducting frame transformations" + "### Introducing frame transformations" ] }, { From 31f75d8501f6f32eb4bcd4aeb518ca9b5eb2575c Mon Sep 17 00:00:00 2001 From: Rocio Kiman Date: Wed, 26 Sep 2018 10:50:13 -0400 Subject: [PATCH 40/83] Changed name to class SineNew to follow PEP8 --- .../User-Defined-Model.ipynb | 510 ++++++++++++++---- 1 file changed, 416 insertions(+), 94 deletions(-) diff --git a/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb b/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb index 3775883bf..220045613 100644 --- a/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb +++ b/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb @@ -33,9 +33,18 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rociokiman/anaconda3/lib/python3.6/site-packages/astroquery/sdss/__init__.py:29: UserWarning: Experimental: SDSS has not yet been refactored to have its API match the rest of astroquery (but it's nearly there).\n", + " warnings.warn(\"Experimental: SDSS has not yet been refactored to have its API \"\n" + ] + } + ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", @@ -81,9 +90,18 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/rociokiman/anaconda3/lib/python3.6/site-packages/astroquery/sdss/core.py:856: VisibleDeprecationWarning: Reading unicode strings without specifying the encoding argument is deprecated. Set the encoding, use None for the system default.\n", + " comments='#'))\n" + ] + } + ], "source": [ "spectrum = SDSS.get_spectra(plate=1349, fiberID=216, mjd=52797)[0]" ] @@ -98,11 +116,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "ColDefs(\n", + " name = 'flux'; format = 'E'\n", + " name = 'loglam'; format = 'E'\n", + " name = 'ivar'; format = 'E'\n", + " name = 'and_mask'; format = 'J'\n", + " name = 'or_mask'; format = 'J'\n", + " name = 'wdisp'; format = 'E'\n", + " name = 'sky'; format = 'E'\n", + " name = 'model'; format = 'E'\n", + ")" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "spectrum[1].columns" ] @@ -116,7 +154,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -133,9 +171,17 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1E-17 erg/cm^2/s/Ang\n" + ] + } + ], "source": [ "#Units of the flux\n", "units_flux = spectrum[0].header['bunit']\n", @@ -144,9 +190,17 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "wtype=linear label=Wavelength units=Angstroms\n" + ] + } + ], "source": [ "#Units of the wavelegth\n", "units_wavelength_full = spectrum[0].header['WAT1_001']\n", @@ -162,9 +216,17 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Angstroms\n" + ] + } + ], "source": [ "units_wavelength = units_wavelength_full[36:]\n", "print(units_wavelength)" @@ -179,9 +241,20 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.plot(lam, flux, color='k')\n", "plt.xlim(6300,6700)\n", @@ -212,7 +285,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -230,9 +303,20 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.figure(figsize=(8,5))\n", "plt.plot(lam, flux, color='k')\n", @@ -252,9 +336,24 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: Gaussian1D\n", + "Inputs: ('x',)\n", + "Outputs: ('y',)\n", + "Model set size: 1\n", + "Parameters:\n", + " amplitude mean stddev \n", + " ----------------- ----------------- -----------------\n", + " 16.75070628912542 9456.749530943964 2368.395706441934\n" + ] + } + ], "source": [ "print(gaussian_fit)" ] @@ -292,7 +391,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -308,7 +407,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -318,9 +417,20 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.figure(figsize=(8,5))\n", "plt.plot(lam, flux, color='k')\n", @@ -340,9 +450,29 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: CompoundModel0\n", + "Inputs: ('x',)\n", + "Outputs: ('y',)\n", + "Model set size: 1\n", + "Expression: [0] + [1]\n", + "Components: \n", + " [0]: \n", + "\n", + " [1]: \n", + "Parameters:\n", + " amplitude_0 mean_0 ... c1_1 \n", + " ------------------ ------------------ ... --------------------\n", + " 7.0208917442781855 6564.1363171493185 ... 0.003239952053005842\n" + ] + } + ], "source": [ "print(compound_fit)" ] @@ -356,9 +486,21 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "amplitude_0 7.0208917442781855\n", + "mean_0 6564.1363171493185\n", + "stddev_0 1.9776147551996561\n", + "c0_1 -12.793356185541937\n", + "c1_1 0.003239952053005842\n" + ] + } + ], "source": [ "for x,y in zip(compound_fit.param_names, compound_fit.parameters):\n", " print(x,y)" @@ -373,9 +515,20 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Parameter('amplitude_0', value=7.0208917442781855)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "compound_fit.amplitude_0" ] @@ -397,7 +550,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -414,7 +567,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -424,9 +577,20 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.figure(figsize=(8,5))\n", "plt.plot(lam, flux, color='k')\n", @@ -439,9 +603,29 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: CompoundModel1\n", + "Inputs: ('x',)\n", + "Outputs: ('y',)\n", + "Model set size: 1\n", + "Expression: [0] + [1]\n", + "Components: \n", + " [0]: \n", + "\n", + " [1]: \n", + "Parameters:\n", + " amplitude_0 mean_0 ... c0_1 c1_1 \n", + " ------------------ ------ ... ------------------- ---------------------\n", + " 1.5325747104561047 6563.0 ... -12.791030002605362 0.0032374486280527695\n" + ] + } + ], "source": [ "print(compound_fit_fixed)" ] @@ -455,7 +639,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -470,9 +654,20 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAFACAYAAAAh/38IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xt8znX/wPHX59p5M9swM5PznErIMDlFIUUOuR2SCDd3iO6UJJX8Oki6JaWDFEWonIlOQnJmzqc5n7YZW8Zmx+v9+2Pb1WanCzvQ3s/H4/vYru/xfV07fN7fz+lrRASllFJKFV+Wog5AKaWUUkVLkwGllFKqmNNkQCmllCrmNBlQSimlijlNBpRSSqliTpMBpZRSqpjTZEAppZQq5jQZUEoppYo5TQaUUkqpYs6xqAPID2XKlJHKlSsXdRhKKaVUodmxY8dFEfHNj3P9I5KBypUrs3379qIOQymllCo0xphT+XUubSZQSimlijlNBpRSSqliTpMBpZRSqpjTZEAppZQq5jQZUEoppYo5TQaUUkqpYk6TAaWUUqqY02RAKaWUKuY0GVBKKaWKOU0GlFJKqWJOkwGllFKqmNNkQCmllCrmiiwZMMbcZYz53Rhz0Biz3xgzMm39eGPMOWPMrrTlkaKKUSmllCoOivKphcnAKBHZaYzxBHYYY35J2zZFRCYXYWxKKaVUsVFkyYCIhAFhad9fMcYcBAKKKh6llFKquLot+gwYYyoDDYAtaauGG2P2GGO+NMb45HDMYGPMdmPM9sjIyEKKVCmllPrnKfJkwBhTAlgIPCciMcAnQDWgPqk1B+9nd5yIfC4iQSIS5OvrW2jxKqWUUv80RZoMGGOcSE0E5orIIgARiRCRFBGxAjOAxkUZo1JKKfVPV5SjCQwwEzgoIv/LsN4/w25dgX2FHZtSSilVnBTlaIJmQF9grzFmV9q6sUBvY0x9QICTwJCiCU8ppZQqHopyNMEGwGSz6cfCjkUppZQqzoq8A6FSSimlipYmA0oppVQxp8mAUkopVcxpMqCUUkoVc5oMKKWUUsWcJgNKKaVUMafJgFJKKVXMaTKglFJKFXOaDCillFLFnCYDSimlVDGnyYBSSilVzGkyoJRSShVzmgwopZRSxZwmA0oppVQxp8mAUkopVcxpMqCUUkoVc5oMKKWUUsWcJgNKKaVUMafJgFJKKVXMaTKglFJKFXOaDCillFLFnCYDSimlVDGnyYBSSilVzGkyoJRSShVzmgwopZRSxZwmA0oppVQxV2TJgDHmLmPM78aYg8aY/caYkWnrSxljfjHGhKZ99SmqGJVSSqnioChrBpKBUSJSGwgGhhlj6gBjgN9EJBD4Le21UkoppQpIkSUDIhImIjvTvr8CHAQCgM7A7LTdZgNdiiZCpZRSqni4LfoMGGMqAw2ALYCfiIRBasIAlC26yJRSSql/viJPBowxJYCFwHMiEnMDxw02xmw3xmyPjIwsuACVUkqpf7giTQaMMU6kJgJzRWRR2uoIY4x/2nZ/4EJ2x4rI5yISJCJBvr6+hROwUkop9Q9UlKMJDDATOCgi/8uwaRnQL+37fsDSwo5NKaWUKk4ci/DazYC+wF5jzK60dWOBicB3xpiBwGngX0UUn1JKKVUsFFkyICIbAJPD5gcLMxallFKqOCvyDoRKKaWUKlqaDCillFLFnCYDSimlVDGnyYBSSilVzGkyoJRSShVzmgwopZRSxZwmA0oppVQxl+c8A8aYIKAFUB64BuwDfhWRqAKOTSmllFKFIMeaAWNMf2PMTuBlwA04TOpzApoDvxhjZhtjKhZOmEoppZQqKLnVDHgAzUTkWnYbjTH1gUBSpwxWSiml1B0qx2RARD7O7UAR2ZXbdqWUUkrdGezpMzANkOtWXwa2i4g+UVAppZS6w9kzmsAFqA+Epi33AqWAgcaYDwowNqWUUkoVAnueWlgdaCMiyQDGmE+An4G2wN4CjE0ppZRShcCemoEAUjsTpvMAyotICpBQIFEppZRSqtDYUzMwCdhljFkLGKAl8LYxxgP4tQBjU0oppVQhyDMZEJGZxpgfgcakJgNjReR82uYXCzI4pZRSShU8e6cjtgCRQBRQ3RjTsuBCUkoppVRhsmdo4btAT2A/YE1bLcD6AoxLKaWUUoXEnj4DXYCaIqKdBZVSSql/IHuaCY4DTgUdiFJKKaWKhj01A3Gkjib4jQxDCUVkRIFFpZRSSqlCY08ysCxtyej66YmVUkopdYeyZ2jh7IyvjTF3Ab0KLCKllFJKFSq7hhYaY8oYY54xxqwH1gJ+BRqVUkoppQpNjjUDxhhPoCvwBFADWAxUFZEKhRSbUkoppQpBbs0EF4CtwDhgg4iIMaZr4YSllFJKqcKSWzPBWMAV+AR42RhTLb8vboz50hhzwRizL8O68caYc8aYXWnLI/l9XaWUKmgxMTEsW3Z932ulbk85JgMiMkVEmgCPkfpMgiVAeWPMS8aYGvl0/VnAw9msnyIi9dOWH/PpWkopVWiGDh1K586dOXPmTFGHolSe8uxAKCLHReQtEakLNAK8gFX5cXERWU/q8w6UUuofY8Ovy5k7dy4AZ8+eLeJolMpbjsmAMeYnY8x/jTG10teJyF4RGSsi+d5kcJ3hxpg9ac0IPjnEN9gYs90Ysz0yMrKAw1FKKftYr0XTcEdnxrR1BuD8+fN5HKFU0cutZqAfEA2MN8bsNMZ8YozpbIwpUcAxfQJUA+oDYcD72e0kIp+LSJCIBPn6+hZwSEopZZ/Io9twcxRebeuAp4smA+rOkFufgXARmSUivYAg4GugIfCTMeZXY8zogghIRCJEJEVErMAMoHFBXEcppQpC/KXjALhbrjHqAYsmA+qOYNekQyJiFZFNIvKaiDQjdQbCcwURkDHGP8PLrsC+nPZVSqnbTfJfpwG47BrIf1sKF8NOF3FESuUtz2TAGDPJGFPSGONkjPnNGHMReFhE5t7qxY0x84BNQE1jzFljzEBgkjFmrzFmD9Aa+O+tXkcppQqLNSZ19EBkhZ6UdBGsfx0v4oiUyps9DypqJyKj0yYcOgv8C/gdmHOrFxeR3tmsnnmr51VKqaJiiQsn8io4+lQBwHolrIgjUipv9jQTOKV9fQSYJyI6FFAppXLgmHCBc5fBtVRFAEy8jnZStz97koHlxphDpHYi/M0Y4wvEF2xYSil1Z3JJiuJ8DHj4VgWghCWOuLi4Io5KqdzlNs+AP4CIjAGaAkEikgTEAZ0LJzyllLqzeMhfhMWAR5mKWLHgVwLCwrSpQN3ecqsZ+NIYs9kYMxGoR+qUxIhIrIiEF0p0Sil1J7Em42GuEhnvjMXBkSRHb/w8da4BdfvLbZ6BDsADwFpSh/htNsYsSpv5r2LhhKeUUneQ2AgsBi4newBgdfOlbAlNBtTtL9fRBCISD6xOWzDGVAE6AB8ZY8qJiE4IpJRS6a6mTr8SI54AOJYsj5/nYTZqMqBuc/YMLbQRkRPAdGC6Mca5YEJSSqk71NXUQj/O4g2AY8kAymkzgboD5NaB8C5jzHxjzB/GmLHGGKcM25aISGLhhKiUUneI2NRCP9GpDADG3Q8/T8P58wUyYatS+SbXDoSk9hd4FvAH1hljSqdtq1TAcSml1J3n6nmSrWB1TftX6eGHq6MQHaFTEqvbW27NBL4i8mna988aY54E1htjHgOk4ENTSqk7zNVzXIi1UNIr7cnr7n4AJMdoM4G6veWWDDgZY1zTOhEiInOMMeHAT4BHoUSnlFJ3kqvnOfeXULJkydTXHqnJgIm7UIRBKZW33JoJvgCaZFwhIr+S+mwCfZKgUkpdR66e5/xlwcvLK3WFW1kAPEws8fE6cau6feU2z8AUEVmXzfoQEWlbsGEppdSdR2LDCbtClpoBP0+IiIgowsiUyp09jzAOKIxAlFLqjpaShIm/RPgVMtQM+AKpyUB4uE7cqm5fuSYDxpi6wA+FFItSSt25rkViEMIz1gw4OJHs6EXZElozoG5vuc0z0BqYD/QtvHCUUuoOFZta2IfHZKgZAMTdD78SWjOgbm+51QwsA/4lIkcLKxillLpjxaUW9hFXMycDDiXLazOBuu3llgx8C7xmjMmzX4FSShV7samFfaZmAsDiGUAFb4s2E6jbWm6jCYaQOoRwTuGFo5RSd6i0ZCDiSuaaAUoEUL6kEB4eVkSBKZW3XO/6ReRN0p5YqJRSKhex4cSLC9eSMtcMUKICzg5CfNTZootNqTzk2QQgIl8XRiBKKWWPRYsWUbNmTa5du1bUoWQWG86VFA+cnZ1xdXX9e71nBQAscTolsbp92fUIY2PMvUDljPuLyKICikkppXL0/fffc+TIEUJCQrj//vuLOpy/xYXzV5ILJUted49VInWqFteki0UQlFL2yTMZMMZ8CdwL7AesaasF0GRAKVWoRIQ//vgDgG3btt1eyUBsOJfinfDycs+8Pq1moIxrAlevXqVEiRJFEJxSubNnpECwiASJSD8ReTptGVDgkSmlirWdO3ditVozrTt16hTnzp0DYOvWrTd97sTERJYtW8bgwYNtycUtiw0nMtaSub8AgLsfViwEeN348MLw8HBWr86+29a8efP4/vvvbzZapTKxJxnYZIypU+CRKKVUmqNHj9KwYUO+/fZbAGbNmsWCBQvYsGEDANWrV7c7GdiyZQsbN27MtG7EiBF07tyZGTNmMGDAABITE28t4KRrkBhDWIxkHkkAYHEgwak0FbxufBbCSZMm0bFjRxISEjKtv3DhAoMGDeLdd9+9tbiVSmNPMjCb1ITgsDFmjzFmrzFmT0EHppT659u1axenTp3Ksv7IkSMArF+/HqvVygsvvMDTTz/N3LlzKVmyJP379+fo0aNERUXlev4FCxbQvHlzunfvjogAkJKSwvfff0/37t1ZunQpR48e5ZNPPrm1NxKXWsjvOXqBmjVrZtlsdfenwk3UDOzevZuUlJQsScT7779PXFyczl2g8o09ycCXpE5J/DDQCeiY9vWWGWO+NMZcMMbsy7CulDHmF2NMaNpXn/y4llLq9iIidOjQgSFDhmTZdvLkSQA2b97MoUOHuHTpEteuXWP16tU0a9aM4OBgALZv357j+efMmUPv3r3x9vYmLCyMffv22Y6Jiori8ccfp1OnTrRt25YJEyZw+fLlm38zaXMMHL9wjaZNm2bZ7OBV8YabCUSEPXtS77vOn/97JEJkZCQfffQRFkvqREbpSY5St8KeZOC0iCwTkRMicip9yafrzyI1ychoDPCbiAQCv6W9Vkr9wxw6dIjw8HDWrl1LXFxcpm3pycC+fftYuXIlAIMHDwagefPmBAUFAamdCLOzZMkS+vfvT+vWrW1NBD///DMAq1atwmKx0LZtW4wxjBo1iqioKHbs2HHzbybD7IPZJQPOpatylzecPHnC7lNGRERw8WLqCISwsL8nLJo3bx5xcXEMHDiQpKQkoqOjbz5updLYkwwcMsZ8a4zpbYzplr7kx8VFZD1wfT1fZ1KbJkj72iU/rqWUur2sXbsWgISEBH7//fdM29KTARHhww8/xN/fn2nTpvH2228zYMAAvLy8qFmzZrb9Bnbs2EGvXr0ICgpi6dKlBAYGUqdOHX766ScAVq9eTePGjSldujQAVatWBbB1TLwpac8lSHT0ITAwMMtmi+ddlHCBYwdD7D5leq0AZE4GDh06hI+PD61btwb0aYgqf9iTDLgBCUA7UpsH0psKCoqfiIQBpH0tm91OxpjBxpjtxpjtkZGRBRiOUsXLsWPH+OWXXwr8OuvWraNcuXK4u7tn6TF/8uRJGjVqBMDZs2dp2bIlzs7OvPzyy5QrVw6Axo0bs3Xr1kzV5NHR0XTv3p2yZcuyYsUK2zC+9u3bs379es6cOcPWrVt5+OG/KyQDAlLnAbilZCD6CPHJhqp1gzHGZN2eNrww+vReu0+5d2/qvsaYTMlAaGgo1atXx8/PD9BkQOUPe2YgfDqbpciHForI52lDHoN8fX2LOhylblunT58mKCjIdredl/Hjx9OlSxdSUlLyLYZDhw5Rt25dXn/9dSD1jn/dunW0adOG1q1bs2rVqkz7nzp1igYNGlC7dm0AWrZsmeWcjRo1Ijw8PFMh/swzz3Du3Dm+++47ypQpY1vfvn17EhISCA4ORkR49NFHbdvc3d3x9vbm7Nmbny446dxWdp0TmgQ3y36HEqnJgFNCZJ6dHtPt2bMHf39/ypUrl6nPwNGjRwkMDLQlA/o0RJUf8kwGjDGzjTHeGV77pE1EVFAijDH+adfyBy4U4LWUuiOICGvXrr2pzmLr169nx44dLFiwwK799+3bR1xcHMePH7/ha2Vn27ZtNG3alH379jF79mxEhNDQUMLDw2nVqhUPP/wwx44dIzQ0FIC4uDguXLhApUqVbB0FW7RokeW8jRs3Bv6eb2Dz5s0sWLCAsWPH2o5L17JlS/z8/PD19WX+/Pm2PgfpKlSocPM1A2KFCyHsPJd9fwHAVjNQwevvO35I7b9w5syZbA/Zs2cP9957L/7+/raagYSEBE6fPk316tVtNSRaM6Dygz3NBPeKyF/pL0QkGmhQcCGxDOiX9n0/YGkBXkupO8LatWtp3bo1CxcuvOFj04fp5TR5TUYpKSkcOnQIyFxo3Yr33nsPJycnXn75ZU6dOsXhw4dt/QVatWplu0tPf2/pQw0rV67MwIEDGTBgAHfffXeW89arVw8nJydbU8GYMWMoW7YsL7zwQpZ93dzcOHfuHCEhIfTs2TPL9oCAgGyTgUOHDtk6MObor+M4WePYHWaxNW1kUaI8YhypVfbvz3Xt2rU88sgjjB07NsvuycnJHDhwIEsycOLECaxWK4GBgfj4+ODo6HhLyUBcXFyWOQwgNfl8++23WbduXY7Hzp8/n4cffjjLxFDqzmRPMmDJOLzPGFMKO59pkBdjzDxgE1DTGHPWGDMQmAi0NcaEAm3TXitVrKVPtrN8+fIbPjb9jnvDhg3ExMTkuu+JEyeIj48H8icZsFqtrFmzhg4dOthGA6xatYqZM2dSrVo1atSoQZUqVWjWrBlff/01ImJrzqhcuTLNmjVj5syZWCxZ/1W5urpy7733sm3bNlatWsW6det49dVXc5zu18HBIfv2fFJrBtKbCebPn8+sWbNYvHgxjRs35l//+leuNTISkToKwSmgCZ6entnv5OAM5e/n4doO7N27l9jYWAYOHAjAypUrSU5OzrT7ypUrSUxMpG7dupmSgfSfZfXq1bFYLJQtW/amkwGr1Urz5s15+umns2w7ffo0r7zyCu3bt2fFihXZHvvaa6/x008/3dooDHXbsCcZeB/YaIz5P2PMBGAjMCk/Li4ivUXEX0ScRKSCiMwUkUsi8qCIBKZ9ta+BTak70F9//cXTTz+dqU04O5s2bQJSC9IbvRM7cuQIPj4+JCcn89tvv+W67/79+wGwWCz5kgzs2bOHS5cu8eCDD1K5cmVq1arF5MmT2bp1Ky+88IKtcO7bty8HDx5k586dmZKBvDRu3Jht27bx3HPPERgYaEs4blRAQADh4eHExsby1FNP8fTTT9OtWzcSEhK4du2abYhfdiL3/0RiMjRo+2Su1zBV2nNvuRTOHtnBqFGjOH78OCNGjCA6OtqW7EFqwtejRw/q1atH586dKV++PBcuXCA5OZmjR48C2EYs+Pn5ER4eTmhoKL169SI2Ntbu97xs2TJCQkJstTQZpTe9lCtXjq5du2aZGGrNmjW2xCS7ZEHdeex9hPHjQAQQCXQTkW8KOjClioMZM2Ywa9asXO/4RYTNmzfj6+tLZGRkrhPtZHdsaGgoPXv2xNPTM8+mggMHDgDQpk2bfEkG0pOPBx98EEjtyHf+/Hn8/Pzo37+/bb8ePXrg7OzM119/zalTp3B2dra1ieemcePGXLlyhdDQUKZNm4azs/NNxRkQEICI8Msvv5CUlMQbb7zBZ599xueffw6QY7s+QMzRdeyLgE5duud+kcrtASh9ZQefffYZL774Im+99RYuLi4sW7YMSP15DR48mDp16vD7779TsmRJ/P39EREiIiIIDQ3F29ubUqVKAamFdUREBPPmzWPBggX89ttviAh9+vRh8eLFOYaS3gwAqcMWr09Gt27diouLC9999x3Jycls3rwZSJ3rYeTIkbz//vuUKVOGRo0aZfu7e+nSJS5c0O5ed5Icq/uNMduBP4FVwFoROVBoUSlVDKSkpDB9+nTg7zvy7Bw5coTo6GgmTZrEmDFjWLlypa3zXF4uXLjAlStXqFOnDg899JBt4p2c7N+/n7vuuov777+fNWvWcO3aNdzc3Ox+T9HR0Vy9epW77roLSE0GatasaRu+16FDB6ZOncp///tfXF1dbcf5+Pjw2GOP8fXXX1OlShUqVqyYbdPA9dI/hy5dutC+fXu747xehQqpHfzSC+Unn3ySqlWr2hKvM2fOcN9992U65uWXXyY8PIz3q53kUHI57iub7Sjov5VtwDXjSbsaV4it1I2JEydisVh48MEHWbp0Ke+//z4RERGEh4czZswYfHxSW2f9/f2B1EI7fSRBeo2Kn58fe/futRXWa9asoXLlynz77bfs2LGDzp07Z/s5/vbbb2zbto2nnnqKr7/+mh07dlC+fHnb9q1bt9KgQQPq1auHg0Nq00b79u2ZMWOGbZ8xY8bg7e3NmDFjOHfunO1nvGLFCvr27UuNGjXYsmWLfT+A25UIWJPBmpS6pCRm+D4JrIlpX29hu+3767ZnfG07x3Xny0e5tf0HA81JnSHwDWPMJeAnYJWIHMnXKJSyw/Hjx3nnnXd46aWXqF69elGHc8tWrVrFyZMncXZ2zjUZSP9H/+ijj7JkyRJWrlzJG2+8Ydc10jsPBgYGcvXqVRYvXsyVK1dybNs+cOAAderUoW7dulitVvbt24ezszP16tXL9TqXL19m6NChLFy4EAcHB7Zv3061atVYv349/fr1s+3Xrl07Fi5cSMeOWacqmTBhArt37yYkJISHHnrIrvdXu3ZtZs6cme35bkR6QbZy5Uq8vLyoUqUKgC2pub5mYP369UycOJGW1RwodY+VEtVa5X0RY8FSpT1dravo9sxsWyH92GOP8eOPP3Lw4EFbJ8a6devaDsuYDISGhmYaseDn50dERIRtBsc1a9aQPtT68OHD/Prrr7Rr1y5LKEuWLKFEiRJMmTKFOXPmsGPHDjp1Sp1lPjk5me3btzNo0CBcXFyoWbMme/fuZefOnQBMnDiREydO8Nxzz3Hp0iXGjBljm/HxlVdeYerUqbi5ubFt21aiLl6glJdn/hWGN1pY3kjhnO358rfAzZ4BByewOKd9TVscnP/+PuNrBydwdE39Ph/lmAyISDKwNm1JH+bXAXjTGBMIbBKRofkajVI5WL58OX369OHKlSsEBAQwfvz4og7plk2fPp3y5cvTpk2bLJP8nDx50tZmvmnTJry8vKhVqxaPPvoor7zyCuHh4XZVo6e369aoUYNr164BqQlCw4YNs+ybkpLCwYMHad26ta0w6tq1K+fOnWPJkiV07tw5x+uMGzeO+fPnM3ToUBYsWECPHj2oX78+sbGxmQojYwzdumU/gWnt2rXZtWsXkydPzjL0LyfGGAYMuPVpT9KTgQsXLtC6dWvbnbevry8uLi6cPn3atq/VamXUqFHcU92fNaMsXEtKoVn/D+26jkvtx3E5/gOs+w889Ck4l6Bt27ZA6iRM6T+juvfck3pHmpJE+TIlKO0OF07sRmJO0bhGR7h0CKxJ1PVLooF/Ek6WKKrcU54L4Xs5sy6K/3aqTOzlaPYsGE278ueyFIZ145YztZcPpfZPZkZfH0pf/hp+jQRrIlcuXeDzLnE0r7EZlnThm27RxMb8TKWd+9gwDJqUW4Cjv8CqBymbksiZ150gfDhXJw/n9dLw7iRHnBySIQUss/1u+WeTpwyFZQoOxMUn4ebhiaOLe/aFqZNHlsL3SlwCO3ftpWnzDji7eGQtfPMqnHPbbtsnp8Le4RbefPYdYm/qTDczbtkYYwGaisif+RbJLQgKCpIbaUdVdxYRoUqVKnh6enL58mUaNmyYa3vonSAhIQEvLy+GDh1K+fLlefHFF7l48SKlS5dm+/btNGrUiF9++YWHHnqI+vXr4+fnx08//cSuXbto0KABX375Zba9wK83ZswY/ve//xEXF0doaCh16tRhzpw59OnTJ8u+6VXQM2fOpF+/fpQsWZLk5GTc3Nxo0aJFjv0adu3aRcOGDRk6dCjTpk1j9erVdOjQAYvFwquvvsprr71mV5V/vhGrnXeSf98lSkoi3bp0BGsy3Tp3pG+fXrZ9x7/6ClWr3MVTT/QCaxL79oSw/qeFPNnCj5JEQ68/oZx9yQtihc1vwabxYBzAtRRiHIiKDMfV2QFHi2AkGedbKR9uhMWRhGQhIclKSe/SYHHialwC4ZFR3FW5Gi5uHoRFXOTk6fOU8PLh8tVrNG/xQKbCLDY+kROnz3EpOoZqNWpT4a7KJIuFSe9Pof59jXnk0cdsheGVuHjeePMdghoH0+uJpxDjiNU44uDkkvudcXphmqHw/WPTFv7VoxcffjiNHj168M477zB+/HgSExN56aWXmDjR/oFoH374oa0vxPPPP19wn3c+M8bsEBE7f/lyl+cQQWPMcuD6jOEysD0tkPj8COROdfbsWYwxtjsLlf/27t3LqVOnmDFjBj///HOhDmWKiIjA19fXrsIsKSmJgwcPUrNmTVxcXHLdNyQkhISEBJo3b25rkz9w4AAtWrSw1RKsW7eOJk2asHfvXttdeb169QgICGDlypVZkoEvvviCe+65h+DgYH755Rd+++03QkJCqFq1Ko6OjlSrVg0HBwcOHjyYJZ7o6Gj69u2LxWJo2iQIB2sCKxd/i28pb5Yt/oHPP/2YiMN/4lfGJ1MValJCLDNfe5Z/NSrBO4OawpEfeLhSEtu/HoG3pwfVKvvBro+yqbK1s/r3ZvaVGx/3boDFT6W/WgE//t1DfnxLgIvwR+pzBe4BKjU0lPCvDfeNtD8RADAWaPoqVHwQji2D+CgMwvbjv3M+7AJOru44OLvR+4m+mQrCl8eNJzrmKvUaBPGfocMxaQXnnn1BL4VWAAAgAElEQVQHGfPKazg6u/LDoqU80qkrl6/G8c2ceQRUrMKUqR9x4HAof27aik8ZP774cjbepXy5p959fPb5TJ4eMIBPp07ludHPce7cbkqVKkWfnj1Zv349UVGhYAzbli2j8+jOWCyX6datG80f/z7TW/JI+0wycgR+e3Mn3y+P4pEJqc+aExF6d+rEyp+iqXhwPz3f6MlHH33E+PHjmTNnDh06pHYyTUlJ4ciRI7bZJzNauHAhs2fPplOnTrz00ktER0czZMgQIiIiGDt2LN26dSMkJCTb3/HcpE+w9cEHH/Dss8/i5JR7FXx0dDRLliyhX79+hZvoFiB75gs4DvgC89Je9yR1ZEENYAapjzf+R7NaraxYsYJOnTplGafct29f4uLi7vyOMrexpUuXYoyhU6dOhIeH8/333xMTE0PJkiVv6nzJycm0bduWihUrMnnyZHKazjo6OpqqVasybtw4Xn755TzP++qrrzJp0rt4uDrx5oTXGDlsKFiTiI+L4ZWXR3N37RoM6NcXUhI5/uc8mlWGVlWtpCRe5NHaELt7Lviex+HIfPo3gjLnFxH242VGNLPyROBZ2PwmJiWJz5/yJfTwMlJ+HY4DVrAmceVyFO5rF3FxmxtxJ1pg/ljLgymJPFwN/Jr4wJxGOFuTOPiSAx6uU2HGnEx3yK6xV1jXxYpzd2B1PVgND6S9r7tLwctjgRXNs7xnJ2BaenP5r3/XNjSE1LlDj2X3SdnRRnr9XaGju/373sh5M+w7ZOhwtmzfxeKly6lStYZt32Ejn2P9hs3s3X+Iy1fiKOtfnhEjnuO9nu/l+TuRo4D7U5c0hw5O5bn3nsPR8RrDhw+nd7MJmXbfELuEuIQ43p+0FuPhYVvvkLSfVYdeo3XrpjhXa4dnzXYcDQmhZoueGGN4bUoTIPWxzV27duX5lycwfPhwklKgQVqHyPQmo+7du3P27FnOnDnD888/b/tfl95kZLVas21eyskDDzzA66+/TlRUFJcvX+add95h5cqVNGvWjD///JN9+/bx0UcfERUVRceOHZkxYwYDBgzggw8+YPTo0YSGhtoeIgWpycS4ceM4dOgQy5cvt9WWdenShREjRtC4cWO+/fZbnnzySXbv3n0jPw2OHTuGs7MzZ86c4fvvv+eJJ57Isk9ycjIODqlVNoMGDWLRokWUL1/+ljqu3k7ybCYwxqwXkZbZrTPG7BeRrFODFbKCbiZYuXIlHTt25Oeff7a176Xz8/PjwoULnD9/3tbR53a0detWnn/+eVasWIG3t3feBxSFjD13M9ztdXykPe6ujnw3by7rfv+VF54fyZczPqVunVpZ9j2wbw+kJFC7ZnWMNTnbDkOHDuzlxxXLcHYATw8XHmrzAAHlfLPccUaGn+PQgX14uDvT4N57MBnPlbZvQnwsFknB0VixJifgUAg3CVYciE9MwcnNAydnN7A4ER1zlYvRV0hKATGOXEtMpkLFqpwNi6CcfwUqVKoKFic2bt7GX1dieaRjF1uBGHP1Gp/PnE3zVq0Jbto827bPdyZN5q8rcbw76X1wcCbJCnPnfcfXcxfQs1cfhjwzPNuq3OwL4sKqA78xffr0YdmyZVy+fDnT3d4rr7zCu+++S0JCAgsWLKBPnz5s3Lgx56mHb8KOHTts/SRmzpyZpR/E1atXcXR0zDQCAyAqKorSpUvz8ssv8/bbb3Px4kViY2OpVKlSlmu88847jB07lh49erB48WKuXr2Ks7Mz8fHxPP7440RERFCqVCleeukl21BQSE0CvLy8uHr1qq3pyh5//PEHLVu2pE6dOhw8eBCLxcKQIUMYO3YsFSpUoFu3bixatIgPPviAJUuWEBISwvHjx2nYsCEnT57ks88+yzRvxMaNG2nWrBmfffYZAQEBBAYGUqNGDb766ivee+89Vq1aRaVKlXjttdd46623iI2NZdOmTfz444/07t3bNhpk165dLFy4kAkTJtgSnrvvvpvAwEAOHz6Mh4eHbRSJiLBlyxa++uor5s+fT7ly5ejRowdvvvkmAD179mT+/PkAxMTEMGLECN55551CKwvys5nAnmTgINBeRE6nva4IrBaROsaYEBEpyKmJ7VLQycDbb7/NK6+8wuTJkxk1apRt/dWrV229sr/44gvbjGL5SUQ4deqUXROwYE3J1HP2159/ZM+uHfx3xHAGPt2XbVs28fG0KbRs1jT3XrY30qM3P/cthJ67giExBZJSwNXdk7+uxHEtIRlP71J4+fhiMtxRHj1xhtPnwlLvoho2pmy5gEx3lEli+GrWN8TGJ+FdypewiIsMGfos58Ii+HruAoY9O5J9B4+wdPkqHmzbnuU//kTP3k/yWJfHebLfAOrWa8CYsa+CxZmnBw3G0cWN554fTZfHe9CoSVPW/bGJKtVrkJBkZduOXba4rsbGUrp0aQYOHMj06dO5du0aFSpUoHXr1vj6+vLpp58ybNgwPvrooyzv/6WXXuKDDz4gNjYWR8fUisGZM2cyaNAg9u/fT506dbL93CZPnsyLL75IeHg4zs7OtG7dmt27d9O/f3+++OIL2x3TnWz//v2cOHEiy8iEzz77jP/85z+cPXuWkSNHsnHjRs6ePZuv1cPJycl4e3sTGxvL1q1bc57WOBsLFiygTZs2OdZwpTtx4oTtTrtBgwa20QH2uP/++9m0aRNRUVG2IY95SUhIoHr16nh4eNCrVy8GDRpkG8J53333ERISgouLC+Hh4Zw4cYL77ruPVq1asW7dOowx9OjRw1bQQurd+Pz58wkLC8t5pkdg3rx5PPHEE+zZs4eRI0faHo/9f//3f4wbN44ePXrw/fffc+TIEQIDA7FarXh4eDBs2DCqVKnC8OHD2blzJ35+fnTo0IE9e/bg5uZGt27d2LBhA6dOnaJJkyY0bNiQmTNnEhYWho+PDwsXLqR79+5MnDiRl156ye7P9lYUap8BYBSwwRhzjNSmtSrAUGOMBzA7P4K4LdjuSrMWihdDN1HbD2KOrYfwlrbtkccO06EWODlA1KbP4H43+4bMZPj+3JlThB7aR8vm92ORrHfFlyLOE3XyOM5+pfEvWybz3en1d73XtZU+BDxUAvjyA75sAbQATv0XTmXz/u2VqYo1rx60zhl67ua9r9U4cCU2Hi+fMrZta9f/yddz5/N/b08koEJlxOJIrz5P0bRZS8IiLrJxy3YSU+CVca9TytePQYOH0qlzN+Z/v4hJk/9H7z79wMGJA4dC6dSlGw3uC2LhwoVMnz6dZ555BpcrV/j3U0+xZMkSmjatyfz586lYsSIAHWvVokKFOuzevZuWlypkeS7A/G++Ych3XxIUFMT2ZdsZMGAApTtOxRIdzQfP/ID1Pgtff72VFi260PvNxczY2IZnp63j7q6v8+2maKb37Q53PZD6sZZvwsLFiylVcztHL8LUoeOYt/JRzu88kjo5j9PfVcMlSpSgX79+zJgxg5EjR7JmzRqioqIYNmwYDRs2JDAwkEGDBmX746tduzaJiYmcPHnSNjzz119/xd/fP9s22nT3359apb1p0yYiIyPZvXs38+bNo1evXjf7m3Tbufvuu7N9BkL68MIjR46watWqAmkndnR0JDg4mDVr1mQbQ26ye9ZCdqpUqcL999/Pxo0badDgxu7h0mtE7U0EgEyjMK5vXu3YsSMhISE89thjeHt706BBAzp16sTy5cspX748LVq0YM2aNYgIxhguX77MggULbJNn5Sb99zgkJISNGzcycOBAzpw5w4cffsizzz5re9bEunXrCAwMJCwsjPj4eKpWrUrv3r0ZNWoUM2fOtPUB+vzzz+nZsyclS5YkJiaGTz/9lJ49exIVFcX06dOZN28eQ4cOtSVXK1euLLRkID/lWjOQNmogGNgB1CI1GTh0u3UaDAosLdvfb23f2NMcOx8l532hW2UsWQrBS5ev8tflWAIqVsbVvUSW9s5NW3cQHXOV+EQrFStXJ6hxsF1to2JxYvSYV4iOiSXJCk4u7rh5lKSMnz+vj38z++rbPAttR8hhbvdbtXz5ckaPHs2RI0fYv38/tWrVAlLbHSMjIzONw2/ZsiUbN24kJSWF0aNHs2zZMtzc3GjUqBFz587lwoUL+Pr6MmjQIKZOnQrAkCFDmDVrFhaLBU9PT06cOIFHWturiDBnzhyeeeYZOnXqxLx58zh37hwVKlRg8uTJhIWFMXXqVMLDwyldurQtjlatWnH+/Hn279/PN998Q9euXW0zwz3wwANs2LCBlJQU1qxZQ+vWrVm2bBmdO3emXLlyhIeHs2vXLtv4/Q0bNtC+fXvi4uKoXr06Bw4coGTJksTHx/Ppp58yZMiQTJ/XhQsXCAwMJCAggCNHjhAcHMwff/yR49z76TZv3kzTpk1Zvnw5HTt2xGq1Uq5cOdq1a8ecOXNyPC4+Ph4vLy9GjhzJyZMn2bhxI2fOnMnzev8Ee/fu5d5776VJkyZs2bKFtWvX0qqVHfMK3KBFixaxdu1aPvzQvmGKN+Pjjz9m+PDhTJs2jeHDhxfYdfKye/duGjZsyI8//mgberpt2zYaN27MhAkTqFChAgMGDGDv3r0cOXKEkSNHcu7cOTZv3pznhFvXrl3Dw8ODVq1asXbtWpYtW2brc9SvXz9mz56NMYY+ffrwzTff2JozVq9eTfv27enTpw/Lly8nLi6OZ555hmnTpuV4rfr16+Pi4sKWLVt45JFHWLVqFRaLhcjISNv/Antt2rSJlJQUmjfP2jcnJ/lZM4CI5LqQOp9AnvsV5dKwkovIV3VEZtcTmdNI5Nv7Rea3EvnuIZGFj4gs7iyyrLvIit4iq/qJ/DRI5JdnRNaMFFn7gsj6l0U2vCay6U2RLe+KbP+fyM5pIrs/k6RdM6RfIwf5Vz2kd5CrWI8uEzmxWuTUGpn//nBpXBFZMXOC3F0O+WPZFyLRx0RizohcDReJuySSECOSFC9iTZHsNGjQQAD59NNPRUQkJeXv/bZv3y6AfPjhh/L4449LhQoVsj1Hdk6dOiWAjBs3TipVqiSTJ0+WAQMGSOnSpcVqteZ5fGRkpMTGxtp9vVsRHR0tjo6OUqVKlUyfRVhYmBhj5PXXX8+0//DhwwWQvn37iojI9OnTBRA3Nzfp3r27iIg0adJEWrVqJSIiMTExUqJECenfv79cunRJzp07l20cI0eOFCcnJ4mIiJDZs2cLICEhIbJ+/XoBZOnSpbZ9Dx8+LIC888472Z5r8uTJAkjdunVtn7fVapUvvvhCgoKCpHbt2pKcnJzpmO3bt0uFChXkxRdfFBGRpk2bCiC7d+/O9hrvv/++ANKmTRu5fPlyTh9vJlFRUQLIpEmTRERk9+7dAshXX32V57FNmzaV4OBg8fHxkf79+9t1vX+C6OhoIXVElXTu3Lmow7kl0dHR0rt3bzlz5kxRhyLR0dFZ1oWEhEhiYqKcPHlSAGnevLkA0qBBA/njjz/sPnf6/xKLxSJ//fWXJCUliZ+fnwBSunRp6dKli1SsWFFERL766isBJDQ0VEREfv31VwHE3d1dwsLCcr3OW2+9JYCEh4eLn5+f1KlTRwCZO3fuDXwSqe655x5xc3OTnTt32ta9//770rp1a7l06VK2xwDbJZ/KUXuSgTdIfTaBya+L5vfSsGFDez/vG7Z///5Mv5QnT560bRs2bJh4e3tLbGysODk5yejRo2/o3AkJCeLk5CSA9OvXT3bv3i1ubm4yePBgOXnypPTp00fc3d0lOjpaXn31VbFYLJKYmGjXuRcvXiyAbN682ZZgfPLJJwLIsWPHcj3WarVKlSpVCuwf/pEjR+TYsWO2QnLhwoUCyPr166VMmTK263700UcCyL59+zIdv27dOunUqZOtAEwv7AGZM2eOiIgMHjxYvL29xWq1yueffy6AbNy4Mde4Dhw4IIC88cYb0qZNGylTpoykpKRIXFxclp9vv379xMnJSc6fP5/tuUJDQ8XR0VFmz559Q5+N1Wq1/bxefvllKVu2bJakIV1ycrKsXLlSrl27dkPXqFy5si1RSk8oTp8+nedxo0aNshWK33777Q1d805mtVqlRIkS4ubmJidOnCjqcIqNqlWr2hKwhISEGzr2kUceEUAaNWpkW/fCCy8IIAMHDpRp06YJICdOnJBx48aJxWKxXSMlJUVatGghEydOzPM6O3bsEEDeffddAWTKlCni6+srvXr1kqioKElKSrIr3itXrojFYhFAKlasKBEREXLhwgVxd3cXQIKDg+Xq1atZjivsZOAKYAWSgJi01zH5FUB+LAWZDCxYsEAA2y/PypUrbds6dOgg9913n4iING/eXBo3bnxD5w4JCRFAXF1dJTAwUJ599llxdHS0/VIAMmTIEBER+eKLLwSQ48eP23XuV199VRwcHCQuLs62Lr2mYf78+bkee+zYMQGkRIkSmY6/VaGhofLwww/b3luVKlXk2LFjMmTIEPH09JTExETp1KmT1KxZU0REWrVqJXXq1LHr3MOGDRNXV1eJiooSEZGPP/5YADl16pQEBQXJPffcY1eNyAMPPGCLb9q0abb1wcHB0rx5cxER2bhxowDy0ksv5XquyMhIu2LPSXx8vERERNzSObIzZcoUAWT58uVSvnx5sffvJz1pAwokrtvZiy++KDNnzizqMIqVTz/9VIYOHXrDiYDI34lrxgT+0KFD4unpKX/88Yfs2bNHAJk1a5Y88cQTUrly5ZuKMSUlRcqWLWurdVi/fr3079//hmuS1q1bJ4BMmDBBXF1dpVGjRjJs2DAxxsjEiRPFYrHIM888k+W4Qk0G7oSlIJOB9Dvy8+fPZ6peFRGpWbOmrVp63Lhx4uDgkGt1bXR0tPz444+2QunLL78UQAYMGCCAeHt7S/fu3WXHjh0ydepUWbp0qa0mIL3q6vfff7cr7kcffVTuueeeTOsSEhLExcVFRo0aleux6VXkgCxatMiu69mjTZs24uXlJW+99ZZMnz5dXF1dZeDAgVK5cmXbH83bb78tgGzdulWMMTJ+/Hi7zh0XFyeHDx+2vd6wYYPtLj+9qcUeK1asEE9PT1sNQ7pRo0aJi4uLxMXFScOGDaV8+fJy5coVO9/57SU2NlbKli0rTk5OYrFYZNu2bXYdl/430KBBgwKOUKlbM3PmTAFk1apV2W5PSUmRUqVKSffu3aVJkyby4IMP3vS1+vbta/t/GRMTI6GhoTJu3Djp3LmzGGPk1KlTeZ4jvVkxIiJCli1bJg4ODgLIE088ISIiTz75pHh7e0t8fLztmLi4uEKvGTDAk8Craa/vAhrnVwD5sdibDEyZMkW6d+8u//73v7Ntr8pO165dbXeq/v7+0q9fPxFJ/WVydna2ZZ7phfWPP/6Y7XlOnDghtWvXFkB++uknERF59tlnxcPDQ9auXWv7ZcrYLp1RaGioLZPNzt69e2X69Om21/7+/vLUU09l2S84OFjc3d2lbdu2ObZFDx48WLy8vKRMmTLSs2fPbPe5UenVaRmTqWHDhtl+6T/++GMREVmzZo0AUrNmTXFxccmzzS4nMTExtn4EGWsM7JGx30a69Lvip59++h9RTT5p0qQsd072ePTRRzPVmCh1O4qJiZEpU6bkWk2f3mwAyL///e+bvta3334rgNSoUSPT+hMnTogxRt544408z9GjRw9bHwYRkVmzZkmlSpXk0KFDIiKycuXKLOVDjx49Cj0Z+AT4GDiY9toH2JZfAeTHYm8y4OPjI97e3pk6qeWlevXq0q1bNxEReeihh6RevXpitVrl9OnTmc6TW7+B2NhYqVChgnh7e0upUqWkU6dOIpLatHD//fdLXFycODo6SunSpXOsEouPj7fd6V4vMTFR7rnnHgHk8OHDtju4Dz74IMu+mzdvliFDhoivr69Ur149091teo1FnTp1pEOHDjJkyBBxd3fPl46EvXr1Ek9PT/nrr79s644fP25LBtI772RsO/vPf/5zS9dMb3PMLim6UeHh4bZ/HC1btrSryeF2lpCQIN99912mOw2lipOUlBR57rnnBJD33nvvps8TGRkpxhjp1atXlm1t27aVSpUqZXuDkVGVKlXk8ccfz7Qu4/+YxMREKV26tO0aSUlJ4uXlVejJwM60ryEZ1u3OrwDyY7EnGUi/U5w4caJUqVLFViDn5uLFi5l6jE+dOlUAWbhwoe1u/pdffrHtn1O/gfSOcL///ruMGzdOjDG29quhQ4eKiMjAgQPz7LDi7+8vAwYMkOTkZDl8+LDtl+WDDz6wFVTjxo2zdRTctGlTjudat26dGGNkwIABIpJaBezn5yf/+9//BJC33nrLVtuxfPnyPD+r3Bw7dkwcHBzkhRdeyLJt0KBBmXrci4jUq1dPLBZLnh0d89KlSxcBbqgXcm6qVasmFotFdu3alS/nU0oVLavVKj///LPdo3Fy8umnn8r27duzrJ8/f74Asnr16hyPjYyMtJVNuUm/Obt69apthFNhJwNbAIcMSYFvxsTgdljSq/HfeOMN+f7777P9IPfu3SuAzJs3T4YPHy5ubm55do5bsWKFALJ27VoRSc3G6tevL+XLl7cN+8rYHjR+/HixWCyZhoYkJSVJlSpVJDg4WKxWq5w9e1YcHBzE2dlZgBzjzU5wcLC0adNGPvzwQwHk7rvvlscff1w8PDykXbt20q5dO6lYsaLcdddd0rRp0zzvXtM72Zw9e1a+++47W0KR/p5jY2PF0dFRxowZY3eM2enZs6e4u7tnO6QvOTk5S23IggULZMqUKbd0TRGRRYsWSb9+/fLtLn7WrFny0Ucf5cu5lFL/fPHx8eLv7y8tWrTI9v9QeHi4zJgxQwBZs2ZNrudK72T42WefyZgxY8TR0bHQk4E+wDLgLPAWcBj4V34FkB9LmTJlbG3SgAwaNChL9Wd6wb5x40ZZvXp1lpEB2Rk7dqw4ODhkqiZP79hWunTpLMPGoqKixM/PTxo1amQbDpaeGS5cuNC23/PPPy8PPPCArFy58oYKqp49e0q1atXkoYcekoCAAAkODpYaNWpIly5d5MSJEzJ37lzbZ5CxxiInmzZtssU2ZswYcXJykvvuu09cXV1t77lx48bSokULu2MMDQ2VunXryp9//ikiqc0SgLz22mt2n0Mppf4p0muGf/7550zrV65cmV6gi5OTU561E1arVYKDg6V8+fJSq1Ytad26deGPJiB19sFhwHCgdn5dPL8WBwcHGThwoLi4uMjzzz8vgLRt21aOHz8uf/75pyQmJtqGmp07d06uXbsmHh4e2Q7VyKh169bZDrsKCQnJcRKIefPmCSDPPfec/P777+Ll5SV16tTJcaz4jRg9erQ4OTnZ3uf1YmNjxdPTU5o3b25XknHt2jVbP4e2bdtKgwYN5K+//spUDf7f//5XXF1dsyRXZ86ckaNHj2a5/r333iuAvPnmmyKS2mbm5+d3x/a8V0qpWxEfHy8VK1aURo0a2UaHRURESNmyZaVu3bryww8/SEhIiF3n+uOPP2w3fO+9954OLczyJtI+nPRhGF9++WWmsfozZsyQ0aNHi7Ozs60jR9euXaVUqVJy8uRJsVqtcuHChUwfelJSkri7u8uzzz5r1w8pndVqtQ0VBKRq1ap2DS2xR3pCk12WmW7nzp05zrCXnUaNGknLli2lVKlSMmjQoCzbf/jhB1uNSrrly5dLyZIlxcfHxzZZTXJysvTu3VuMMeLq6ipPP/20bbKWG/0MlVLqn2TWrFkCSK1atWT8+PESFBQkLi4usnfv3hs+V+fOnQVSJ2PTZOC6JX0Wv99++832ga1bt04++OADKVWqlAwYMMBWxZ7u4MGD4uXlJXfffbcEBwcLIHXq1LFV5+/cufOWhpD9+eefMnTo0HxLBET+bupwc3O74VnncjJ8+HBbj/5PPvkky/awsLBMvW1///13McZI/fr1pUSJEtKqVSs5ffq09OvXz9YJpnnz5tKyZUs5d+6cANrOrpQq1qxWqyxdulQCAwMFkEqVKsnXX399U+cKCwuTWbNmidVq1WTg+iUgIECaNm2a7fCNhx9+WO69915b57uMfv75Z3FwcBA/Pz955ZVXpGbNmrbhfemd9G6n6UfTO0E+/PDD+XbOb775xlbbsHXr1mz3qVatmnTp0kVERJ566inx8vKS2NhYW7abvkyYMEFERPr37y/ly5e3zRlgT/8FpZT6p0tOTs7XJtP8TAbseYTxba9cuXJs3Lgx221BQUG88847eHl50blz50zb2rZty4EDB/D398fT05NmzZrxyCOPsHTpUj777DPuvvtuKlWqVBhvwS5Vq1bF29ubHj165Ns5mzRpAqQ+QrVu3brZ7tOyZUsWLlxIREQES5YsoVu3bri7u/PUU0/h5eVFZGQkgYGBPPDAAwBUq1aN8+fPExISAkDNmjXzLV6llLpTOTg4UKJEiaIOI1s5JgPGmChgETAPWJOWhdxxgoKCSElJISoqKtuCvUaNGrbv27VrR0BAACNGjCA8PJy5c+feVo9odXd3JywsDBcXl3w7Z/Xq1SlVqhR33XUXrq6u2e4zYsQIvvrqKzp37kxMTIwtGTHG0KVLl2zPCbBq1Src3d0JCAjIt3iVUkrlP0su2yKBXcAE4KwxZqoxJrhwwgJjzEljzF5jzC5jzPabPU9Q0N+Pes7rLt/BwYF+/foRHh5OtWrV8vUOPL+4urrma4JijGH8+PG8+OKLOe5Tv359evbsyZYtW/Dx8eHBBx/M9ZzVqlUDYN26ddSoUQOLJbdfM6WUUkUtt//SsSLykYg0A5oC54Dpxpjjxpi3Cyc8WotIfREJynvX7JUvX55y5coBeScDAAMGDMDV1ZXx48fj6PiPaEXJ07PPPkufPn1y3eeNN97AwcGBrl274uzsnOu+6TUDSUlJ2kSglFJ3gNxKO9vtp4icBiYBk4wxNYFeBR1YfjHGEBQUxIoVK+xKBqpVq0ZUVBRubm6FEPlr1dMAABNpSURBVN2do2bNmvz555+2gj43Pj4++Pj4EB0drcmAUkrdAXKrGfg9u5UiclhE3iigeDJdCvjZGLPDGDP4Vk7UunVrfHx8qFChgl37ayKQvSZNmlC6dGm79k1PGjQZUEqp21+OyYCIPF+YgWSjmYjcB3QAhhljWmbcaIwZbIzZbozZHhkZmeuJRowYQWhoaJ7V2yr/pPcb0GRAKaVufzfVs8sY81p+B3I9ETmf9vUCsBhofN32z0UkSESCfH19cz2Xo6Oj3Xe0Kn/UqlULR0fHTKM1lFJK3Z5utpv3oHyN4jrGGA9jjGf690A7YF9BXlPlr+eee47169fj6elZ1KEopZTKQ27zDMTktAko6EZ1P2Bx2hA6R+D/27v3qLmq8o7j3x8JBCpIooCEQEhwgRTq4vaChIsFigjYkuKlgqhYrEAt3m+46HLFKhWvdKl4CUqVVkAKRbkpgWphcU1iyBWIxARNELmI3CxFMU//2Hvk5O3M5J2XOXNm5vw+a83Kuex3n/1kv8k8s8+esy+KiB+WfE3roq233ppZs2ZV3QwzMxuDdt8meAzYPyIeHH1C0trymgQRsRrYq8xrmJmZWdLuNsGFQKvv4l1UQlvMzMysAi1HBiLiH9uc+0g5zTEzM7Ne62gCoaQ5JbXDzMzMKtLptwmOK6UVZmZmVplOk4H+WcLPzMzMuqLTZGC/UlphZmZmlWmZDEi6tLD9aYCIWJ/355XfNDMzM+uFdiMDuxa2XzXqXPvn/5qZmdnAaJcMxDjPmZmZ2QBp9wTCP5G0Dylh2CJvi948jtjMzMx6pF0y8ADwhbz9q8J2Y9/MzMyGQLsnEB7ey4aYmZlZNca1hLGk0RMKzczMbECNKxkAvtnVVpiZmVllWt4mkHRlq1PAi8tpjpmZmfVauwmEhwJvBp4adVzAAaW1yMzMzHqqXTJwO/A/EXHj6BOSVpbXJDMzM+uldt8mOKbNuVeW0xwzMzPrtXZrE2x0hcKxlDEzM7P+1u7bBD+W9C5J04sHJW0m6QhJ3wZOLrd5ZmZmVrZ2cwaOBk4BLpY0E3gM2ByYAMwDzo2IxeU30czMzMrUbs7A/wJfAb4iaVNgG+DpiHisV40zMzOz8rUbGfijiPg9aa0CMzMzGzLjfQKhmZmZDQknA2ZmZjW30WRA0h5Njh1WSmvMzMys58YyMnCppI8o2ULSl4BPld0wMzMz642xJAOvAHYCbgUWAL8EDi6zUQCSjpa0UtIqSWeWfT0zM7O6Gksy8HvgaWAL0nMG1kTE+jIbJWkCcB5wDLAHcGKz2xVmZmb2/I0lGVhASgb2Bw4hvTFfVmqr0qqIqyJidUT8DrgEmF3yNc3MzGppLM8ZeHtELMzbvwJmS3pLiW0CmAasLeyvI92u+CNJpwKnAkyfvsETk83MzKwDY0kGHhq9PgHw/5Y17rJmCyDFBjsRc4G5ACMjI9GkvJmZmY3BWJKBa0hvxCLNGZgJrAT2LLFd60iTFht2JE1cNDMzsy7baDIQES8v7kvaFzittBYlC4Bd8wJJ9wMnAG8q+ZpmZma1NKa1CYoiYpGk/ctoTOEaz0o6A7iOtEriBRGxosxrmpmZ1dVGkwFJ7y/sbgLsCzxcWouyiLgWuLbs65iZmdXdWEYGtipsP0uaQ3B5Oc0xMzOzXhvLnIGP96IhZmZmVo2WyYCkqxj1db6iiDiulBaZmZlZT7UbGfhcz1phZmZmlWmXDKyJiF/0rCVmZmZWiXZrE3yvsSHJEwbNzMyGVLtkoPhI4F3KboiZmZlVo10yEC22zczMbIi0mzOwl6QnSCMEW+Rt8n5ExAtLb52ZmZmVrmUyEBETetkQMzMzq0a72wRmZmZWA04GzMzMas7JgJmZWc05GTAzM6s5JwNmZmY152TAzMys5pwMmJmZ1ZyTATMzs5pzMmBmZlZzTgbMzMxqzsmAmZlZzTkZMDMzqzknA2ZmZjXnZMDMzKzmnAyYmZnVnJMBMzOzmuu7ZEDSHEn3S1qcX8dW3SYzM7NhNrHqBrRwbkR8rupGmJmZ1UHfjQyYmZlZb/VrMnCGpKWSLpA0pVkBSadKWihp4cMPP9zr9pmZmQ0NRUTvLyrdAGzf5NRZwO3AI0AAnwCmRsQp7eobGRmJhQsXdr2dZmZm/UrSTyJipBt1VTJnICKOHEs5SecDV5fcHDMzs1rru9sEkqYWdo8HllfVFjMzszrox28TfEbS3qTbBPcBp1XbHDMzs+HWd8lARLyl6jaYmZnVSd/dJjAzM7PecjJgZmZWc04GzMzMas7JgJmZWc05GTAzM6s5JwNmZmY152TAzMys5pwMmJmZ1ZyTATMzs5pzMmBmZlZzTgbMzMxqzsmAmZlZzTkZMDMzqzknA2ZmZjXnZMDMzKzmnAyYmZnVnJMBMzOzmnMyYGZmVnNOBszMzGrOyYCZmVnNORkwMzOrOScDZmZmNedkwMzMrOacDJiZmdWckwEzM7OaczJgZmZWc5UkA5LeIGmFpPWSRkad+6ikVZJWSnp1Fe0zMzOrk4kVXXc58Frg68WDkvYATgD2BHYAbpC0W0T8ofdNNDMzq4dKRgYi4u6IWNnk1Gzgkoh4JiLWAKuAA3rbOjMzs3rptzkD04C1hf11+ZiZmZmVpLTbBJJuALZvcuqsiPh+qx9rcixa1H8qcCrA9OnTx9VGMzMzKzEZiIgjx/Fj64CdCvs7Ar9sUf9cYC7AyMhI04TBzMzMNq7fbhNcCZwgaZKkmcCuwPyK22RmZjbUqvpq4fGS1gGzgGskXQcQESuAS4G7gB8C/+BvEpiZmZWrkq8WRsQVwBUtzp0NnN3bFpmZmdVXv90mMDMzsx5zMmBmZlZzihj8ifiSngSaPcRoWGwDPFJ1I0rk+AbXMMcGjm/QDXt8L4uIrbpRUVWPI+62lRExsvFig0nSQsc3uIY5vmGODRzfoKtDfN2qy7cJzMzMas7JgJmZWc0NSzIwt+oGlMzxDbZhjm+YYwPHN+gc3xgNxQRCMzMzG79hGRkwMzOzcXIyYGZmVnN9mwxImizpMkn3SLpb0ixJn5C0VNJiSfMk7ZDLStIXJa3K5/ct1HOypHvz6+TqItpQh/EdJunxfHyxpI8V6jla0soc+5nVRbShZvEVzn1QUkjaJu8PRf8Vzo2Obyj6T9IcSfcX4ji2UP6jOYaVkl5dON538XUSm6QZkp4uHP9aoZ79JC3LsX1RUrMl2Huu1e+mpHflvlgh6TOF8gPTd9BZfMPSf5K+W4jhPkmLC+W7038R0Zcv4NvA3+XtzYDJwAsL598NfC1vHwv8ABBwIHBHPv4iYHX+c0renlJ1bOOI7zDg6iZ1TAB+BuyS61gC7FF1bK3iy9s7AdcBPwe2Gab+axPfUPQfMAf4YJOye+S2TwJm5pgm9Gt8HcY2A1jeop75pMXWlH9/j6k6tjbxHQ7cAEzKx7cbxL4bR3xD0X+jzn8e+Fi3+68vRwYkvRB4JfBNgIj4XUQ8FhFPFIq9AGjMfpwNXBjJ7cBkSVOBVwPXR8SjEfEb4Hrg6J4F0sI44mvlAGBVRKyOiN8Bl5D+LirVKr58+lzgw2wY21D0Xz7dLL5WBrH/mpkNXBIRz0TEGmAVKba+i28csbWqZyopeb8t0v/KFwJ/3dXGjkOb+P4eOCcinsnHH8o/MjB9B+OKr1U9g9Z/jfMC/ga4OB/qWv/1ZTJAymYeBv5V0p2SviHpBQCSzpa0FjgJaAy3TgPWFn5+XT7W6njVOo0PYJakJZJ+IGnPfGyg4pN0HHB/RCwZVX4o+q9NfDAE/ZfPnaF0K+cCSVPysUHqv05jA5iZy94o6dB8bBopnoZ+iA1ax7cbcKikO3Ic++fyg9R30Hl8MBz913Ao8GBE3Jv3u9Z//ZoMTAT2Bb4aEfsAvwXOBIiIsyJiJ+A7wBm5fLN7PdHmeNU6jW8RsHNE7AV8CfhePj5I8c0BzmLDBKdhGPpvDq3jG4b+OxP4KvBSYG/gAdJwJQxW/3Ua2wPA9Fz2/cBF+dNbP8YGreObSLrVdiDwIeDS/ClzkPoOOo9vWPqv4USeGxWALvZfvyYD64B1EXFH3r+M9BdUdBHwukL5nQrndgR+2eZ41TqKLyKeiIin8va1wKZKk9MGLb6ZwBJJ95HaukjS9gxP/zWNb1j6LyIejIg/RMR64HzSUGSj/KD0X0ex5eHXX+ftn5Duw+6W69mxUG8/xAatfzfXAf+Zb8XNB9aTFvEZpL6DDuMbov5D0kTgtcB3R5XvSv/1ZTIQEb8C1kp6WT70F8BdknYtFDsOuCdvXwm8VcmBwOMR8QBpItdRkqbkYb+j8rFKdRqfpO0bM10lHUDqt18DC4BdJc2UtBlwAunvolIt4lsUEdtFxIyImEH6Zd03lx2G/msZ35D03135PmvD8cDyvH0lcIKkSZJmAruSJmf1XXydxiZpW0kT8vYupNhW59/PJyUdmPv2rcD3exVHK63iI41GHQEgaTfSpLJHGKC+g87jG6L+AzgSuCciirc3utd/0QezJ5u9SMN1C4GlpI6eAlxO+ke6FLgKmJbLCjiPlPUtA0YK9ZxCmlSxCvjbquMaZ3xnACtIM0JvBw4q1HMs8NMc+1lVx9UuvlHn7+O52fZD0X9t4huK/gP+LffP0vwfy9RC+bNyDCspzMrux/g6iY00Otfou0XAXxXqGcn/Xn8GfJn8RNeqXy3i2wz499zeRcARg9h3ncY3LP2Xj38LOL1J+a70nx9HbGZmVnN9eZvAzMzMesfJgJmZWc05GTAzM6s5JwNmZmY152TAzMys5pwMmHWBpHMlvbewf52kbxT2Py/p/V2+5lPdrC/Xubc2XI1wjqQPjuHnJOlH+elujWPHK63euHsJ7Zwh6U3drncj13y5pG/18ppmveJkwKw7bgUOApC0CenpbnsWzh8E3FJBuzq1N+n7yZ06FlgSGy62dSJwM+mBJ902A2iaDOQntXVdRCwDdpQ0vYz6zarkZMCsO24hJwOkJGA56QlnUyRNAv4UuFPSlpL+S9IipbXUZwNI+rSkdzYqy5/IP5C3PyRpgdIiOh9vdvFmZfKn57slna+0xvs8SVvkc/vnsrdJ+qyk5flJZf8EvFFp3fQ35ur3kPTfklZLeneL+E+i8AQ3SVsCBwNvp5AMSDos19VYr/07haczHpuP3ay0vvzV+fif67m13O+UtBVwDmlhmsWS3ifpbZL+Q9JVwLw8UtGIa1kjlnz9GyVdKumnks6RdJKk+bncS3O5N+SfXSLppkKcV1FOcmNWraqftuSXX8PyIj11cDpwGnA68AnSJ+aDgZtymYmkpVMhjR6sIj2BcR/gxkJdd+W6jgLm5jKbAFcDr8xlnsp/Ni1D+vT8LLB3Lncp8Oa8vZz8JETSG+vyvP024MuFdswhjXpMyu39NbBpk9h/DmxV2H8z8M28fSvp0cwAhwGPk56VvglwG3AIsDlplbWZudzFwNV5+yrg4Ly9Zf47PKxxvtDudcCL8v7rSEteTwBeAvwCmJp/7rG8PQm4H/h4/pn3AP+St5fx3BNAJxeuczBwVdW/a3751e2XRwbMuqcxOnAQ6U3utsL+rbmMgH+WtBS4gbSs6Esi4k5gO0k7SNoL+E1E/IL0Rn8UcCfpcaq7k54/XtSuzJqIWJy3fwLMkDSZ9MbdaNNFG4nrmkgLvjwCPER6cx3tRRHxZGH/RNIa6uQ/Tyycmx8R6yItCrSYlLTsTnpm/Jpcprgy2y3AF/KoxOSIeLZFO6+PiEfz9iHAxZEWH3oQuBFoLGu7ICIeiIhnSI9qnZePL8ttaVzzW5LeQUooGh4CdmhxfbOBVcq9NbOaaswbeDnpk/da4APAE8AFucxJwLbAfhHxe6UVDjfP5y4DXg9sz3NvpAI+FRFfb3PdpmUkzQCeKRz6A7AFzZc3bWd0Hc3+33hW0iYRsV7Si0mLxvyZpCC9mYakD7epr2WbIuIcSdeQRllul3Rki6K/LWy3i7F4/fWF/fW5LUTE6ZJeAbwGWCxp70ir320OPN2mbrOB5JEBs+65BfhL4NH8ifRRYDIwizRKALA18FBOBA4Hdi78/CWk+9GvJyUGkFZpPCXfg0fSNEnbjbruWMr8UUT8hrxiWz5UvAf+JLBVJ0FnK4Fd8vbrgQsjYudIqzjuBKwhfVpv5R5gl5zAADTmKyDppRGxLCI+TVrAZfcxtPMm0tyHCZK2Jd02mT/WYPI174iIj5FW92ssB7sbz63WaDY0nAyYdc8y0n3120cdezwPsQN8BxiRtJA0StBYhpuIWEF6g7s/0hKrRMQ80jD+bZKWkZKEDd4Ex1KmibcDcyXdRvoU/Xg+/mPShMHiBMKxuIZ0Px7SLYErRp2/nBaz/3MMTwPvBH4o6WbgwUKb3tuYzEf6VP4D0opuz+YJfu9rUuUVucwS4EfAhyMtDztWn80TCpeTEosl+fjhOVazoeJVC81qSNKWEfFU3j6TtGTve55HfVNJowGver5tyt8uOA+4NyLOHW993Za/FXIjcEibeQtmA8kjA2b19Jr86X85cCjwyedTWR7JOF+Fhw6NwzskLSatP7810G6eRBWmA2c6EbBh5JEBMzOzmvPIgJmZWc05GTAzM6s5JwNmZmY152TAzMys5pwMmJmZ1dz/ARY7yVKpMhUVAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.figure(figsize=(8,5))\n", "plt.plot(lam, flux, color='k')\n", @@ -485,9 +680,29 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: CompoundModel2\n", + "Inputs: ('x',)\n", + "Outputs: ('y',)\n", + "Model set size: 1\n", + "Expression: [0] + [1]\n", + "Components: \n", + " [0]: \n", + "\n", + " [1]: \n", + "Parameters:\n", + " amplitude_0 mean_0 ... c0_1 c1_1 \n", + " ----------------- ------ ... ------------------- ---------------------\n", + " 6.657305067408649 6563.5 ... -12.793362542046482 0.0032399500252079877\n" + ] + } + ], "source": [ "print(compound_fit_bounded)" ] @@ -545,7 +760,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ @@ -561,9 +776,20 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.errorbar(x1 , y1, yerr=y1_err, fmt='.')\n", "plt.show()" @@ -578,7 +804,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ @@ -599,7 +825,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -610,9 +836,20 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.errorbar(x1 , y1, yerr=y1_err, fmt='.')\n", "plt.plot(x1, exp_fit(x1))\n", @@ -621,9 +858,24 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: exponential\n", + "Inputs: ('x',)\n", + "Outputs: ('x',)\n", + "Model set size: 1\n", + "Parameters:\n", + " a b c \n", + " ----------------- ------------------- ------------------\n", + " 1.094329500556074 -1.9011571463626575 0.9286154432072172\n" + ] + } + ], "source": [ "print(exp_fit)" ] @@ -637,7 +889,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ @@ -653,9 +905,20 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.2344055763853015" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "calc_reduced_chi_square(exp_fit(x1), x1, y1, y1_err, len(x1), 3)" ] @@ -693,7 +956,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": {}, "outputs": [], "source": [ @@ -709,9 +972,20 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.errorbar(x2, y2, yerr=y2_err, fmt='.')\n", "plt.show()" @@ -726,11 +1000,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ - "class sine_new(Fittable1DModel):\n", + "class SineNew(Fittable1DModel):\n", " a = Parameter()\n", " b = Parameter()\n", " c = Parameter()\n", @@ -758,20 +1032,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ - "sine_model = sine_new(a=4.,b=2.,c=4.,d=0.) \n", + "sine_model = SineNew(a=4.,b=2.,c=4.,d=0.) \n", "fitter = fitting.LevMarLSQFitter()\n", "sine_fit = fitter(sine_model, x2, y2, weights = 1.0/y2_err**2)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAD8CAYAAABjAo9vAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJztvXl821eZ7/8+2mwnduIsju04i7PvzuK0dZpQWugGLS1bSUsohWEJDOvMncuFGYbhd+cOA3MHBu7AlC7AwEwKgbK1pUBXSqFxm7hZ7MTOHieOlziJEzuJF9k6vz+OpEiWZEnWV/ouOu/XKy85lvT9Pvrq+PN9znOe8zxCSolGo9FonIPLbAM0Go1GYyxa2DUajcZhaGHXaDQah6GFXaPRaByGFnaNRqNxGFrYNRqNxmFoYddoNBqHoYVdo9FoHIYWdo1Go3EYHjNOOn36dFldXW3GqTUajca2NDQ0nJVSliV7nSnCXl1dza5du8w4tUaj0dgWIURrKq/ToRiNRqNxGFrYNRqNxmFoYddoNBqHoYVdo9FoHIYWdo1Go3EYWtg1Go3GYWhh12g0GoehhV2j0Wgchhb2HLP5oR1sfmiH2WZoNBoHo4Vdo9FoHIYWdo1Gk3P0zDW7aGHXaDQah6GFXaPRaByGFvYc0zfg5/SFfhpae8w2RaPROBQt7DmkobWHls4+2nr62fJovRZ3Td6iHZzsooU9h9QfO0dAqp/9wwHqj50z1yCNxgS0g5N9tLDnkLr503AJ9bPX46Ju/jRzDdJoTEA7ONnHlA5K+Urt3CksrSihd2CYb927ltq5U8w2SROHUBre9q0bTLbEmYQcnIDUDk620MKeY0oKvZQUerWoa/IW7eBkHy3sGo0m52gHJ7voGLtGo9E4DC3sGo1G4zB0KCbH6AU569M34Kd3YJiG1h4dKsgBerHaeLSwazQRhHKsAxK2PFrPtg/XaXHPAlrEs4sOxWg0Eegca40T0MKu0USgN5FpnIAOxWg0Eegca3PR8XZj0B67iSRtNiAlNP0CHroBnvg0nDuaO+PymJJCL1WlRdROPAfb3gM/ejsc/B0EAmab5kjiFgTzD8CzX4KHb4JX/h2unDfPQBuihd1CRAl9zwnYdg88/kEYugx7fwLfXg+Pfwh6O0y10+m45Ah3XfoZfHcjnKqHs4fgx5vhP66DlqfNNs9RjC4I1jfgZ/7QIXj4jfDnb4G/H575InxjOfzmb2Bk2GyTbYEOxViRMy3wyJtACLj9q3DNR+DKWdjxHXjtEejrhAeeBJe+LxtOIMDnz/89q4deh6V3wh1fhwnTYP+v4OWvw88+AB//M0xfZLaljmD0YvW0vhb+z/D/gpIKeN/PYeHN0NkI9d+FnY/ApEo2H7ge0OGasdDKYDWkhN9+Dtwe+MsdUPdx9XNJBdz6j/CWr0Hrn2D3j8y21Jk0/pTVQ6/zw0lbYfN/q+vu9kLNPfD+X4G3EJ74lA7LGETUYrXbxdah/+Kwd6ka+wtvVk9UrIK3fwdWvAP+8FVm+U+YZq9d0MJuMa4d+DMcf4nv+7awefvp2Besez9UvwGe+ZIOyRjNYB88+w9QVcsDn/2qmjFFUlIBt/0znNwBOx81x0aHEVqsnjWliG0rGyhkgL8Rf0PDGRn1us0P7eDD3ZuhoISPX/wGLjliksX2QAu7iYxeNPLJAe7vexhmrODZCXfEf5MQ8LZvwcggPP03ObQ2D3j5G3CpE27/WuIw15r3woI3w3Nfhp7WnJrnVEoKvVw7sRsOPMF9Q1+kqbcwbgOOPncp3PF1FvoPcefln5tkrT3Qwm4S8brI1PQ8y88G62hY9xUCwp34zdMWwI2fh5anoPmp3BntZM4fhx3fhpp7YfY1iV8XurEKAU//z9zZ53De1/cI9WI1/uCyX8LNYSvewY887+J8Tw8N+5tzbKV90MJuEqMXjX6+4yDfu7ierw+/hy2/6advwD/2ATZ8EqYugFf+X/aNzQee+SK4vHDzl5O/tnQ2bPwsHP69TkE1gNUDu1g3uJO6a66N2hz2m33tMenADa09fPnyO/m34XeyZdsR3VYvAVrYTWL0Dkdx7jBDeAjgwj8coHcgSVqX2wu1H4BTr0L3wazb60TC6aU9rWr2s+ETMKkytTevux+EG17Xi9iZcvfl7XS5K6i9/YGr8fYP11FS6I15rXKIBAHc+AOS+qPdJlhsfbSwm0TUotGHruOd/T/Dg8q08HpceFwieRf31feBy6PFJVP2/VQ9rrs/5qmEm8hKKmDx7bDnMRhJMrvSJObCSVYMNVJ+w4fB47u6OWzUjt/QetSUCT5cAgQSL8PUeY+YZLi1MUzYhRBuIcRuIYQO+qZIeBC7DlN76SXumXKEWVOK+NKdKzh5/kryLu7FZUpc9v4Ehodya7xTkBL2/QTmboLSOem9d9374fIZOPT77NiWD4RuqjXvSfiSyPWo//3UfuZMncDs0kK2TXqQ2lPaqYmHkR77ZwC9mjEe9j4G3gm0TVpLVWkRPVeGUq8wuO4BtXnp0O9yY6vDWOg/COeOwOp7x/Hmm6GkUs+YxouUsG87zLkepsxN+LLR61HDAUnllInUXrtJrXP0tufIYPtgiLALIWYBdwA6uTdNvHIImn4Jy97GgGsCkGaFwYVvhpKZWlzGyQ39z4GnEJbfndb7Nj+0g82P7oQ1W+DIs3Axzp4Dzdi071blGlZvjvv06PALqL+HSYXBDfPr7gcZgN3/nSOD7YNRHvs3gc8BejtemtQO1MPgRRUvD/0uMv6erNGDyw1rt8DR5+FiWw4sdg5X+vs50FtEw6z3Q+Gk8R1k7fuUuOzZZqxx+cC+7eD2wfK3h3+1fesGtm/dEDf8ErOoOnU+zL8RXv8vvRN4FBkLuxDiTuCMlLIhyes+KoTYJYTY1d2tV7JBDeK/KtulPO55N0Q9l2gRKS5rtgTF5cdZstQ5hBZDG1p7aO68zL8P38WWwzcmXMeIW3kwkqnzlLjs/i8VWtCkxogfGh9Xa0RFpTFPxwu/xP17WPcAXDypymxowhjhsW8E7hJCnAB+ArxJCBEzN5JSPiylXC+lXF9WVmbAaR1AXxcceV5NRV3usLcyFnGzNKbOg9l10PJkFo11FvXHzhGAYNoccdcx4m0ii8uKd8KFk3BGLzGlzNEX1NpQgrWN0eHIcPgFov9OFt2qvH69gB1FxsIupfyClHKWlLIauBd4QUr5vowtywdangI5AjXxY4xpsegW6NirbhaapNTNKsSHHxeBhOsYKbfJW3SLejz8TJasdSCNP4OiqbDwlrhPjw5HxstpB6CgGOZuhMPPZtFY+6Hz2M3k6AsweTaULc38WCFxOfJc5sfKA2pH9rLN9xXWlvQmXMcYaxE7KkQzaSaUr9LikiqBETVOF98OHl/Cl6Ucjlx8G5w9qHoYaACDhV1K+Qcp5Z1GHtOxjPjh2Euw4E2xVQQhpbBMFBU1UFyhMjQ0yTn6AivcpyiYNjuhcCRaxI4boll0i6r6OHAxl5/CnnTsgf4eldGVIon+HjY/tIPPNARDu/rGGkZ77GbRthOG+lIa3Elb6AGbH67nxZEaNQvQXWYSEva0Dxxiv281IyLBFD9IpNcY+h7ihmgW3arCakdfzMGnsDlHXlCP82805HCdniqVIaNDYWG0sJvFkedVrZF5b0zrbWNlaewuuEZ5jG07jbLSUVz1tK+w5dwHecp147iOEzdEM+saKJysZ0ypcPQFqFwNE6cbd8xFt8LxP6pWehot7KZx9HklBnFSvRKRLEujsWCtullocYnLVU9b4MdDfWD5uI4TN0Tj9qiw2uFnddrjWAz0QttrqqZ9EtIKRy66FYYH4IROewQt7OZw+Ry070krxgjJszSuuIph9nV6SpqAkKftIoCXEf7PfTeEhSOVcFckcRf2Ft0Kl7qgc5/RpjuHE3+CwLC6CRrJ3I3gnaDTHoNoYTeDYy8CMiWvJZKUsjSmv001/+3rNNBgZ1A7dworyifwac8v2bZqD7XVU5O+Jy2vMdSjU99YE3P0efBOhNnXGnK48Lhv71dhzcO/1zMmtLCbw5HnoWgKzFyT0stDgxdInqXxWjUNgUU67TEB69xH+Kzn59SuW5/2e5PuQi2eATPX6uyMsTj6AlRvAk9BxoeKCU1OfavaKHb2kAGG2hst7LlGSjW459+k6rwkYfTgBWJCAFEhmhFJvfdaLS4JWD24ixFcMSUckjH6e0jY4WrhLWrxWqc9xnL+OJw/ZlgYJiY0GVozOf5HQ45vZ7Sw55qu/aphcorx9dGDN15npZgQzZxilVOtp6QxrB5s4LB3qcpgSYPR38MdNTPjh2iqN6q6PTozKZZjwVTQNNeWEhEz7pfP56xrOq+8oEtraGHPNcdfUo8pei1j1cwIEZOlsXyJWsTrOW6U1c7gynnm+Y+wr6A25qlkYZax1jeiFl6r1qvMpNbUF2LzhtBO62kLDTlczLivnspB3wqWDjXlvVOjhT3XnKyH0rlqG3oKpFozIypLY+71V8+lucqp13Ahec+774v6dSrFvlIupVxQrHK09bWPRkpofQWq3xB3p/V4GZ2d1OJbydTAObjQatg57IgW9lwipWo+PacurbdFDt5UsjTu/cV5Loli9YekucqpetUjdubaqF+nWuwr5dolczbA6V26XSERs5lzR+HKOZhzXVbP1+JboX7I8xurFvZc0nNChUgMSvVKhBQuDvpW5P3gDhEWl1OvKW/aNyHq+bQ6VqXCnDq1WaZjT2bHcRKnXlWPs9NzatI+jadaOzVoYc8tBg/usTbVtPhWwLnDcPmsIeeyO27ph9MNca99Wh2rUmFOcEZ1UsfZw5yqVwvW0xdn9TS9gyP8c+ABGg6fyup5rE7sSpwme5ysh4JJMGOZ4YceHZ45GDklXaYLbs7zH1VedILZUkmhl5JC77hEvW/AT+/AMA2tPer9xWVqgbB1B2z8TKamO4NTr6ld0S5jfcnIcR9aK2mWG/h593q2HTxO7ZJ5hp7PLmiPPZecelXVh0khfz2StEv4Ake9i8BdoL3GIIuHDqgfZo8/xhvve0i48DqnTnmpuhcnEwN90N2S9RBkaK1E4lK1gPbuz+r5rIwW9lzRf0G1Tktz4XQ89A34ab04onbi5WmcfXSYaon/AJTOgUmVhp4n4cLrnOtVzfE83wXZN+Dn0vlOtRs6y/H1qLUShqmjMavnszJa2HNF2y5AZuQxpkKUB3n6nTS0XYKhK1k9p9Xp6/fzp8tVNEx5i+HHTrjwGrqBn8zfRbzQWNzZN4UtQ39Lw8iCrJ4vaq1k9pPUXszf3dda2HPFqXq1cWVW+jVKEhFvU02UBynd1I8sVouGeUpDaw8tXb38h/9Othx6Q8INSOMJd8EYC69T58PEGXk7Y4I4oZFT2XcwwimpS+epHsBDl7N+TiuihT0HbH5oB031z0DFKvBNNOSYiWK7UR6k20Wdqzmv4+z1x84hJQRw4w+4EjekzoC4+e1CwNwNeX3tQ2PRzQheF5mnkabDnA2qPHCelnbQwp4D3HKYhf4WQ8MwiWK7UR7kR+qorfDlvbh4GFHiYkSOejrMrlPVBnvbc3dOC1E7dwpvmn6Rv/b8jG23DGeeRpoOs65Rj1rYNdlirv8YhXLQ0F13Y22qifIgZ62H06/nXe2MyFLH3yx6lPcW/NmYHPV0qArWpDn9eu7OaTE2ir18wvMEteuyu7YUQ1GpSjk9vTu357UIWtgNJNGGocX+UKqdcVkBKW+qqVoHAxdUuVQHE3nto8JUj9RTPtJBTcml3Io6qNCbcEN7fooLwJKhZs66ymByVdpdqsZD1FrJzHXQnp83Vb1BKQcs8B/ivGsaUydXGXrclDbVzFynHtt3w7TsZiVYhej69AFeZRkXfUuzdr6Ei66+CTBjed6KC8AifzOHfMsxsG116lStg8afQm+H4WmuVkd77Dmgv3+Qfx25L3HnnWwyYxl4CvPKa4wKU4kAda5mjnqzu5U9IVVr1bXPs1AYAJe6KRs5Y961Dzs1+Xdj1cKeZRoOt/GZgQ/z48G6hCVhjSZqOur2qpBAHsV5o8JUC19klrePS65J5hgzc53aqJSPtfGDRdDuf9fbzTl/KBSWR2M/hBb2LFPf2MIQHpXLO0ZJ2Kwyc53K6Q2M5P7cJhFeQO59jvIldePKUTeEqqDXmIfiQvseQEBFjTnnz+NQmBZ2A4m3YajOdwwfqp2d0el2KW+qmbkW/Jcdvb093rUvDvSqhguj6q/nis0P7eC9v+5VNXvyKBQWpn03TF8EhWq2lLQZeDbI01CYFnaDSLRhqHagnu8UPmhcSdjx4HCvMdG1n+8/rF5gkrADjAhP3oXCwrTvhso1QGpdqrJCnobCtLAbRMJiUO27KU618062mLYIfCWO9RoTXfuwsFeuNsmyIFX5FwqjrxP62sM31VS7VBmOw52aRGhhN4i4G4b6e+D8MY55F5lrnMsFM9c4NtYY79pv37qB+6rOwtQFarOKmcxc5/hQWAztwe5RQWE3vEtVqsxYnndZYaCF3TDibhjq2AtgXrpXJDPXQGejI/twJtys1b7H1DBMmHz0Gjv2gHCpMBRZ6FKVKnmYFQZa2A0lphhU0Esw02MP7/abuQ5GhuDMAdNsySYx1/7SGehtM1XYw4uFl6cHQ2F5JC7tu1UbvILi8K9SbgZuNHmYFaaFPZu074Yp1Xz/47eal24XoirPNmuEQwFrTDl91GLh916jYcpt+eM1SqnGvhVmS6DGvv8ydB8025KcoYU9m1hpcJfOhaKp+SMu7bsxM4c6ZrHQvR66mhwZCouhrwMudVln7OfhDlQt7BmSsLDR5XOqZKtVBrcQypZ8WUTq2BOVQ51rYhYLF1UEQ2F50IczNMasMvanLQRfcXjNKx/QRcAMJCrc0mGxwQ0q7e+V/wfDg+ApMNsaQ4kJdbXvhnk35NyO0E1++9YNLK0ooXdgmG/du5ba4vPwEmoB20pjIgMiP2sU7cGF0/KVUb82LRzpCtrSsc+c85uA9tizRagOtMk51FG7/SprVFeZM82m2pR1ejtUOMBkAY1aLJwyTy2g5oO4tO+GsmVqS79VqKxRobBAwGxLckLGwi6EmC2EeFEI0SyE2C+E+IwRhtmezr2q72XhZNNMiNntNxLMzul0uLiEptyV5iycxsXlgoqVzr/24YVTC117UGstQ5cc35cghBEe+zDwP6SUy4A64BNCiOUGHNfWdB7axY4rxtZfT5eYBbyzBfnhNXY2qseKlWO/LtdU1EBnk7PT7vo64cpZ02eqMVQGF9E78yPOnrGwSyk7pJSvB3/uA5oBcxUth8QtbDRwkYqRDk54zW1sEbOAt2B6fniNodlSQYnZlkRTWaPS7s47uG5JaGwFNyZZhrJl4PI636kJYmiMXQhRDawFXjXyuFYlYWGjziYATnjMFfa4u/3CXqODY42djaalOUbe6GOqb4bEziFeY1ynJijsH3j6iklWJcDjgxlLr87mHI5hwi6EKAZ+DnxWStkb5/mPCiF2CSF2dXd3G3VaU0lY2Cg4eE5455tk2VVidvuFvUaHxhoHLkLPCVM8xqQVDB3kNSZ2ahrpdFfS75poroGj2PzQDl68WKluPHlQwtcQYRdCeFGivk1K+Yt4r5FSPiylXC+lXF9WVmbEaU0nYWGjzn1ccE3hgjtHhY7SwWFeYwzB2ZIZHnvSCoZhr9H+wp7ws3bsMz0EmYgT3vlwuVutAzgcI7JiBPA9oFlK+Y3MTbIPCQsbde7jd2Jj7psKpIKDvMa4hBdOc++xp1TBsGK1uvY29xrjftaBXug5bnoIMhEnvAvVDw64sSbDCI99I3A/8CYhxJ7gv7cacFxbEBPqGB6iocPP319+T+6bCqSC02ONnY0wsQxKKnJ+6pQqGFbWqKwRm3uNcT9rl9pVa4UQZDxaPfPUD051aiLIeOeplPJPgDDAFmfQ3UL9yGKGcQNXp6lmNdmIu9uvogYOP6O8RuGwr65zX7CJsTmfq6TQS0mhN/H3HQoRde6DSZW5MywLxHzWoCe8O7AgPFs1rblMHPpdE1W2lFPDkBHonadG09lInas5rCs5bSqQKhU1zow1Dg+pXbVWS7WLpHyFenSi19i5jwbvenaecVluthrO4Cm+yZnXfhRa2I2mcx+1Be0sKy82t8/pWFRGeI1O4uxBCPhNS3VMicJJzvUaOxupL9pkTgu8MYjK4DlyEw3nfXzwwWfNNiur6CJgGRIT6uhshPIVFI8UUFyE9UQdrhZn6tgHi28z1xYjCS+cWljYQdnXscdsK4xlxA9nmqlbegeubghI68xWozJ4pIv6wDLm+h2a7htEC7uRSKnEpeY90Ga2MWNQOEkVpXKax96xD7wTYJp5WRkpVTCsrIEDv1I59ybWEsqUqM/afRBGhqhdMp+l7RFVLS3g2IQyeAISvG5BnauZpmF7r28kQ4dijKTnBAz2WjvGG6KyxnnCHpwt4XKbbcnYVATrqDgpMyn0WSprzGuBl4CoDJ6PbGC+5yxz/UfNNiuraGE3EhNzqFMhqilIxSp1IxqI2SRsG6I+T2i2ZNFrH0WoOFloM5UT6NwHniLV1MKCRN5sWr3zmet3cL0edCjGWDobQbhhxnK2by0y25qxKQ8KYNd+mGtyP1YjuNAKgxftIezF5TBhOnQ5zGMvX2792RLwB7ke98AZrj92htr5M8w2Jytoj91IOhtVOzavxUUdrnqNXQ7xGu2ycAoqx75ipXM8dimD+wesde3jta1saO3h271v4N+G38mW7++yTDqm0WiP3Ug6G+3j/U6qgsJS6GxM3OLMTnQ2AQJmLDPbktQoXwmvPQIjw+C2+Z/hxVNqITjoLFh5HNUfO8cwAnDhHzF382A2sfmIshBXzkNvW0yfR8sihApb2Mxjj7wJ9Q346R0YVjscu5pUNozPWlUFE1KxCkYG4dwRVeLBzoRmHuXWDYOFbjYNrT24hEDIEbwCS6RjZgMdihkH8aZ4oToZluvaE0FM/ezyldB1ACHt19EnpmzsyYuWvqnGjJnQWoDNbqxxCX2Gcus3TgtlyHzA9yLb5jzpSG8dtLAbR5e1vZa49bMrVsJwPxUj7WablzYxZWN7p1j6phrD9MXg9jkj5bGzUe2LsFjHqriNQFAZMhsntlHb+4Ltq2wmQgu7UXQ2BasKlpttSVzi1s8Oeo12TP2KKhvrhjpXs2VvqnFxe6FsiTOEvauJV/tnxs5iTSRZ05NW73xVZfNSl0kWZhct7EbR1WjpUEDc+tllS8HlQV7psWbt+DGI2nSysZta12F7eeygbkR2D8UMXoLzx2n1WKtUb7KmJ2F7nXBjjYMWdiMYGYYzLZYWlrj1sz0FNJTcxHd76yxXjS8RkdPr8KYT/+tQNEVl+tiJipXKY7xk41aRZw4AUnnAFiJZ05OwvVrYNSFiYnfnDqsMB4uHAuJt9a73XMtwcBhYpRpfIkZPr/sG/OqJriY1W7Jwbfm48d7QDC9io1LchXkLEWNfUBjDTSwswlhNT7Zv3cAPPn4LTJ5j/xlTArSwp0nc2F24z6Z1PfZE1FVPxscwYJ1qfIkYPb3uHRhWGT1dByy94zRhvDfcf9bG4tLVBAWT6XZbb20pac2aipW0tey09I10vGhhT5O4sbuuRpXhMH2xucalQcjzql22kG2+r1BbcsGateMjGD29nlToURk9w/2WXt9IGO+dMBVKZtrba+xsgvIV9A0O226dhvKVzBxuwysHzbbEcLSwp0nc2F1nk8pwcHvNNW48VKyi1nWYuwr3WFrUIXZ6/fRnbuCbbwzusbPwbGnMeG/FKvt67IEAdO2nYcL1Y2agWJaKlbgIMMd/wmxLDEfvPE2TkLhE1ZvuaoIFbzbbtKTE3epdPIMLrinMHbZH44GYPptdTeDyqAwfizJ6zPzL71qA4PdRsRKOPg/Dg+ApMNnSNOk5Dv7L1A8viZmRWN1JAMKzPLuM/XTQwj4OosTlUrfKbLCwx5iMVs88S+eyj1nLprNJhcAsLooJm1yXr4TAsGpUUVkTXSbBguIYZd9lNdOoWzob1/7zluqaBCnUrJkyj35RZOmxP150KCZTQhkNFo7xJuOEdwGzhk+q9mZ2I5QRY1fCC6iNSTfVmE2MfS3HQLioXb0mYQaKpXG5+J3YRP3lcstd60zRwp4p4YwY62ZlxCMy/e7u227Dix/OHjLbrPS4ch56T9t6tsTU+aqdX1dT0k01ZhNj38nLqrGGt8hyXZNSoaG1h89duZ8fDd5gyRtpJuhQTKZ0NanMhglTzbYkZUKeV0DClkfr2fauRdTC1dZyFiZqet1pn9lSwrCASzVmobORupsienNaKKQRIqp3qMdF3eAOqLL+tU+EKuHrRiLstTaQAtpjHwfbt264+ofa2WQ7jzHG8zo/AdwF9tuF12X/2RIQbLrRSO2cUkuHNKKyku5fQW3/n2w39iMJ3ajcjOB1ScvdSDNBC3smDA/C2YO2E5aY9LsFZarkqkWFPVGVPjqbVJu5Yvu0N4tfZXMVDFyA3tOWD2mE7fOdUr+wWNekdKidO4VV5YX8ledxtq0/ZtlrPh50KCYTultURoPNhD1uymb5Sjj4tCpjaqGt+TFho0hP1i7NqyOIF0f/VZPgHyF4Yy010bo0GNW43cpdk8aioGgi7yhooGrQfj0JxkJ77Jlgpz6bo4jxDCtWwZVz0NdhrmGjSLigODykbqw2iK9HEm+z0klPNQGEvTYqdTaqhtzF1islkC6t3vmWna2OFy3smdDZCN6JqsmA3bFo3ZKEuzbPHoSA33Yee7ziVAOuCXS5K6OKgVmeruBsyUKzu/HS6p0PF1pV31aHoEMxmRCsk4HLAffHUDZMVyMsvtVcWyKIGzYC28+WRm9WavXOp7Kzke2ftnZIY/vWDWq/w1ea4bqPmW2OIZwI1Wbv2g9zrzfXGINwgCKZhJTBGK+9QgEJKZwMpXMtOSWNu6DY2QieItXA2gG0eubD+eMw2Ge2Kck5ewhGhmx5Ux3N9q0b+MIH71H/sdhsNRO0xz5eLpyEwYu2CwWEiLvYZaeCVJ2NKpPH5TbbkozpG/Dzi8FaFgZ2UNt1AOZcZ7ZJY2PjMtVxKamEoqmMmER5AAAcy0lEQVT2CoUlQXvs4yWcQ21/ryVMxSo4dwSGLpttydiEZ0v2vKlGEsr6ebVvOluG/paGAy1mm5Sczn1q38O0RWZbYgxCBJ0a5wi79tjHS2cjIGDGMrMtMY7ylYCEM80wa73Z1iTmYpvK+7apsEfOlq5m/Qj8eKg/3qN2AVuZ0GzJ7SD5qFgFOx9VbS4d8Lns/wnMorNR1cnwTTTbEuMIZ8bss5Swx4SNQrMli7ciTIWobfoiQN3wLrNNGhsp1fVf8lazLTGW8pUwPADnj6reCjZHh2LGi0NCAVGUzoGCydaPs4dmS+XLzbYkY6LSH9ccoLb3eQhYeLNMX4fa7+CkECREVdl0AlrYx0P/BZX36pTFoxBChOuWWJrOfaoqYkGJ2ZYYQjjrZ/Fc8F+B8xZu/DBqx6ljmL4YXF7rj/0UMUTYhRC3CyEOCiGOCCE+b8QxLU3XfvXoNK8F1JS0az8EArEd6a2CDQuvpURkKMyqhCtqWrsKaNp4fBx3zWHvzj+abYkhZCzsQgg38B3gLcBy4D4hhP3nyGMRjvE6VFz8l63rNQ70qpZsTvMYQbX3s6DXGHWD72yEKdVQOMlUm7LBCe8CqoePqnUEm2OEx34tcERKeUxKOQT8BLjbgONaiujBvU/VySipMNeobFC5Wj127jXXjkQ4ebbk8aksqw6LXntw5tpSkOPehUwOXLRcvaTxYERWTBVwKuL/bYDFd1hkSGjHqQPqZMRQthTcvqC4zDTbmlhs1FwjVaKyfipXh6tsbn64PvZ5Mxm8pGZyq+8125KscNy7UP3QsRcmWXDsp4ERHns8dYuZywghPiqE2CWE2NXd3W3AaU1ieBC6DkDlGrMtyQ4en+roY1WvsXOvmi3Z/A8vIZWrVdZJ72mzLYmlqwmQjrqpRtLqmaeqbFp17KeBEcLeBsyO+P8soH30i6SUD0sp10sp15eVlRlwWpM406yqCoZCFk6kcjV07KWvP0GDCzNp36vsc+JsCa6OKyuKS8immc50as4OefjayPtoOBIjX7bDCGHfCSwSQswTQviAe4EnDDiuNXH44AagsoaGy9Np6eqN7vRjNv4B6G529rUvXwHCBR3WyYwJd7A6eAImzlC1VRxGqLTDI/7b2HLkJmuM9wzIWNillMPAJ4HfA83AT6WU+zM9rtW4OriPq008TqjBnojKNdQHloWTA6IaXJjJmf2qY5WTZ0u+iSqn2iIee1Qrv+braJh8syNnS6HSDgFc+HFT33Iq+ZssjCF57FLKp6WUi6WUC6SU/2TEMa1E1OBuXEND6S2OHNxhyldQ5zqIhwAwqsGFmYTEzsnCDirjp2Nv4l6vOSSqg5V0Ue9aZ5ot2SRU2kEg8TJMXUmX2SZlRN7uPE1n803M4HZbvkxTZniLqK1w8/9NfDyq04/ptO+BwlJVN97JVK6m4eLE2KbXJhAjeIucF4aBq6Ud5pW62eb7CrUBi5fVSELeCns6XG3PFhzcC+zf5zEplau5Xb4c2+DCTDocvnAaonJ1MBSmvAkzQ2EhwbtxYqsSvNXOnS2VFHopm1JK7dQhy4TCxosW9hQIDe4bik8HB7cDN8eMpqKGqYHzTB45b7YliuEhOHPA2QunISpWUedqtkworKTQy/2+P1BbfB4mzzLNjpxRWaOFPV8oKfTyXt+fqC3sgKnOaMc2JsE49jz/UZMNCdLdrNqxOT2+DlBUSu00P39f/CvLhMLm+Y/mx2wJ1Oc8f0yVr7ApWtjTYJ7/iNpO7YTm1ckIbhuf5z9isiFBwguneeCxA1Su5lb5iiVCYV45xOzhE3l07YOfM7jL2bLF8MYgDxQqPulmHAg5wtzho/kzuAsnwdQF3DvbIqGY9j1QMMnZaaaRVK6mYqSDiQFjm1uPR6Rm+0/gYcTxs6XtWzeo8g2hOkQ2DsfkpbBHpS+mmHHwk3dOp1AOOn5wRxHcgWoJOvaqP7h8mC0BVKhxVu03v8rmP28INv7Ih/UNgJJyKK6wdvnkJOTJX0k0UemLqWYc5EsOdSSVNXDhJFwx2WsfGVZ1SvJFWCBijeOwyYaQP2mmkcxcA6dfN9uKcZOXwn41fTGNjIOOPeApUrsC84WZa9Vj+25z7Th7UPWjzKebanEZTJ7N/XMssOM3X9JMI9jeXkbg7CHbLqDmpbBH9ZlMNeOgY68q1euADuYpM3MtIOB0g7l25NvCaYiqWmgz+drnU5ppBEd9S3AhoX23JXYAp0teCjtE9JlMRdQDI2o6GvJg84XCyWqG0rYr5qmcZgq07wbvRJiWB2mmkcxaDxdPwqUzhh0ybZE6cyB/0kwjOOJdAkBDU5MldgCnS94KeyRJRepMs2oXN+ua3BllFWath9O7zG0X1rYTqtaBy22eDWZQtV49xrmxjofxJA1wOnjuKoeX0RjFZVcJ7e4q6o9fSH89zgJoYR+DsOC37VS/mLXeXIPMoKpWNX7oOWHO+f39Kp84H2+qlatBuA0LhY0raaBtF0wsy6+F0yBHfEuou/JS+utxFkALeyq07YIJ0/InhzqS0M3MrDh7x15Vqjcfhd03AcqXX/WaM2RcSQNtO2HWtXm1cAoqZPWfQ2+G/vNcO2PEMjuAU8VWK4GhcIkRPSDTOkbbTiUseTa4AZixQmUDnW6AVe/O/fnzebYEKhzT9HMIBDLO4Q8lDfQODPOte9cmF6kr5+HcEVizJaPz2o1QyOqArOYV/pY7/SeRpbW2EXXQHntSJgQuqXS7qjwVFrdHZUSMivPmLFOgbacKAxTPyO55rMqs9TDYqwTWANJKGgjN0vJstnQ1ZCXw42Fg4IrZJqWNFnbGFqkF/kPqh3z1GEHF2Tv2qtQ3xrkIN17aduWdsEQRWrQ0KByTFm07VZu+PMsGiwpZiQA3YnLK6TjIe2EfS6T6Bvy0XRikIbBIZWXkK1W1MDIY7FI/zkW4FIjJTrp4GnpP57ewT18MvhLDMmMSETcz7NRrKhRXUJzVc1uNqH0uq5u4U/4BIUfMNistbCvsRuVRJxKpkOA/c2URW/xfpKErkPG5bMuoBdRxLcKNh5CXms/C7nJD1drcL14HAuqceTpTDYesli2iUA7wk3fYJ74ONhP2bMR1E4lUVHNb6bZN/mpWmDxbdacPeo3j2rk7Htp2grsgXEI4b6lar2ZL/n4gM6cmXMEwGWcPqdh+Pt9UwfyssHFiG2EfHTLpG/AbctxEIqUEX+JmBK9b2CZ/NVPiioYQwY1KVwd3KotwGc+q2napXG6Pb/zHcAJVtRAY5u+/+1juzhnKRpp9be7OaUWmzlcF0LIcCjMa2wj76JBJ78CwYceOJ1K1c6ewufQQf+35GdveXWmrVKesUFUL5w5Dv7ELpQnFf8SvSgnku8cIYa9x4VDLmC8ztMxD204laPnQLWwshAjW7NHCnhXq5k/Dx7DyoD0uJhVmPwX/jWI3f+F9ltrV+VUAKS4hgT21M2uniAy1ff7BH6uKjnka442ipIIz7nKW+vfHPJVIzNMV+ZgwZ9tOde3zpf79KKJCVnM2qJo5ZpevTgPbfGu1c6dw75QW5UHfoxrqphtvT3ewL/I3q2JA+VajJB6zrgGXF1r/lJXDjw61FV1uu3peDQd8NSwbbFSLmgYTkxl2uE3VR9LXXlG9EZBw0j7t8Wwj7AC9xfP5hOcJ6NiTtTzqsPgP9lHtP8ph31LDjm1rfBOUB3dCCXukR2NECGB0qO1y/yDnXVNh8qyMjusUDvhWMUn2QneL4UkEMZlh+w4AMn835Y2mqhY8heGxbwdsJewd7irOu6ZSf6jd0DzquJkCrTtwE6DJl19hmDFFo3qTKl88mFofznQEaHR20lvlHzngq8nPMg5x+LNczXeG7+KxF183PIkgJjOMJlV8LN8XTkN4CtTsxQBhz1W5a1sJO0JwwFdD3aXnsp9HffwlcPv40sc/YPyxLUrSHaXVm0COwMlXMz9WkJD4A1ezk95dyY3idfYX5FcN8EQ0tPawo9vL14fv4Ut7JiVMIhivJx+TGdbzW7Uhr3CSkR/D3lRvUlVG+y8kfWlOexUkwF7CDhwoqKF28DU2lfVnN4/6xMsw+zrwFhl/bIuSdEfprGtVnP3Ey5kfi1jxB1R20uBOGgKL+OVArW0aG2STq3sq3ASA0BzG63HhcQlOX+jnsVdPRl3Lrt6BtEQ+nBlW4WGkbRe/6MnzbJjRVG/CTnF2Wwn79q0b+Oj7PwDAG9iTejGjIKl6NBMDfdCxD6rfkIm5tiPpjlLfBBVvTGFKmsru1EQprA1NTbx36O9oueixVdeabBG6lgKJj2HWlCqn5kt3ruDk+Su09fTzpV83ha/lkD9A67kr41uDan1FhSAL8isEmZSq9WqznE3i7LYSdkBtGCipZPnQvrTelk5o4Mr50zQEFsK8G4yw2DaktKO0epPKL4+Is8e7YaZyrNHiP6nQg5AB6k/2MxSsKG2nrjXZInQtl0weYZvvK9zpe52q0iJ6rgyFxTwQkGFP3uUShPpdpX39jv+RIbwc8i0z8iPYH2+hSh5o/bPZlqSE/YRdCKjexIqhfWm1a0snNPBq33S2DP0dDSP5Nx1NuqN0VJx9rBtmsmONFv+SQi9zh49RF3idUIKpnbrWZJOSQi+Tp5RRW9ofdmoib4w+r4u50yYwa0oR//vuleNfgzr+Eod8y/GLAoM/gQOo3qSqnA5cHPchclXu2n7CDlC9idJADzNH2lJ+SzqhAYkLPx7qW3uNstg5zI6Os2da6TFS/Ldv3cDX1l2g1nWY2nJs17Um6wgB1RtZNtQIUsbcGMsnFVJVWsR7r5uTdi2f7Vs3sP3+JdDZyH6fXrSOy9yNIANJkwcixTtyITWX5a5tKuwq9v1v16aWdgfphQbcjOB1oT3FePgmRsXZR98wf7OvPbOMgON/hGmLYML0tNdQ8oLqTZQGLrD9XWpsJpoVpdVQI0TwZv0C1+SmiYrdGLVJL172y1g1rbJV7joe9hT2qfOhZGbShYzRFz6V0MC7pxxVu1vfMV2LSiIi4uzxwinxSCkFbMQPra/k3dpGWlRvUo8pZCalzbGXaHDV8Oy5ablpomI3xkgeCI3vsWpa5azcNTbreRomGGfn2IsQCLD5ETU1MqIX6i3sYKP3D0xY94OMj2VHUrqG1Zvg5X9VIrz4NkoKvZQUemNuhGl/H+17YOiSEvbT6b3V6YSvpZQwaRYcfRGu+bCxJzn+R+pL7iIQ7AQX8iq1gxPB/Bvhj/8Cl8/GfTok3gFJTE2rtHvOZoA9PXaABW+Cy93KczSQFYN7afatUr0+NWGiPO45G8BXDAefzvi4Ubt+j7+kHvMszTQthIAlt8PRF8DfH3X9Uq61Ho/edjh3mLpFlTnzKm3JkreoOPuh38V9OtkMdlwhsnFgX2FffJva9tzypHHHPHuYmSOn2VeQXz0e08ZbCItugZanIWBgy7Ajz0H5Kpg4LTORcjpL7wD/FTj2h4QvSfv6BY9VW3ttbpqo2JXK1WrG1JLYqYkU75w1fR9FRsIuhPi/QogWIcQ+IcQvhRClRhmWlAlTVUig+amU35J0sB/4NQCvFW7M1Drns/ROuHwmpk71uAdyXyecrIdlbzPQSIcydxMUTIaW1Md+Ug78WglWRU3OvEpbIgQsfSscfYGB/stjjvWcNn0fRaYe+7PASillDXAI+ELmJqXBsrfBucNU+U/GfTptkWl+AmZdw4N/eZeBRjqURbeoDIGWJ8M3zGSNwcf8LpqfBCQsvzs39tsZj09d/4O/NWbGNHBRhXaW362LrqXC0jtoGJrF/s7+MUs4xMuCydVMNCNhl1I+I6UMLfvWA7mtsbr0DgBmXNofc1HTvlueP642H2hhSY3CyWqRs/mp8EaxZI3Bx/wuDvwapi+BGbpMckosvQOunINTyQuyJeXg72BkCFa8PfNj5QNzN1LvWkvoljq6hMPnbl/K9q0bcpoFMxojY+x/AfzWwOMlZ9JMGqbdyQ8urIsRjbRzRpufUI86FBCXuB730jug57hqykDyxuCQ4Lu4dEZt1dbCkjoLbwa3D1p+k/mxDvwKJlXp+uup4vZSN28KBSifNlEJh5w1fY9DUmEXQjwnhGiK8+/uiNf8HTAMbBvjOB8VQuwSQuzq7u42xnqgvvgW/MGPEXlR075bHngCKtfAlGrDbHMKCT3u4IwpJC5jNwZXL437XTQ/qTIN9GwpdQonwbw3qjh7GqU1YhjohSPPq2sfbIOnF66TU7t+A9t8/8S6Sb1jlnAwa70iqbBLKW+WUq6M8+/XAEKIB4A7gS1SJh5hUsqHpZTrpZTry8rKDPsAdbXr8DGMIBB1UdO6W144Bad3aWFJQEKPu6RC7caLyExK1Bh8zO/iwK9h2kKYsTzbH8VZLL0Dek6ofpzj5dDvYGQQluvZUlosvJka1wk+6H12XCUcsk2mWTG3A/8LuEtKecUYk9KjtqaGbxZ9j/sLXo65qCnfLZuDwqSFPS5jetxL71RrExdOjXmMhN/F5bNqJ9/yt+uFu3RZ8lZApJUZFsP+X6ld3Lq/aXoUlNBUsIZrBl4BKS2XSZRpjP3bQAnwrBBijxDiuwbYlDZXJs7iH8Qj1E7pH98Bmp+A8pUwLf+qOabCmB53aE1i3/aUjxe12anlKVUtUt9U06ekXG0W2/vYuLJjPvDgcwwdfCYqDKMZm8ix+0rhDVSMdIy5n8AsMs2KWSilnC2lXBP89zGjDEuHF4tuU7WoX30o/TefO6ryp7WwjElCj2TaAph/E7z2CAwPpX/gxsdhyjyoWGWMofnGdR9V4Zhx7AKuHajHh18vWo+THUVv5IKrFOofTPgas9YrHHGbPuOp5NXCjbDrByk3Wg7z52+q7IJ1D2THuHzg+k/CpU5oejy9gXxqpypmtf6DOgwzXpa+DSbPgR3/kd77AgHuuvw4p92zVMtDTdr898feSOkbPgaHf0/lcOolxHOBI4Qd4KmJ74LBi/D6j8K/SyoyF0/Dnh/DuvvVtFYzPha8WS18vvLthBkacb+Ll/8ViqbA+g/lwEiH4vZA3cfg5Ctw+vXU33fot8wdPs4vi+/VYZhMuOZD4Pbxzep6S2USOeIb3b51A//0qQ/CnOvpfu6bvPe7KZY0feXfAQkbP5NV+xyPELDhE3Bmv9rBmAJz/UdVRkbdJ6CgOMsGOpy194OvBOpT9NqlhJe+Rqe7kj8X3ZRd25xO8QxYdQ/seQz6rVPi2BHCHub6T1E2cobrBlIQ9stnoeE/YdV7oHRO1k2zO0lnP6vugeJy2PHtpMfqG/Ajzh6kwb0arv2IgVbmKYWTYN37Yf8v1Sw0GYefhY69fNv3IU5dHNI119Mg7ka9uo+romwNPzTPsFE4S9gX385p9yzuuvR48k0b9Q/C8ABs+qvc2OZ0PAVKpI++AJ1NCV/W0NrDwc5efjZwDVv6/ycNZzLYXKO5ynVb1SavZF570FtvKNrEYxeW64YaaZBwo17FKlVq+rWHYeiyuUYGcZawu1w8Wfxu5g0fVYuiibjYprI4lt8FZYtzZ5/TWf8hVXXwFx9NuIhdf+wsUkoCuPFLV1bbg+UVU+ZCzb1K2I88l/h1R56D07uor7o/Z23anMKYpTFu/Dz0dcCv/jKxUzk8CC9+BYayv+XHWcIO/KHoVl4pfCM892Vo+kXsC/o64Yd3ARJu+rtcm+dsJkyFe34A3S3w+Idic6ulpO7M4/jwx+wU1hjAW/8vzFgBP/sL6D4U+/ypnfD4X8DUBdRdf5NuqJEmY27Uq94EN39Z1d350zdi3zx0BX58H7z0NTj6fNZtdZyw9w6O8AU+RcP0t8MvP6Zy1ENcPgs/uluJ+/t+DmVLzDPUqSx8M7z1X+Dw7+GZv7/6eynhmS9S2/xVPlnyMlWlEyyz/doxFBTDfY+psr4/3gxXzl997mQ9/Nc7YMI0eOAJaueXW24bvNVJWhrj+k/DynfD8/8Ih35/9feDfbDt3SpMede/56TQoKP6v4ViYAEJWy7dy7bSHmq3vQeq1qoys10HVBjmfY/DbJ27mzWu+TCcPQL134GTO6CkEgJ+OPwMXPMRXj71TqqE0GKSDUrnwOZt8MM74cHroWwJf+jwUjfwMoVTZ8EDT8KkmQAJe9VqEjPmNRNCCffZQ7D9fihfoTbwdR+Erv3wrkdh1btzYqejPPaoGNhIgPplX4R5b1ALGmda1IW/77Grnd412eO2f4JNf60yNi60QmcjXP8pFS7Qm5Gyy5zrlLjPvhYGL1Ez2MApTzV84DdhUddkCd8EeO9PofYDypk89Sr0nob3/Chnog4O89hHdwivW7kI5iasJKzJJi433PwPZluRvyy+Vf0DPh6sbbK9pMJMi/KHSZUqHGkijhL2UAysd2CYb927Vk8xNZoxsNJOSY2xOErYQccN7YAWFI1dscvYdVSMXaPRxJJ2U3eN7dHCrtE4mLSbumscgRZ2jcbBpN3UXeMIHBdjt0sMTKPJBTGZYnqHaV7gOGHXaDRX0Zli+YkWdo3G4ehMsfxDx9g1Go3GYWhh12g0GoehhV2j0Wgcho6xazQOR2eK5R/aY9doNBqHoYVdo9FoHIYWdo1Go3EYWtg1Go3GYWhh12g0GoehhV2j0WgchhZ2jUajcRha2DUajcZhaGHXaDQahyGklLk/qRDdQOs43z4dOGugOXZAf+b8QH/m/CCTzzxXSlmW7EWmCHsmCCF2SSnXm21HLtGfOT/Qnzk/yMVn1qEYjUajcRha2DUajcZh2FHYHzbbABPQnzk/0J85P8j6Z7ZdjF2j0Wg0Y2NHj12j0Wg0Y2ArYRdC3C6EOCiEOCKE+LzZ9mQbIcRsIcSLQohmIcR+IcRnzLYpFwgh3EKI3UKIp8y2JRcIIUqFEI8LIVqC37XjO2MIIf4qOKabhBA/FkIUmm2T0Qghvi+EOCOEaIr43VQhxLNCiMPBx6x0GLeNsAsh3MB3gLcAy4H7hBDLzbUq6wwD/0NKuQyoAz6RB58Z4DNAs9lG5JBvAb+TUi4FVuPwzy6EqAI+DayXUq4E3MC95lqVFf4TuH3U7z4PPC+lXAQ8H/y/4dhG2IFrgSNSymNSyiHgJ8DdJtuUVaSUHVLK14M/96H+4KvMtSq7CCFmAXcAj5ptSy4QQkwCbgC+ByClHJJSXjDXqpzgAYqEEB5gAtBusj2GI6X8I3B+1K/vBn4Y/PmHwNuzcW47CXsVcCri/204XOQiEUJUA2uBV821JOt8E/gcEDDbkBwxH+gGfhAMPz0qhJhotlHZREp5GvhX4CTQAVyUUj5jrlU5o1xK2QHKcQNmZOMkdhJ2Eed3eZHSI4QoBn4OfFZK2Wu2PdlCCHEncEZK2WC2LTnEA6wDHpRSrgUuk6XpuVUIxpXvBuYBM4GJQoj3mWuVs7CTsLcBsyP+PwsHTt9GI4TwokR9m5TyF2bbk2U2AncJIU6gQm1vEkL8t7kmZZ02oE1KGZqJPY4SeidzM3BcStktpfQDvwCuN9mmXNElhKgECD6eycZJ7CTsO4FFQoh5QggfarHlCZNtyipCCIGKvTZLKb9htj3ZRkr5BSnlLCllNer7fUFK6WhPTkrZCZwSQiwJ/urNwAETTcoFJ4E6IcSE4Bh/Mw5fMI7gCeCB4M8PAL/Oxkk82ThoNpBSDgshPgn8HrWK/n0p5X6Tzco2G4H7gUYhxJ7g7/5WSvm0iTZpjOdTwLagw3IM+KDJ9mQVKeWrQojHgddRmV+7ceAOVCHEj4EbgelCiDbgH4CvAj8VQnwIdYO7Jyvn1jtPNRqNxlnYKRSj0Wg0mhTQwq7RaDQOQwu7RqPROAwt7BqNRuMwtLBrNBqNw9DCrtFoNA5DC7tGo9E4DC3sGo1G4zD+f7bL+2ayemcVAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.errorbar(x2, y2, yerr=y2_err, fmt='.')\n", "plt.plot(x2,sine_fit(x2))\n", @@ -780,18 +1065,44 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: SineNew\n", + "Inputs: ('x',)\n", + "Outputs: ('y',)\n", + "Model set size: 1\n", + "Parameters:\n", + " a b c d \n", + " ----------------- ----------------- ------------------ ------------------\n", + " 3.601869179420031 2.004969267448945 3.7898787256962265 0.9618154155739129\n" + ] + } + ], "source": [ "print(sine_fit)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7.135547467878499" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "calc_reduced_chi_square(sine_fit(x2), x2, y2, y2_err, len(x2), 3)" ] @@ -824,7 +1135,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 40, "metadata": {}, "outputs": [], "source": [ @@ -836,9 +1147,20 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.errorbar(x3,y3,yerr=y3_err,fmt='.')\n", "plt.show()" From 016d847b80a05f1537980991e72b1b09f701840e Mon Sep 17 00:00:00 2001 From: Rocio Kiman Date: Wed, 26 Sep 2018 11:39:41 -0400 Subject: [PATCH 41/83] Added default parameters for the class SineNew --- .../User-Defined-Model.ipynb | 516 ++++-------------- 1 file changed, 98 insertions(+), 418 deletions(-) diff --git a/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb b/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb index 220045613..6a8d88398 100644 --- a/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb +++ b/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb @@ -33,18 +33,9 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rociokiman/anaconda3/lib/python3.6/site-packages/astroquery/sdss/__init__.py:29: UserWarning: Experimental: SDSS has not yet been refactored to have its API match the rest of astroquery (but it's nearly there).\n", - " warnings.warn(\"Experimental: SDSS has not yet been refactored to have its API \"\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", @@ -90,18 +81,9 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/rociokiman/anaconda3/lib/python3.6/site-packages/astroquery/sdss/core.py:856: VisibleDeprecationWarning: Reading unicode strings without specifying the encoding argument is deprecated. Set the encoding, use None for the system default.\n", - " comments='#'))\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "spectrum = SDSS.get_spectra(plate=1349, fiberID=216, mjd=52797)[0]" ] @@ -116,31 +98,11 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "text/plain": [ - "ColDefs(\n", - " name = 'flux'; format = 'E'\n", - " name = 'loglam'; format = 'E'\n", - " name = 'ivar'; format = 'E'\n", - " name = 'and_mask'; format = 'J'\n", - " name = 'or_mask'; format = 'J'\n", - " name = 'wdisp'; format = 'E'\n", - " name = 'sky'; format = 'E'\n", - " name = 'model'; format = 'E'\n", - ")" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "spectrum[1].columns" ] @@ -154,7 +116,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -171,17 +133,9 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1E-17 erg/cm^2/s/Ang\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "#Units of the flux\n", "units_flux = spectrum[0].header['bunit']\n", @@ -190,17 +144,9 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "wtype=linear label=Wavelength units=Angstroms\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "#Units of the wavelegth\n", "units_wavelength_full = spectrum[0].header['WAT1_001']\n", @@ -216,17 +162,9 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Angstroms\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "units_wavelength = units_wavelength_full[36:]\n", "print(units_wavelength)" @@ -241,20 +179,9 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.plot(lam, flux, color='k')\n", "plt.xlim(6300,6700)\n", @@ -285,7 +212,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -303,20 +230,9 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.figure(figsize=(8,5))\n", "plt.plot(lam, flux, color='k')\n", @@ -336,24 +252,9 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: Gaussian1D\n", - "Inputs: ('x',)\n", - "Outputs: ('y',)\n", - "Model set size: 1\n", - "Parameters:\n", - " amplitude mean stddev \n", - " ----------------- ----------------- -----------------\n", - " 16.75070628912542 9456.749530943964 2368.395706441934\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "print(gaussian_fit)" ] @@ -391,7 +292,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -407,7 +308,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -417,20 +318,9 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.figure(figsize=(8,5))\n", "plt.plot(lam, flux, color='k')\n", @@ -450,29 +340,9 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: CompoundModel0\n", - "Inputs: ('x',)\n", - "Outputs: ('y',)\n", - "Model set size: 1\n", - "Expression: [0] + [1]\n", - "Components: \n", - " [0]: \n", - "\n", - " [1]: \n", - "Parameters:\n", - " amplitude_0 mean_0 ... c1_1 \n", - " ------------------ ------------------ ... --------------------\n", - " 7.0208917442781855 6564.1363171493185 ... 0.003239952053005842\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "print(compound_fit)" ] @@ -486,21 +356,9 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "amplitude_0 7.0208917442781855\n", - "mean_0 6564.1363171493185\n", - "stddev_0 1.9776147551996561\n", - "c0_1 -12.793356185541937\n", - "c1_1 0.003239952053005842\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "for x,y in zip(compound_fit.param_names, compound_fit.parameters):\n", " print(x,y)" @@ -515,20 +373,9 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Parameter('amplitude_0', value=7.0208917442781855)" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "compound_fit.amplitude_0" ] @@ -550,7 +397,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -567,7 +414,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -577,20 +424,9 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.figure(figsize=(8,5))\n", "plt.plot(lam, flux, color='k')\n", @@ -603,29 +439,9 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: CompoundModel1\n", - "Inputs: ('x',)\n", - "Outputs: ('y',)\n", - "Model set size: 1\n", - "Expression: [0] + [1]\n", - "Components: \n", - " [0]: \n", - "\n", - " [1]: \n", - "Parameters:\n", - " amplitude_0 mean_0 ... c0_1 c1_1 \n", - " ------------------ ------ ... ------------------- ---------------------\n", - " 1.5325747104561047 6563.0 ... -12.791030002605362 0.0032374486280527695\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "print(compound_fit_fixed)" ] @@ -639,7 +455,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -654,20 +470,9 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.figure(figsize=(8,5))\n", "plt.plot(lam, flux, color='k')\n", @@ -680,29 +485,9 @@ }, { "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: CompoundModel2\n", - "Inputs: ('x',)\n", - "Outputs: ('y',)\n", - "Model set size: 1\n", - "Expression: [0] + [1]\n", - "Components: \n", - " [0]: \n", - "\n", - " [1]: \n", - "Parameters:\n", - " amplitude_0 mean_0 ... c0_1 c1_1 \n", - " ----------------- ------ ... ------------------- ---------------------\n", - " 6.657305067408649 6563.5 ... -12.793362542046482 0.0032399500252079877\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "print(compound_fit_bounded)" ] @@ -760,7 +545,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -776,20 +561,9 @@ }, { "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.errorbar(x1 , y1, yerr=y1_err, fmt='.')\n", "plt.show()" @@ -804,7 +578,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -825,7 +599,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -836,20 +610,9 @@ }, { "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.errorbar(x1 , y1, yerr=y1_err, fmt='.')\n", "plt.plot(x1, exp_fit(x1))\n", @@ -858,24 +621,9 @@ }, { "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: exponential\n", - "Inputs: ('x',)\n", - "Outputs: ('x',)\n", - "Model set size: 1\n", - "Parameters:\n", - " a b c \n", - " ----------------- ------------------- ------------------\n", - " 1.094329500556074 -1.9011571463626575 0.9286154432072172\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "print(exp_fit)" ] @@ -889,7 +637,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -905,20 +653,9 @@ }, { "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.2344055763853015" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "calc_reduced_chi_square(exp_fit(x1), x1, y1, y1_err, len(x1), 3)" ] @@ -956,7 +693,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -972,20 +709,9 @@ }, { "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAD8CAYAAABjAo9vAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAFplJREFUeJzt3X/MnWV9x/HPt7TsAWwj2k5nC1SmDtFsYTZaRuL89Qcqk/2ziFNj3AwswQ0XEyZb4hKTJRtbjCYziw26mYiKURONOtT5I2aJZbZoHKy4MWaxgvKoZW2GTfuk3/3xPIfePT33Ofc557rv69f7lRDa8nCe69zn6ue57u/14zZ3FwCgHJtiNwAAEBbBDgCFIdgBoDAEOwAUhmAHgMIQ7ABQGIIdAApDsANAYQh2ACjM5hjfdPv27b579+4Y3xoAsnXw4MGfuvuOWV8XJdh3796tAwcOxPjWAJAtMzvc5esoxQBAYQh2ACgMwQ4AhSHYAaAwBDsAFIZgB4DCEOwAUBiCHQAKQ7AP7PUf/JZe/8FvxW4GgIIR7ABQGIIdwOC4c+0XwQ4AhSHYAaAwBPvAjp84pR89/gsdPHw0dlMAFIpgH9DBw0f1wI+P68jRX+iNd+wn3FEtBjj9ItgHtP+hn+m0r//61Npp7X/oZ3EbBETAAKd/BPuA9l7+dG2y9V9v2bxJey9/etwGAREwwOlflCco1epFl12sK565VcdOrOn9N1ylF112cewmYYLRMry7bro6ckvKNBrgnHYGOH0h2Ae2dWWLtq5sIdRRLQY4/SPYAQyOAU6/qLEDQGEIdgAoDKWYgTEhl77jJ07p2Ik1HTx8lFLBAJisDo9gBxpGa6xPu/TGO/brzrftJdx7QIj3i1IM0MAaa5SAYAca2ESGElCKARpYYx0X9fYwCPaI6MRpYo31sJqT1QiDUkxCeKoMajN+INjxE6diN6kIBDuAaMYnq4+dWJv5/zAAmo1gBxDN+GT1thWqwyEQ7IliVBLPXTddzbzHQEaT1bsuvkB3vm2vJE18AAd/H+ZDsEfEU2SA9cnqnU+9QJJ4AEcgBHskk54iQ9CjZl03h/H3ZDaCPZLxTvzpe4+wOgBVG6+3f+F7j5xTfuGxet0Q7JGMd2KT5l4dgOVQt03LeL1968qWc76GIx+6YQo6kvEdjpL08X97+MnHhW3eZE/ebrJRJh42kfWveW3bNoeNNjFdfOH5PFavg2AjdjM7z8y+Y2afD/WapRtNGr3osovPGq28+7oX6OGfP8HtJqCzyy/v+fz9uvRpFz45qmfQM1nIUswtkg4FfL3qjIL+6BMnud0ENoyXX9ZO+5MDIkwWJNjNbJek10q6I8Tr1Y4TBtNHfb5/o9Uvo/KLxCamrkJdofdJulXS1kCvVzVOGBwGT0pKz6je3nzgyaj8snba9f4brtLtdz8QuZXpWzrYzew6SY+5+0Eze9mUr7tR0o2SdOmlly77bYswbUKOEwb7MRpl33rtFZ2elET4x0H5ZTkhRuzXSHqdmb1G0oqkbWb2UXd/U/OL3H2fpH2StGfPHg/wfYvTZeUFqzTCmLRsbjw0eExePKNy5Gj1S7P8Qt+fbekau7vf5u673H23pBskfW081IHUdJnHYM10PF3WtKMdG5RQpfHgmDQSnxb+bGvvX3M5MOYTdHrZ3b8h6RshX7NW3G72b9Y8RtskNiWa4bX9faA0ORnrhjLQpfPSwbuZ9zFszfAfXeOXPm/HzPo8EBOlmMxQAlhcqMewsc8AqWPEnhFKAMuZ9Bi2RSbl2GcwDO4+F0ewZ6TLEj20G19C1wzleUtZ7DNAygj2jIwH0/gqDTbSTLfISJtRY9ro95NRY8/AqK4uaeISPR4+0N0yS+iY30gL/b4dwZ648c4r6ZxgYiNN/0JNvCIc+n07SjGJ6zLhN61EgzDGP4fX/vqzdPPLnxO3UZWb1O9Z9ruOEXvixpfWTTqytMsuSkw3q8wybYkjR/jGQb9vR7AnruuZGWy/7uaum64+ZzTXpVZLiKSJfj8ZpZgMNJfWcQJkeF2XkbLEcX70xTgYsaN4s0ol7CRFaQj2jFHbDYMySzlYkrqOUkwhuNVdzjJlFjbJxNPs9xy5cQbBngFCOw2TPgfCJB0cuXEGpZgCcTs6XJmKTTLTDdkXmSs5g2AvDNusz9VnuBAm7Ybui8yVnEGwZ2xSYDGCPFvXcJm0vr0LwqRdjL7IuvZ1BPsA+igLtAUWI8izDREuhMlk9MV4CPZMtQUWI8izES7x0BfjYVVMpqYd/MUOyTNLECXxtKOI6ItxEOwBDbl9msezna157ceXIF6+/SJKJQkY4u8HS4PXEewZYzQ0Wahnm3ZFmCA11NgHwLryYXU56hgoGT2+ZzF2JtY+ghwvU91+9wOxm1St2vtiLAR7z9jmHMe8Rx0DJSHYA5p0GFSfj60jsM5I8SAuziI/W4qfUamosQfStmGItbz94xiF9PEZDYtgD2TaDkd2JvaLYxTSx2c0LEoxgfRZcsF0k679zS9/TuxmoYG/H8Mi2ANhw1A8XPv08RkNi2APKMUNQ7VM4KV47ZksPFuKn1GpCPYBlB6qOBdPVkJMTJ4CPWCyEDER7Esa6hFsyAvHBSMmSjEBUXKJJ5Vr35zTKH2ycN75m1Q+oxowYi8cB5DFw/4FxLJ0sJvZJWb2dTM7ZGb3m9ktIRqG5bHbD6hTiBH7mqR3uvvzJe2VdLOZXRngdbOWQu2dCTygTksHu7s/6u73bvz6uKRDknYu+7q5SLnUwQQeUKegk6dmtlvSVZLuCfm6qUp9rTK7/YbX3JRU+mRh2wasWjbFpSzY5KmZPUXSpyW9w92PTfjvN5rZATM7sLq6GurbRpVDqYMJvOHUNKeR23tNoTQ6pCDBbmZbtB7qd7r7ZyZ9jbvvc/c97r5nx44dIb5tdJQ60JTDD/pQanqvOQqxKsYkfUjSIXd/7/JNyse0s9ZTrr2jHzX9oK/pveYoxIj9GklvlvQKM/vuxj+vCfC6WZhU6sjtNhVh1PRQlZrea46Wnjx193+VZAHaUoyUnnPKBNawajrBsO29cqplfOw87QG3qahVqnertZVGOSumBywzRK1SulsdGV+WfPn2i7R1ZUvRd7ME+5LaOkdNt+TASIqPwBv/YXPsxJq2rmyJ26ieEexAQCWPAsdNeq8p3q2O/7DZtlJ+7FFjBxBUapvixlfwlD5alxixV6W0rd6lvR/0p7bSKMHeE8IGSFMNyzEpxQAo0qTzYVJdjhkaI3ZQ0kBQKfejFJdj9oFgR1aaP4RquKVGGKMfNgcPH01uOWYfKMUsINcjQEvafZfbLXWufaY0tZxxQ7BXIrcgnIVjYzFL20AmteWYfSDYK1FaEHIeT1pSuyMpbSAzL4K9EtOCMMcSTS231FhMaQOZeRHslWgLwtxGNs0fQjXcUmMxtd/RsSpmAbmuxpi0+y6n5V9tp/TloGufSX3paertG5l2Zk3qbQ+BEfucchvhzpLTyGbSKX05KK3P5KLLHV1qcwOhEOxzKqV2N+rQOdWqx38I5XJKXyl9Zpoc52lKlsffjISkeN70snI5ICnFI2G7KLHPNI2XyFIfINSAYJ9TruEilVFbzOWHUNN4n7n97gcklfF5SHnN09SCYF9AjuGSs1wm7Kbp2mdSn5if1L5U70hy7i/LosYOJCL1Sda29uU0TzOu1LkBgr1SzQ59101XVz26SUXqk6zT2pfjnoLUf5Aug1JMhXKe7Mr1B1CXdqda0hhJvX3zKnlugGBfQK7hMlJyh85BWx099Yn51Ns3r9J+UDVRiqlQTpuSpLLqoLNu/1MvaaTevnnkPDcwCyP2CuU08sq5bDTJpLulEpY/5tr2Ule4MWKvVC4jr9QnFOeV290S8sSIHUkrrQ6a090S8kWwI2klBuG02//USxqptw/rCHYkr9Q6KOIr9QcVwV6pUjt0jlI/RgD5YfIUiKjk3Y+IhxE7MLDm3RKbxdAHgh3JK7lsVNqqH6SBYAciKnHVD+Ij2IHIWPWD0IJMnprZtWb2fTN70MzeFeI1EV+pD/oFJimpvy8d7GZ2nqQPSHq1pCslvcHMrlz2dQGkoaTAq0WIEfuLJT3o7g+5+0lJn5B0fYDXTQqdG0AuQtTYd0r6YeP3RyS9JMDrAlVoW/VTwrNeEUeIEbtN+DM/54vMbjSzA2Z2YHV1NcC3BQBMEiLYj0i6pPH7XZIeGf8id9/n7nvcfc+OHTsCfFv0raQHXACzlNTfQwT7tyU918yebWbnS7pB0ucCvC4iYqs7RkoKvDal9felg93d1yS9XdKXJB2S9El3v3/Z101NDZ27qbQHXGAxpQVem9L6e5B17O7+RXd/nrv/qrv/VYjXTEktnbuJJ/3El8JgorTAa1Naf6/2dMd5li/W0rmbSn7Qbw5SGUyUFnhtSuvv1Qb7PGrp3ONyeS5qiVIZTJQWeNOU1N85K6YDDmrC0FI69ZGzbPJDsHdE58aQGExgGQQ7kCgGE2nIcQdwtcHOcyZny6kjo5scQ2ooJV2TKoN9tOLgtEtvvGN/p0mhkj50YB70/fxUuSomlRUHANCHKkfsKa04ANowUo4n95JVlSP2mtbmAlhOCjuA51VlsEtlbUaIgQeP5CnHkIoplR3A86o22JsIKdQg15CKKdf5OIJ9CgIfJck1pGLK9TiRKidPgRqxaKC70T4XSVnuAM4q2EPOVOc62w0simMKuhnf53L59ouym4+jFIOFMAmXJxYNzDZeshqN3HNCsIuQmheTcCjZeF1920pWhQ1JBPvUkCLwJ+trEo7J6ni49meM73PZurIldpPmlm2wh+qIbSHFqLRdrisFgK6aJau7bro6uzm5rO4xmicyhtK2UmBS4FOXXMckXFzLLCLILaCwmGyCfdJMdYhbpLaQqnVpWNfQ6HJWeO7nbaSEa4l5ZBPsk2aqQ9W+JoUUo9JhEFjhcC0xkk2wj4+gh5ip5gk2w2qW2m6/+wFJhNQsbWE+b8jz4Jmz5d7vspk8HZ+pljT3ihVm/tM1Pll9/MSp2E2qBgsFypNNsEtnZqol9dYRCf9umisFQlyzEjaFDCX0MlzOkClPNqWYptArVnK/7Qop5C35PK8Vo9SWk9G1/Ng9DwdfRFDrQoEYhpoHyWrEPjLUOuoc168uI+QtedfXGo0+JWW/KaQvzWv57s/e13pns+hIngfPhJXCXX+WwU5H7EfIW/IurzUe/pKe3BTCrt8zmtfy9GnXxphGWzZv0uZNph89/osnR/Kja/mTYyfmun7NDTkpBBOWk1WwN0fQixxmRFhMF/JOqMtrtdXVmcw7W/Nanr9lky57+oXadfEFevd1L9DDP3/inJH8yVOndfhnT3D9KpZVsC9j3tJAjX8ZFr0TmnTNurxW22FLTOadbfxaPmPbinY+9QIdfeLkxJH8pk2mjT/m+lWqmmBfpDRQY7jPeyc07ZrNeq22w5Y4i+Zck65l20j+Pde/kOuXqKEGjtUsPegy88/5MPNb9po1N4E1J6rZ9Tvb+O7o0aau33/Jpfro/h/Mdf1qWiTQt7aNduPHovQ5P5htsM/bEbscEcCyr/mNX7MvfO8RffM/V5cOCnb9tmte27brtMz1YxdqN5OWLk4702rIgWPRpZjx2f15SwN06tm6nl3NSos8UI5czKh/T9toN2SJMdsRe1PIRf+1jxQXuYZt14zb+3CGupaUI5czbaPdkAcLFhHs6F9fO+YI/+U0r1+Ia0k5cjlt8x4jQw0cCXYkicBfzqLXj+Oql9cM71jzFUsFu5n9raTfkXRS0n9Lequ7Px6iYX0gLPrHxFv+ai9HdjXriW6TVsEMZdkR+1ck3ebua2b2N5Juk/RnyzcrjEVChvCf3+iaTVvOReCjJON9/ZnbVrR22s8K+UnzFUPly1KrYtz9y+4+mvbdL2nX8k2a36RF/8zuD48Hg6MWzb4+foTDrddeobtuujrqRruQyx3/QNI/B3y9TtpCg23pYXXZMdfWkfksUJpmX287wiHm8umZwW5m/2Jm90345/rG1/yFpDVJd055nRvN7ICZHVhdXQ3TerWHBtvSw+k64m7ryHwWeantuOpFNPv6tCMcFjmsMISZNXZ3f9W0/25mb5F0naRXuru3fZ2775O0T5L27NnT+nXzaluexex+OPOsbebB4KjFqK8vcoRD35ZdFXOt1idLf9vdnwjTpPlMCw1m98MIsbaZzwIlS61/L7sq5u8l/ZKkr5iZJO139z9aulVzSu2ilib0iHuox4NhOj6H+eVyzZYKdnd/TqiGIG388ATmF+sHADtPEVTqIxkglJT7etHBnvKFrw2fBUqWWv8uItibFzWXGhgA9KWIYEf/Qv6g5HiBNPA5zC+Xa1b0gzaQHo4XSAOfw/xyumYEOwbF8QJp4HOYX07XjGDHoDheIA18DvPL6ZoVV2PPpQZWK44XSAOfw/xyumZFjdhzqoHVLNbBSLVqe5A4n8P8crlmRQV7TjUwAOhLUcGeUw0MAPpSVI09pxoYEBub+MpVVLBLHFaVAwIFucql7xZVigFwri6PNURZCHagYKwUqxPBDhSMlWJ1Kq7GnksNDBhCiMcaIj/FBTuAM1gpVieCHSgcK8XqQ40dAApDsANAYQh2ACgMNXagcKwUqw8jdgAoDMEOAIUh2AGgMAQ7ABSGYAeAwhDsAFAYgh0ACkOwA0BhCHYAKIy5+/Df1GxV0uEF//ftkn4asDk54D3Xgfdch2Xe82XuvmPWF0UJ9mWY2QF33xO7HUPiPdeB91yHId4zpRgAKAzBDgCFyTHY98VuQAS85zrwnuvQ+3vOrsYOAJguxxE7AGCKrILdzK41s++b2YNm9q7Y7embmV1iZl83s0Nmdr+Z3RK7TUMws/PM7Dtm9vnYbRmCmT3VzD5lZg9sfNbFPxnDzP50o0/fZ2YfN7OV2G0Kzcw+bGaPmdl9jT97mpl9xcz+a+PfvTxhPJtgN7PzJH1A0qslXSnpDWZ2ZdxW9W5N0jvd/fmS9kq6uYL3LEm3SDoUuxEDer+ku939Ckm/ocLfu5ntlPQnkva4+wslnSfphrit6sU/Sbp27M/eJemr7v5cSV/d+H1w2QS7pBdLetDdH3L3k5I+Ien6yG3qlbs/6u73bvz6uNb/wu+M26p+mdkuSa+VdEfstgzBzLZJeqmkD0mSu59098fjtmoQmyVdYGabJV0o6ZHI7QnO3b8p6edjf3y9pI9s/Pojkn63j++dU7DvlPTDxu+PqPCQazKz3ZKuknRP3Jb07n2SbpV0OnZDBnK5pFVJ/7hRfrrDzC6K3ag+ufuPJP2dpIclPSrpf939y3FbNZhnuPuj0vrATdIv9/FNcgp2m/BnVSzpMbOnSPq0pHe4+7HY7emLmV0n6TF3Pxi7LQPaLOk3Jf2Du18l6f/U0+15KjbqytdLerakZ0m6yMzeFLdVZckp2I9IuqTx+10q8PZtnJlt0Xqo3+nun4ndnp5dI+l1ZvYDrZfaXmFmH43bpN4dkXTE3Ud3Yp/SetCX7FWS/sfdV939lKTPSPqtyG0ayk/M7FckaePfj/XxTXIK9m9Leq6ZPdvMztf6ZMvnIrepV2ZmWq+9HnL398ZuT9/c/TZ33+Xuu7X++X7N3Yseybn7jyX90Mx+beOPXinpPyI2aQgPS9prZhdu9PFXqvAJ44bPSXrLxq/fIumzfXyTzX28aB/cfc3M3i7pS1qfRf+wu98fuVl9u0bSmyX9u5l9d+PP/tzdvxixTQjvjyXduTFgeUjSWyO3p1fufo+ZfUrSvVpf+fUdFbgD1cw+Lullkrab2RFJfynpryV90sz+UOs/4H6vl+/NzlMAKEtOpRgAQAcEOwAUhmAHgMIQ7ABQGIIdAApDsANAYQh2ACgMwQ4Ahfl/GL67gQLMn3QAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.errorbar(x2, y2, yerr=y2_err, fmt='.')\n", "plt.show()" @@ -1000,15 +726,15 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ "class SineNew(Fittable1DModel):\n", - " a = Parameter()\n", - " b = Parameter()\n", - " c = Parameter()\n", - " d = Parameter()\n", + " a = Parameter(default=1.)\n", + " b = Parameter(default=1.)\n", + " c = Parameter(default=1.)\n", + " d = Parameter(default=1.)\n", " \n", " @staticmethod\n", " def evaluate(x, a, b, c, d):\n", @@ -1027,12 +753,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "**Note** Defining default values for the fit parameters allows to define a model as `model=SineNew()`\n", + "\n", "Same way as always, we are going to fit the data with our **new model**. Once more, the fit is very **sensitive to the initial conditions** due to the non-linearity of the parameters." ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1043,20 +771,9 @@ }, { "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.errorbar(x2, y2, yerr=y2_err, fmt='.')\n", "plt.plot(x2,sine_fit(x2))\n", @@ -1065,44 +782,18 @@ }, { "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: SineNew\n", - "Inputs: ('x',)\n", - "Outputs: ('y',)\n", - "Model set size: 1\n", - "Parameters:\n", - " a b c d \n", - " ----------------- ----------------- ------------------ ------------------\n", - " 3.601869179420031 2.004969267448945 3.7898787256962265 0.9618154155739129\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "print(sine_fit)" ] }, { "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "7.135547467878499" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "calc_reduced_chi_square(sine_fit(x2), x2, y2, y2_err, len(x2), 3)" ] @@ -1135,7 +826,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1147,20 +838,9 @@ }, { "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.errorbar(x3,y3,yerr=y3_err,fmt='.')\n", "plt.show()" From b8a918f88fc81b20ccf1ea9fa105cff98370e2ff Mon Sep 17 00:00:00 2001 From: Rocio Kiman Date: Wed, 26 Sep 2018 12:04:28 -0400 Subject: [PATCH 42/83] Small spelling and grammar corrections --- .../User-Defined-Model.ipynb | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb b/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb index 6a8d88398..72ecfb1b4 100644 --- a/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb +++ b/tutorials/notebooks/User-Defined-Model/User-Defined-Model.ipynb @@ -57,7 +57,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "M dwarfs are low mass stars (Less than half of the mass of the sun). Currently we do not understand completely the physics inside low mass stars because they do not behave the same way higher mass stars do. For example, they stay magnetically active longer than higher mass stars. One way to measure magnetic activity is the height of the [$H\\alpha$](https://en.wikipedia.org/wiki/H-alpha) emission line. It is located at $6563$ Angstroms at the spectrum. " + "M dwarfs are low mass stars (less than half of the mass of the sun). Currently we do not understand completely the physics inside low mass stars because they do not behave the same way higher mass stars do. For example, they stay magnetically active longer than higher mass stars. One way to measure magnetic activity is the height of the [$H\\alpha$](https://en.wikipedia.org/wiki/H-alpha) emission line. It is located at $6563$ Angstroms at the spectrum. " ] }, { @@ -69,7 +69,7 @@ "* Fiber: 216\n", "* MJD: 52797\n", "\n", - "So go ahead, put this numbers in the website and click on Plot to visuzlize the spectrum. Try to localize the $H\\alpha$ line. " + "So go ahead, put this numbers in the website and click on Plot to visualize the spectrum. Try to localize the $H\\alpha$ line. " ] }, { @@ -111,7 +111,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To plot the spectrum we need the flux of light as a function of the wavelength (usually called lambda or $\\lambda$). Note that the wavelength is in log format: loglam, so we are going to calculate $10^\\lambda$ to remove this scale." + "To plot the spectrum we need the flux of light as a function of the wavelength (usually called lambda or $\\lambda$). Note that the wavelength is in log scale: loglam, so we are going to calculate $10^\\lambda$ to remove this scale." ] }, { @@ -128,7 +128,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Each fits file is different according to what the person who made it including depending on how the observation was made. The information about the file usually is in `fitsfile[0].header`. We would like to have the units from the flux and wavelength. For SDSS spectrum we found where the units are in this [SDSS tutorial](https://www.sdss.org/dr12/tutorials/quicklook/#python):" + "Each fits file is different according to what the person who made it wanted to include and how the observation was made. The information about the file usually is in `fitsfile[0].header`. We would like to have the units from the flux and wavelength. For SDSS spectrum we found where the units are in this [SDSS tutorial](https://www.sdss.org/dr12/tutorials/quicklook/#python):" ] }, { @@ -207,7 +207,7 @@ "\n", "Now, we would like to measure the height of this line. Let's use `astropy.modeling` to fit a gaussian to the $H\\alpha$ line. We are going to initialize a gaussian model at the position of the $H\\alpha$ line. The idea is that the gaussian amplitude will tell us the height of the line.\n", "\n", - "We are going to go quick over this part of the tutorial because it involves fitting with `astropy.modeling` and this was explained in the [Models-Quick-Fit tutorial](https://astropy-tutorials.readthedocs.io/en/latest/rst-tutorials/Models-Quick-Fit.html). " + "We are going to go quickly over this part of the tutorial because it involves fitting with `astropy.modeling` and this was explained in the [Models-Quick-Fit tutorial](https://astropy-tutorials.readthedocs.io/en/latest/rst-tutorials/Models-Quick-Fit.html). " ] }, { @@ -266,7 +266,7 @@ "## Exercise \n", "\n", "Go back to the previous plot and try to make the fit work. Note: **Do not spend more than 10 minutes** in this exercise. A couple of ideas to try: \n", - "* Is it not working because of the model to fit we chose? You can find more models to use [here](http://docs.astropy.org/en/stable/modeling/#module-astropy.modeling.functional_models).\n", + "* Is it not working because of the model we chose to fit? You can find more models to use [here](http://docs.astropy.org/en/stable/modeling/#module-astropy.modeling.functional_models).\n", "* Is it not working because of the fitter we chose?\n", "* Is it not working because of the range of data we are fitting? \n", "* Is it not working because how we are plotting the data? " @@ -384,7 +384,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Conclusions:** What was the difference between the first simple Gaussian and the compound model? The linear model that we summed up to the gaussian model allowed the base of the Gaussian fit to have a slope and a background level. Normal Gaussians go to zero at $\\pm \\inf$; this one doesn't. " + "**Conclusions:** What was the difference between the first simple Gaussian and the compound model? The linear model that we added up to the gaussian model allowed the base of the Gaussian fit to have a slope and a background level. Normal Gaussians go to zero at $\\pm \\inf$; this one doesn't. " ] }, { @@ -540,7 +540,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "An **Exponential Model** is no provided by Astropy models. Let's see one example of basic custom model for this case. First, let's simulate a dataset that follows an exponential:" + "An **Exponential Model** is not provided by Astropy models. Let's see one example of basic custom model for this case. First, let's simulate a dataset that follows an exponential:" ] }, { @@ -594,7 +594,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we have one more available model to use in the same way we always fit data. " + "Now we have one more available model to use in the same way we fit data with `astropy.modeling`. " ] }, { @@ -674,7 +674,7 @@ "metadata": {}, "source": [ "## Exercise\n", - "Modify the initial conditions of the fit and check yourself the dependance of the non-linear paramaters. You can check it by looking at the Reduced Chi Square value: if it gets closer to 1 the fit is better and vice versa. To compare the fits you can take note of the Reduced Chi Square value you get for each initial condition." + "Modify the initial conditions of the fit and check yourself the relation between the best fit parameters and the initial conditions for the previous example. You can check it by looking at the Reduced Chi Square value: if it gets closer to 1 the fit is better and vice versa. To compare the quality of the fits you can take note of the Reduced Chi Square value you get for each initial condition." ] }, { @@ -688,7 +688,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "What if we want to use a model from `astropy.modeling`, but with a different set of parameters? One example is the [Sine Model](http://docs.astropy.org/en/stable/api/astropy.modeling.functional_models.Sine1D.html#astropy.modeling.functional_models.Sine1D). It has a very particular definition of the frequency and phase. Let's see an exaple for the full custom model. Again, first let's create a simulated dataset." + "What if we want to use a model from `astropy.modeling`, but with a different set of parameters? One example is the [Sine Model](http://docs.astropy.org/en/stable/api/astropy.modeling.functional_models.Sine1D.html#astropy.modeling.functional_models.Sine1D). It has a very particular definition of the frequency and phase. Let's define a new Sine function with a full custom model. Again, first let's create a simulated dataset." ] }, { @@ -721,7 +721,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For this case we will define a full model to be able to choose the parameters we want to fit. In this type of custom model we can set the **derivative of the function**, which is used by different [fitters](http://docs.astropy.org/en/stable/modeling/#id21), for example the `LevMarLSQFitter()`." + "For the full custom model we can easily set the **derivative of the function**, which is used by different [fitters](http://docs.astropy.org/en/stable/modeling/#id21), for example the `LevMarLSQFitter()`." ] }, { @@ -755,7 +755,7 @@ "source": [ "**Note** Defining default values for the fit parameters allows to define a model as `model=SineNew()`\n", "\n", - "Same way as always, we are going to fit the data with our **new model**. Once more, the fit is very **sensitive to the initial conditions** due to the non-linearity of the parameters." + "We are going to fit the data with our **new model**. Once more, the fit is very **sensitive to the initial conditions** due to the non-linearity of the parameters." ] }, { From 07f3b8ae31fd8eb2cc878260e98e1b125309af16 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 1 Oct 2018 15:24:42 -0400 Subject: [PATCH 43/83] edit coordinates-intro --- .../Coordinates-Intro/Coordinates-Intro.ipynb | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) mode change 100644 => 100755 tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb diff --git a/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb b/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb old mode 100644 new mode 100755 index d7611322e..a25c97731 --- a/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb +++ b/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb @@ -19,7 +19,7 @@ "\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." + "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." ] }, { @@ -66,7 +66,7 @@ "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):" + "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):" ] }, { @@ -155,7 +155,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This object we 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:" + "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:" ] }, { @@ -200,7 +200,7 @@ "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 have to give units, though, if they aren't part of the string itself." + "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." ] }, { @@ -231,7 +231,7 @@ "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 HCG7 is in the SDSS footprint and has good image quality.\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. " ] @@ -287,9 +287,9 @@ "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 some web site like [SIMBAD](http://simbad.u-strasbg.fr/simbad/) that will show you sexigesimal coordinates for the object.\n", + "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)" + "(Hint: `SkyCoord.to_string()` might be worth reading up on.)" ] }, { @@ -307,7 +307,7 @@ "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``)" + "(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``.)" ] }, { @@ -322,7 +322,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -336,7 +336,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" } }, "nbformat": 4, From 945fc444386f09e88ffd018a05f00f346c6560a5 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 1 Oct 2018 15:24:49 -0400 Subject: [PATCH 44/83] edit coordinates-transform --- .../Coordinates-Transform.ipynb | 80 ++++++++++++------- 1 file changed, 49 insertions(+), 31 deletions(-) mode change 100644 => 100755 tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb diff --git a/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb b/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb old mode 100644 new mode 100755 index 126a363de..c422584a8 --- a/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb +++ b/tutorials/notebooks/Coordinates-Transform/Coordinates-Transform.ipynb @@ -19,7 +19,7 @@ "\n", "## Summary\n", "\n", - "Demonstrates how to define astronomical coordinates using the `astropy.coordinates` \"frame\" classes. Then shows how to transform between the different built-in coordinate frames, such as from ICRS (ra, dec) to Galactic (l, b)." + "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)." ] }, { @@ -86,11 +86,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In Astropy, the most common object you'll work with for coordinates is `SkyCoord`. A `SkyCoord` can be created most easily directly from angles as shown below. \n", + "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 will be converting between frames. Let's start in the ICRS frame (which happens to be the default). \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 will 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" + "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:" ] }, { @@ -154,9 +154,9 @@ "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", + "`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 bit to understand is that all coordinates in astropy are in particular \"frames\", and we can transform between a specific `SkyCoord` object from one frame to another. For example, we can transform our previously-defined center of HCG7 from ICRS to Galactic coordinates:" + "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:" ] }, { @@ -174,7 +174,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "There are three different ways of transforming coordinates. Each has it's pros and cons, but 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 HCG7 in galactic coordinates." + "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." ] }, { @@ -199,14 +199,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Transforming coordinates using the transform_to() method and other Coordinate object" + "#### 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 which internally does the same as what's in the cell below: 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." + "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." ] }, { @@ -252,7 +252,7 @@ "source": [ "We can transform to many coordinate frames and equinoxes. \n", "\n", - "By default these coordinates are available:\n", + "These coordinates are available by default:\n", "\n", " - ICRS\n", " - FK5\n", @@ -295,7 +295,7 @@ "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." + "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." ] }, { @@ -323,23 +323,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { - "collapsed": true, "tags": [ "raises-exception" ] }, - "outputs": [], + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'hcg7_center' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mhcg7_center\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgalactic\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mra\u001b[0m \u001b[0;31m# should fail because Galactic coordinates are l/b not RA/Dec\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'hcg7_center' is not defined" + ] + } + ], "source": [ - "hcg7_center.galactic.ra # should fail because galactic coordinates are l/b not RA/Dec" + "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 the l and b attributes:" + "Instead, we now have access to the l and b attributes:" ] }, { @@ -373,7 +384,7 @@ "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 will need to import a few more specific modules:" + "We'll need to import a few more specific modules:" ] }, { @@ -392,7 +403,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Lets first see the sky position at Kitt Peak National Observatory in Arizona." + "Let's first see the sky position at Kitt Peak National Observatory in Arizona." ] }, { @@ -447,7 +458,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's check the altitude at 1am UTC, which is 6pm AZ mountain time" + "Let's check the altitude at 1 AM UTC, which is 6 PM AZ mountain time:" ] }, { @@ -504,7 +515,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To look at just the altitude we can `alt' attribute:" + "To look at just the altitude we can `alt` attribute:" ] }, { @@ -522,7 +533,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Alright, it's at 55 degrees at 6pm, but that's pretty early to be observing. We could just try various times one at a time to see if the airmass is at a darker time, but we can do better: lets try to create an airmass plot." + "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." ] }, { @@ -550,7 +561,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Great! Looks like it's at the lowest airmass in another hour or so (7pm). But might 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. Lets use it to check if we're in 18-degree twilight or not." + "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." ] }, { @@ -575,14 +586,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Looks like it's just below 18 degrees at 7, so you should be good to go!" + "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." + "We can also look at the object altitude at the present time and date:" ] }, { @@ -617,7 +628,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Try to actually compute to some arbitrary precision (rather than eye-balling on a plot) when 18 degree twilight or sunrise/sunset hits on that night." + "Try to compute to some arbitrary precision (rather than eyeballing on a plot) when 18 degree twilight or sunrise/sunset hits on that night." ] }, { @@ -640,9 +651,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Try converting the HCG7 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", + "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 the list above. One of those will do what you need if you give it the right frame attributes." + "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." ] }, { @@ -665,7 +676,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Try looking at the altitude of HCG7 at another observatory." + "Try looking at the altitude of HCG 7 at another observatory." ] }, { @@ -688,15 +699,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For lots 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", + "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": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -710,7 +728,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" } }, "nbformat": 4, From 41f37d2a54e99f41bc16fb73df4222721728826d Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 1 Oct 2018 15:24:59 -0400 Subject: [PATCH 45/83] edit fits cubes --- .../notebooks/FITS-cubes/FITS-cubes.ipynb | 92 +++++++++---------- 1 file changed, 45 insertions(+), 47 deletions(-) mode change 100644 => 100755 tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb diff --git a/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb b/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb old mode 100644 new mode 100755 index 2f72d5b70..6432c0649 --- a/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb +++ b/tutorials/notebooks/FITS-cubes/FITS-cubes.ipynb @@ -14,18 +14,18 @@ "* Read and plot slices across different dimensions of a data cube\n", "* Compare different data sets (2D and 3D) by overploting contours\n", "* Transform coordinate projections and match data resolutions with `reproject`\n", - "* Create intensity moment maps with spectral_cube\n", + "* Create intensity moment maps with `spectral_cube`\n", "\n", "## Keywords\n", "FITS, radio astronomy, data cubes, contour plots\n", "\n", "## Summary\n", "\n", - "In the tutorial we will visualize 2D and 3D data sets in different coordinates (galactic and equatorial). \n", + "In this tutorial we will visualize 2D and 3D data sets in different coordinates (Galactic and equatorial). \n", "\n", - "This tutorial will walk you though a simple visual analysis of the Small Magellanic Cloud (SMC) using HI 21cm emission and a Herschel 250 micron map. We will learn how to read in data from vizier, query and download matching data from Herschel using astroquery, and plot the resulting images in a multitude of ways. \n", + "The tutorial will walk you though a simple visual analysis of the Small Magellanic Cloud (SMC) using HI 21cm emission and a Herschel 250 micron map. We will learn how to read in data from VizieR, query and download matching data from Herschel using astroquery, and plot the resulting images in a multitude of ways. \n", "\n", - "The primary libraries we will be using are: [astroquery](http://www.astropy.org/astroquery/), [spectral_cube](https://spectral-cube.readthedocs.io/en/latest/), [reproject](https://reproject.readthedocs.io/en/stable/#), [matplotlib](https://matplotlib.org/), and [aplpy](https://aplpy.github.io/)) \n", + "The primary libraries we'll be using are: [astroquery](http://www.astropy.org/astroquery/), [spectral_cube](https://spectral-cube.readthedocs.io/en/latest/), [reproject](https://reproject.readthedocs.io/en/stable/#), [matplotlib](https://matplotlib.org/), and [aplpy](https://aplpy.github.io/)) \n", "\n", "They can be installed using conda:\n", "- `conda install -c astropy astroquery`\n", @@ -69,12 +69,12 @@ "source": [ "## Download the HI Data\n", "\n", - "We will be using HI 21 cm emission data from the [HI4Pi survey](http://adsabs.harvard.edu/cgi-bin/bib_query?arXiv:1610.06175). We want to look at neutral gas emission from the Magellanic Clouds, learn about the kinematics of the system and column densities. Using the vizier catalog, we have found a relevant data cube to use covering this region of the sky. You can also download an allsky data cube, but this is a very large file, so picking out sub-sections can be useful!\n", + "We'll be using HI 21 cm emission data from the [HI4Pi survey](http://adsabs.harvard.edu/cgi-bin/bib_query?arXiv:1610.06175). We want to look at neutral gas emission from the Magellanic Clouds and learn about the kinematics of the system and column densities. Using the VizieR catalog, we've found a relevant data cube to use that covers this region of the sky. You can also download an allsky data cube, but this is a very large file, so picking out sub-sections can be useful!\n", "\n", "For us, the [relevant file is available via ftp from CDS Strasbourg](http://cdsarc.u-strasbg.fr/vizier/ftp/cats/J/A+A/594/A116/CUBES/GAL/TAN/TAN_C14.fits). \n", - "This will be a FITS data cube in Galactic Coordinates using the Tangential Sky projection.\n", + "This will be a FITS data cube in Galactic coordinates using the tangential sky projection.\n", "\n", - "Sure, we can just download this file directly, but why do that when we can load it up via one line of code, and have it ready to use in our cache!\n", + "Sure, we could download this file directly, but why do that when we can load it up via one line of code and have it ready to use in our cache?\n", "\n", "## Download the HI Fits Cube" ] @@ -99,10 +99,10 @@ "source": [ "Awesome, so now we have a copy of the data file (a FITS file). So how do we do anything with it?\n", "\n", - "Lucky for us, the [spectral_cube](https://spectral-cube.readthedocs.io/en/latest/) package does a lot of the nitty gritty work for us to manipulate this data, and even quickly look through it. \n", + "Luckily for us, the [spectral_cube](https://spectral-cube.readthedocs.io/en/latest/) package does a lot of the nitty gritty work for us to manipulate this data and even quickly look through it. \n", "So let's open up our data file and read in the data as a SpectralCube!\n", "\n", - "The variable 'cube' has the data using SpectralCube and 'hi_data' is the data cube form the fits file without the special formating form SpectralCube" + "The variable `cube` has the data using SpectralCube and `hi_data` is the data cube from the FITS file without the special formating from SpectralCube." ] }, { @@ -131,7 +131,7 @@ "`\n", "\n", "\n", - "So what does this SpectralCube object actually look like? Let's find out! The first check is to just print out the cube." + "So what does this SpectralCube object actually look like? Let's find out! The first check is to print out the cube." ] }, { @@ -151,17 +151,17 @@ "source": [ "### Some things to pay attention to here:\n", "\n", - "As we know, a data cube has three axes. In this case, there is Galactic Longitude (x), Galactic Latitude (y), and a spectral axis in terms a LSR Velocity (z - listed as s with spectral_cube).\n", + "As we know, a data cube has three axes. In this case, there is Galactic Longitude (x), Galactic Latitude (y), and a spectral axis in terms of a LSR Velocity (z - listed as s with `spectral_cube`).\n", "\n", - "The data hidden in the cube lives as an ndarray with shape (n_s, n_y, n_x) so that axis 0 corresponds with the Spectral Axis, axis 1 corresponds with the Galactic Latitude Axis, an daxis 2 corresponds with the Galactic Longitude Axis. \n", + "The data hidden in the cube lives as an ndarray with shape (n_s, n_y, n_x) so that axis 0 corresponds with the Spectral Axis, axis 1 corresponds with the Galactic Latitude Axis, and axis 2 corresponds with the Galactic Longitude Axis. \n", "\n", - "When we `print(cube)`, we can see the shape, size, and units of all axes as well as the data stored in the cube. With this cube, the units of the data in the cube are temperatures (K). The spatial axes are in degrees, and the Spectral Axis is in (meters / second)\n", + "When we `print(cube)` we can see the shape, size, and units of all axes as well as the data stored in the cube. With this cube, the units of the data in the cube are temperatures (K). The spatial axes are in degrees and the Spectral Axis is in (meters / second).\n", "\n", - "cube also contains information about the coordinates corresponding to the data in the form of a WCS (World Coordinate System) object. \n", + "The cube also contains information about the coordinates corresponding to the data in the form of a WCS (World Coordinate System) object. \n", "\n", "SpectralCube is clever and keeps all the data masked until you really need it so that you can work with large sets of data. So let's see what our data actually looks like!\n", "\n", - "SpectralCube has a `quicklook()` method which can give a handy sneak peak preview of the data. It is useful when you just need to glance at a slice or spectrum without knowing any other information (say, to make sure the data isn't corrupted or is looking at the right region. \n", + "SpectralCube has a `quicklook()` method which can give a handy sneak-peek preview of the data. It's useful when you just need to glance at a slice or spectrum without knowing any other information (say, to make sure the data isn't corrupted or is looking at the right region.) \n", "\n", "To do this, we simply have to index our cube along one axis (for a slice) or two axes (for a spectrum):" ] @@ -219,16 +219,16 @@ "source": [ "## Make a smaller cube, focusing on the Magellanic Clouds\n", "\n", - "The HI data cube we downloaded is bigger than we actually need it to be. Let's try zooming in on just the part we need and make a new sub_cube. \n", + "The HI data cube we downloaded is bigger than we actually need it to be. Let's try zooming in on just the part we need and make a new `sub_cube`. \n", "\n", - "The easiest way to do this is just cut out part of cube with indices, but how do we know which index correpsponds with which coordinate value?\n", + "The easiest way to do this is to cut out part of the cube with indices, but how do we know which index corresponds with which coordinate value?\n", "\n", - "Well, we can extract the world coordinates from the cube using the .world() method. \n", + "Well, we can extract the world coordinates from the cube using the `.world()` method. \n", "
\n", - "Warning: using .world() will extract coordinates from every position you ask for. This can a TON of data if you don't slice through the cube. One work around, is to slice along two axies, and extract coordinates just along a single dimension.\n", + "Warning: using .world() will extract coordinates from every position you ask for. This can be a TON of data if you don't slice through the cube. One work around is to slice along two axes and extract coordinates just along a single dimension.\n", "
\n", "\n", - "The output of .world is an astropy Quanity which includes units. Extract these astropy Quantity objects by slicing the data." + "The output of `.world()` is an Astropy Quanity which includes units. Extract these Astropy Quantity objects by slicing the data." ] }, { @@ -247,7 +247,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now find the proper indices to cut our data along to extract a sub_cube" + "Now find the proper indices to cut our data along to extract a `sub_cube`." ] }, { @@ -287,7 +287,7 @@ "source": [ "## Cut along the Spectral Axis:\n", "\n", - "We don't really need data from such a large velocity range so let's just extract a little slab. We can do this easily, in any units that we want using the .spectral_slab() method" + "We don't really need data from such a large velocity range so let's just extract a little slab. We can do this easily, in any units that we want using the `.spectral_slab()` method." ] }, { @@ -311,10 +311,8 @@ "\n", "Moment maps are a useful analysis tool to study data cubes. In short, a moment is a weighted integral along an axis (typically the Spectral Axis) that can give information about the total Intensity (or column density), mean velocity, or velocity dispersion along lines of sight. \n", "\n", - "SpectralCube makes this very simple with the .moment() method. \n", - "We can also convert to friendlier spectral units of km/s\n", - "\n", - "Also, these new 2D projections can be saved as new fits files, complete with modified WCS information" + "SpectralCube makes this very simple with the `.moment()` method. \n", + "We can convert to friendlier spectral units of km/s and these new 2D projections can be saved as new FITS files, complete with modified WCS information as well." ] }, { @@ -354,11 +352,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "[APLpy FITSFigure](http://aplpy.readthedocs.io/en/stable/api/aplpy.FITSFigure.html) provides one convenient way to quickly make plots of FITS data cube slices or of 2D FITS images\n", + "[APLpy FITSFigure](http://aplpy.readthedocs.io/en/stable/api/aplpy.FITSFigure.html) provides one convenient way to quickly make plots of FITS data cube slices or of 2D FITS images.\n", "\n", - "We'll first initial a figure with matplotlib, then add the APLpy FITSFigure as an axis object so we can manipulate labels, or overplot different things later on. \n", + "We'll first initialize a figure with matplotlib, and then add the APLpy FITSFigure as an axis object so we can manipulate labels or overplot different things later on. \n", "\n", - "the FITSFigure object provides a quick and convenient way to display FITS images as colorscale maps or contour plots. Let's try out both options and even a combined version\n", + "The FITSFigure object provides a quick and convenient way to display FITS images as colorscale maps or contour plots. Let's try out both options and then a combined version as well.\n", "\n", "FITSFigure requires an HDU object as its argument which can easily be accessed with SpectralCube with `cube.hdu`" ] @@ -403,7 +401,7 @@ "\n", "## Display the Moment Maps (better)\n", "\n", - "The [WCSAxes](http://docs.astropy.org/en/stable/visualization/wcsaxes/) framework in astropy allows us to easily display images with different coordinate axes and projections. It can do the same things that APLpy does, but in a more generalized and easy to streamline way. \n", + "The [WCSAxes](http://docs.astropy.org/en/stable/visualization/wcsaxes/) framework in Astropy allows us to easily display images with different coordinate axes and projections. It can do the same things that APLpy does, but in a more generalized and easy to streamline way. \n", "\n", "As long as we have a WCS object associated with the data, it is easy to transfer that projection to a matplotlib axis. SpectralCube makes it easy to access just the WCS object associated with a cube object. " ] @@ -423,7 +421,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As expected, the first moment image we created only has two axes (Galactic Longitude and Galactic Latitude). We can pass in this WCS object directly into a matplotlib axis instance" + "As expected, the first moment image we created only has two axes (Galactic Longitude and Galactic Latitude). We can pass in this WCS object directly into a matplotlib axis instance." ] }, { @@ -466,7 +464,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As you can see, the WCSAxes framework is very powerful and makes it as easy as making any matplotlib style plot. " + "As you can see, the WCSAxes framework is very powerful and as easy as making any matplotlib style plot. " ] }, { @@ -478,7 +476,7 @@ "\n", "## Display a Longitude-Velocity Slice\n", "\n", - "The [WCSAxes](http://docs.astropy.org/en/stable/visualization/wcsaxes/) framework in astropy also lets us slice the data accross different dimensions. It is often useful to slice along a single latitude and display an image showing longtitude and velocity information only (position-velocity or longitude-velocity diagram.)\n", + "The [WCSAxes](http://docs.astropy.org/en/stable/visualization/wcsaxes/) framework in Astropy also lets us slice the data accross different dimensions. It is often useful to slice along a single latitude and display an image showing longtitude and velocity information only (position-velocity or longitude-velocity diagram).\n", "\n", "This can be done by specifying the `slices` keyword and selecting the appropriate slice through the data. \n", "\n", @@ -562,12 +560,12 @@ "source": [ "## Find and Download a Herschel Image\n", "\n", - "This is great, but we want to compare the HI emission data with Herschel 350 micron emission to trace some dust. This can be done easily with [astroquery](http://www.astropy.org/astroquery/). \n", + "This is great, but we want to compare the HI emission data with Herschel 350 micron emission to trace some dust. This can be easily done with [astroquery](http://www.astropy.org/astroquery/). \n", "We can query for the data by mission, take a quick look at the table of results, and download data after selecting a specific wavelength or filter. \n", "\n", "Since we are looking for Herschel data from an ESA mission, we will use the [astroquery.ESASky](http://astroquery.readthedocs.io/en/latest/esasky/esasky.html) class.\n", "\n", - "Specifically, the ESASKY.query_region_maps() method allows us to search for a specific region of the sky either using an astropy SkyCoord object or a string specifying an object name. In this case, we can just search for the SMC. A radius to search around the object can also be specified." + "Specifically, the `ESASKY.query_region_maps()` method allows us to search for a specific region of the sky either using an Astropy SkyCoord object or a string specifying an object name. In this case, we can just search for the SMC. A radius to search around the object can also be specified." ] }, { @@ -588,7 +586,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here, result is a TableList which contains 24 Herschel data products that can be downloaded. We can see what information is available in this Table List by examining the keys in the Herschel Table" + "Here, the result is a TableList which contains 24 Herschel data products that can be downloaded. We can see what information is available in this TableList by examining the keys in the Herschel Table." ] }, { @@ -624,7 +622,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Lucky for us, there is an observation made with three filters, 250,350, and 500 microns. This is the object we will want to download. One way to do this is by making a boolean mask to select out the Table entry corresponding with the desired filter. Then, the ESASky.get_maps() method will download our data provided a TableList argument." + "Luckily for us, there is an observation made with three filters: 250,350, and 500 microns. This is the object we will want to download. One way to do this is by making a boolean mask to select out the Table entry corresponding with the desired filter. Then, `the ESASky.get_maps()` method will download our data provided a TableList argument." ] }, { @@ -674,7 +672,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "With this, it's just as easy as before to display this image using matplotlib with [WCSAxes](http://docs.astropy.org/en/stable/visualization/wcsaxes/index.html) and the LogNorm() object so we can log scale our image. " + "With this, it's just as easy as before to display this image using matplotlib with [WCSAxes](http://docs.astropy.org/en/stable/visualization/wcsaxes/index.html) and the `LogNorm()` object so we can log scale our image. " ] }, { @@ -716,9 +714,9 @@ "source": [ "## Overlay HI 21 cm Contours on the IR 30 micron Image\n", "\n", - "To visually compare the neutral gas and dust as traced by HI 21 cm emission and IR 30 micron emission, we can use contours and colorscale images produced using the [WCSAxes](http://docs.astropy.org/en/stable/visualization/wcsaxes/index.html) framework and the .get_transform() method. \n", + "To visually compare the neutral gas and dust as traced by HI 21 cm emission and IR 30 micron emission, we can use contours and colorscale images produced using the [WCSAxes](http://docs.astropy.org/en/stable/visualization/wcsaxes/index.html) framework and the `.get_transform()` method. \n", "\n", - "The [WCSAxes.get_transform()](http://docs.astropy.org/en/stable/api/astropy.visualization.wcsaxes.WCSAxes.html#astropy.visualization.wcsaxes.WCSAxes.get_transform) method returns a transformation from a specified frame to the pixel/data coordinates. It accepts a string specifying the frame or a wcs object. " + "The [WCSAxes.get_transform()](http://docs.astropy.org/en/stable/api/astropy.visualization.wcsaxes.WCSAxes.html#astropy.visualization.wcsaxes.WCSAxes.get_transform) method returns a transformation from a specified frame to the pixel/data coordinates. It accepts a string specifying the frame or a WCS object. " ] }, { @@ -782,11 +780,11 @@ "source": [ "## Using reproject to match image resolutions\n", "\n", - "The [reproject](https://reproject.readthedocs.io/en/stable/) package is a powerful tool allowing for image data to be transformed into a variety of projections and resolutions. It's most powerful use is in fact to transform data from one map projection to another without losing any information and properly conserving flux values within the data. It even has a method to perform a fast reprojection if you are not too concerned with the absolute accuracy of the data values. \n", + "The [reproject](https://reproject.readthedocs.io/en/stable/) package is a powerful tool allowing for image data to be transformed into a variety of projections and resolutions. It's most powerful use is in fact to transform data from one map projection to another without losing any information and still properly conserving flux values within the data. It even has a method to perform a fast reprojection if you are not too concerned with the absolute accuracy of the data values. \n", "\n", - "A simple use of the reproject package is to simply scale down (or up) resolutions of an image artificially. This could be a useful step if you are trying to get emission line ratios or directly compare the Intensity or Flux from on tracer to that of another tracer in the same physical pointing of the sky. \n", + "A simple use of the reproject package is to scale down (or up) resolutions of an image artificially. This could be a useful step if you are trying to get emission line ratios or directly compare the Intensity or Flux from a tracer to that of another tracer in the same physical point of the sky. \n", "\n", - "From our previously made images, it should be clear that the IR Herschel image has a higher spatial resolution than that of the HI data cube. We can look more into this by taking a better look at both header objects and using reproject to downscale the Herschel Image. " + "From our previously made images, it should be clear that the IR Herschel Image has a higher spatial resolution than that of the HI data cube. We can look into this more by taking a better look at both header objects and using reproject to downscale the Herschel Image. " ] }, { @@ -834,7 +832,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "`rescaled_herschel_imagehdu` will now behave just like the other fits images we have been working with, but now with a degraded resolution matching the HI data. This includes having its native coordinates in Galactic rather than RA and Dec. " + "`rescaled_herschel_imagehdu` will now behave just like the other FITS images we have been working with, but now with a degraded resolution matching the HI data. This includes having its native coordinates in Galactic rather than RA and Dec. " ] }, { @@ -902,7 +900,7 @@ "\n", "## Challenge:\n", "\n", - "Use [reproject](https://reproject.readthedocs.io/en/stable/#) and WCS to create a new WCS object in a different map projection and see distortions in the image can change. " + "Use [reproject](https://reproject.readthedocs.io/en/stable/#) and WCS to create a new WCS object in a different map projection and see how distortions in the image can change. " ] }, { @@ -935,7 +933,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -949,7 +947,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" } }, "nbformat": 4, From e856fe89f5dcb508914df504844ae329e48bf524 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 1 Oct 2018 15:25:07 -0400 Subject: [PATCH 46/83] edit fits header --- .../notebooks/FITS-header/FITS-header.ipynb | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) mode change 100644 => 100755 tutorials/notebooks/FITS-header/FITS-header.ipynb diff --git a/tutorials/notebooks/FITS-header/FITS-header.ipynb b/tutorials/notebooks/FITS-header/FITS-header.ipynb old mode 100644 new mode 100755 index 30908b46b..820526204 --- a/tutorials/notebooks/FITS-header/FITS-header.ipynb +++ b/tutorials/notebooks/FITS-header/FITS-header.ipynb @@ -25,10 +25,10 @@ "which was formerly released separately as `pyfits`. If you have used \n", "`pyfits` to manipulate FITS files then you may already be familiar \n", "with the features and syntax of the package. We start by importing\n", - "the subpackage into our local namespace, and allows us to access the\n", + "the subpackage into our local namespace, which allows us to access the\n", "functions and classes as `fits.name_of_function()`. For example, \n", "to access the `getdata()` function, we _don't_ have to do \n", - "`astropy.io.fits.getdata()` and can instead simple use `fits.getdata()`.\n", + "`astropy.io.fits.getdata()` and can instead simply use `fits.getdata()`.\n", "You may run across old documentation or tutorials that use the name \n", "`pyfits`. Such examples will begin with `import pyfits` and then \n", "the command `fits.getdata()` (for example) would be written as \n", @@ -88,7 +88,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "but `getdata()` can get both the data and the header, so it is a useful \n", + "But `getdata()` can get both the data and the header, so it's a useful \n", "command to remember. Since the primary HDU of a FITS file must contain image data, \n", "the data is now stored in a ``numpy`` array. The header is stored in an \n", "object that acts like a standard Python dictionary. " @@ -157,7 +157,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Two common more complicated cases are worth mentioning (but if your needs \n", + "Two common and more complicated cases are worth mentioning (but if your needs \n", "are much more complex, you should consult the full documentation http://docs.astropy.org/en/stable/io/fits/). \n", "\n", "The first complication is that the FITS file you're examining and \n", @@ -178,8 +178,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This will get you the data and header associated with the index=1 extension \n", - "in the FITS file. Without specifying a number, getdata() will get the \n", + "This will get you the data and header associated with the `index=1` extension \n", + "in the FITS file. Without specifying a number, `getdata()` will get the \n", "0th extension (equivalent to saying `ext=0`)." ] }, @@ -188,7 +188,7 @@ "metadata": {}, "source": [ "Another useful tip is if you want to overwrite an existing FITS \n", - "file. By default, writeto() won't let you do this, so you need to \n", + "file. By default, `writeto()` won't let you do this, so you need to \n", "explicitly give it permission using the `clobber` keyword argument:" ] }, @@ -205,7 +205,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A final example is if you want to make a small change to a FITS file, for example updating a header keyword, but you do not want to read in and write out the whole file, which can take a while. You can use the `mode='update'` read mode to do this:" + "A final example is if you want to make a small change to a FITS file, like updating a header keyword, but you don't want to read in and write out the whole file, which can take a while. Instead you can use the `mode='update'` read mode to do this:" ] }, { @@ -229,13 +229,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Read in the file you just wrote, and add three header keywords:\n", + "Read in the file you just wrote and add three header keywords:\n", "\n", "1. 'RA' for the Right Ascension of M31\n", "2. 'DEC' for the Declination of M31\n", - "3. 'RADECSRC' with text indicating where you found the RA/Dec (web URL, textbook name, your photographic memory, etc.).\n", + "3. 'RADECSRC' with text indicating where you found the RA/Dec (web URL, textbook name, your photographic memory, etc.)\n", "\n", - "then write the updated header back out to a new file. " + "Then write the updated header back out to a new file: " ] }, { @@ -256,7 +256,7 @@ "published": true }, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -270,7 +270,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" } }, "nbformat": 4, From 5389095948b270fe8fc6979a28768989a67f4e64 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 1 Oct 2018 15:25:15 -0400 Subject: [PATCH 47/83] edit fits images --- .../notebooks/FITS-images/FITS-images.ipynb | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) mode change 100644 => 100755 tutorials/notebooks/FITS-images/FITS-images.ipynb diff --git a/tutorials/notebooks/FITS-images/FITS-images.ipynb b/tutorials/notebooks/FITS-images/FITS-images.ipynb old mode 100644 new mode 100755 index 91533a718..e0ceec29d --- a/tutorials/notebooks/FITS-images/FITS-images.ipynb +++ b/tutorials/notebooks/FITS-images/FITS-images.ipynb @@ -17,7 +17,7 @@ "\n", "## Summary\n", "\n", - "Demonstrates the use of `astropy.utils.data` to download a data file, uses `astropy.io.fits` to open the file, uses `matplotlib` to view the image with different color scales and stretches and to make histrograms. Also includes a demonstration of simple image stacking." + "This tutorial demonstrates the use of `astropy.utils.data` to download a data file, then uses `astropy.io.fits` to open the file, and lastly uses `matplotlib` to view the image with different color scales and stretches and to make histrograms. In this tutorial we've also included a demonstration of simple image stacking." ] }, { @@ -63,7 +63,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "I will open the FITS file and find out what it contains." + "Let's open the FITS file to find out what it contains." ] }, { @@ -80,7 +80,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Generally the image information is located in the PRIMARY block. The blocks are numbered and can be accessed by indexing hdu_list." + "Generally, the image information is located in the PRIMARY block. The blocks are numbered and can be accessed by indexing hdu_list." ] }, { @@ -96,7 +96,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You data is now stored as a 2-D numpy array. Want to know the dimensions of the image? Just look at the `shape` of the array." + "Our data is now stored as a 2-D numpy array. But how do we know the dimensions of the image? We can simply look at the `shape` of the array." ] }, { @@ -113,7 +113,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "At this point, we can just close the FITS file. We have stored everything we wanted to a variable." + "Great! At this point, we can close the FITS file because we've stored everything we wanted to a variable." ] }, { @@ -174,7 +174,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's get some basic statistics about our image" + "Let's get some basic statistics about our image:" ] }, { @@ -200,14 +200,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To make a histogram with `matplotlib.pyplot.hist()`, I need to cast the data from a 2-D to array to something one dimensional." + "To make a histogram with `matplotlib.pyplot.hist()`, we'll need to cast the data from a 2-D array to something one dimensional." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "In this case, I am using the ndarray.flatten() to return a 1-D numpy array." + "In this case, let's use the `ndarray.flatten()` to return a 1-D numpy array." ] }, { @@ -239,7 +239,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Want to use a logarithmic color scale? To do so we need to load the `LogNorm` object from `matplotlib`." + "What if we want to use a logarithmic color scale? To do so, we'll need to load the `LogNorm` object from `matplotlib`." ] }, { @@ -275,14 +275,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You can perform math with the image data like any other numpy array. In this particular example, I will stack several images of M13 taken with a ~10'' telescope." + "You can also perform math with the image data like any other numpy array. In this particular example, we'll stack several images of M13 taken with a ~10'' telescope." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "I open a series of FITS files and store the data in a list, which I've named `image_concat`." + "Let's start by opening a series of FITS files and store the data in a list, which we've named `image_concat`." ] }, { @@ -302,7 +302,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now I'll stack the images by summing my concatenated list." + "Now we'll stack the images by summing the concatenated list." ] }, { @@ -325,7 +325,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "I'm going to show the image, but I want to decide on the best stretch. To do so I'll plot a histogram of the data." + "We're going to show the image, but need to decide on the best stretch. To do so let's plot a histogram of the data." ] }, { @@ -341,7 +341,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "I'll use the keywords `vmin` and `vmax` to set limits on the color scaling for `imshow`." + "We'll use the keywords `vmin` and `vmax` to set limits on the color scaling for `imshow`." ] }, { @@ -365,14 +365,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This is easy to do with the `writeto()` method." + "We can easily do this with the `writeto()` method." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "You will receive an error if the file you are trying to write already exists. That's why I've set `clobber=True`." + "Warning: you'll receive an error if the file you are trying to write already exists. That's why we've set `clobber=True`." ] }, { @@ -412,7 +412,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Show the image of the Horsehead Nebula, but in to units of *surface brightness* (magnitudes per square arcsecond).\n", + "Show the image of the Horsehead Nebula, but in units of *surface brightness* (magnitudes per square arcsecond).\n", "(Hint: the *physical* size of the image is 15x15 arcminutes.)" ] }, @@ -428,7 +428,7 @@ "metadata": {}, "source": [ "Now write out the image you just created, preserving the header the original image had, but add a keyword 'UNITS' with the value 'mag per sq arcsec'.\n", - "(Hint: you may need to read the [astropy.io.fits](http://docs.astropy.org/en/stable/io/fits/index.html) documentation if you're not sure how to include both the header and the data)" + "(Hint: it may be helpful to read the [astropy.io.fits](http://docs.astropy.org/en/stable/io/fits/index.html) documentation if you're not sure how to include both the header and the data.)" ] }, { @@ -449,7 +449,7 @@ "published": true }, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -463,7 +463,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" } }, "nbformat": 4, From 7dfd82b75dc4c50dc3718184c32bd44534a973d9 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 1 Oct 2018 15:25:23 -0400 Subject: [PATCH 48/83] edit fits table --- .../notebooks/FITS-tables/FITS-tables.ipynb | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) mode change 100644 => 100755 tutorials/notebooks/FITS-tables/FITS-tables.ipynb diff --git a/tutorials/notebooks/FITS-tables/FITS-tables.ipynb b/tutorials/notebooks/FITS-tables/FITS-tables.ipynb old mode 100644 new mode 100755 index 382e335aa..d9f9feec9 --- a/tutorials/notebooks/FITS-tables/FITS-tables.ipynb +++ b/tutorials/notebooks/FITS-tables/FITS-tables.ipynb @@ -17,7 +17,7 @@ "\n", "## Summary\n", "\n", - "Demonstrates the use of `astropy.utils.data` to download a data file, uses `astropy.io.fits` and `astropy.table` to open the file, uses `matplotlib` to visualize the data." + "This tutorial demonstrates the use of `astropy.utils.data` to download a data file, then uses `astropy.io.fits` and `astropy.table` to open the file. Lastly, we'll use `matplotlib` to visualize the data." ] }, { @@ -58,9 +58,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "FITS files can often contain large amount of multi-dimensional data and tables. \n", + "FITS files often contain large amounts of multi-dimensional data and tables. \n", "\n", - "In this particular example, I will open a FITS file from a Chandra observation of the Galactic Center. The file contains a list of events with x and y coordinates, energy, and various other pieces of information." + "In this particular example, we'll open a FITS file from a Chandra observation of the Galactic Center. The file contains a list of events with x and y coordinates, energy, and various other pieces of information." ] }, { @@ -84,7 +84,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Since the file is big, I will open with `memmap=True` to prevent RAM storage issues." + "Since the file is big, let's open it with `memmap=True` to prevent RAM storage issues." ] }, { @@ -109,14 +109,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "I'm interested in reading EVENTS, which contains information about each X-ray photon that hit the detector." + "In this case, we're interested in reading EVENTS, which contains information about each X-ray photon that hit the detector." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "To find out what information the table contains, I will print the column names." + "To find out what information the table contains, let's print the column names." ] }, { @@ -132,7 +132,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now I'll we'll take this data and convert it into an [astropy table](http://docs.astropy.org/en/stable/table/). While it is possible to access FITS tables directly from the ``.data`` attribute, using [Table](http://docs.astropy.org/en/stable/api/astropy.table.Table.html#astropy.table.Table) tends to make a variety of common tasks more convenient." + "Now we'll take this data and convert it into an [astropy table](http://docs.astropy.org/en/stable/table/). While it's possible to access FITS tables directly from the ``.data`` attribute, using [Table](http://docs.astropy.org/en/stable/api/astropy.table.Table.html#astropy.table.Table) tends to make a variety of common tasks more convenient." ] }, { @@ -164,7 +164,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can extract data from the table by referencing the column name.. For example, I'll make a histogram for the energy of each photon, giving us a sense for the spectrum (folded with the detector's efficiency)." + "We can extract data from the table by referencing the column name. Let's try making a histogram for the energy of each photon, which will give us a sense for the spectrum (folded with the detector's efficiency)." ] }, { @@ -187,14 +187,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "I will make an image by binning the x and y coordinates of the events into a 2-D histogram." + "We'll make an image by binning the x and y coordinates of the events into a 2-D histogram." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "This particular observation spans five CCD chips. First we determine the events that only fell on the main (ACIS-I) chips, which have number ids 0, 1, 2, and 3." + "This particular observation spans five CCD chips. First, we determine the events that only fell on the main (ACIS-I) chips, which have number ids 0, 1, 2, and 3." ] }, { @@ -218,7 +218,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This method allowed me to create an image without stretching" + "This method allows us to create an image without stretching:" ] }, { @@ -300,7 +300,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Make a scatter plot of the same data you histogrammed above. The [plt.scatter](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter) function is your friend for this. What are the pros and cons of doing this?" + "Make a scatter plot of the same data you histogrammed above. The [plt.scatter](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter) function is your friend for this. What are the pros and cons of doing it this way?" ] }, { @@ -351,7 +351,7 @@ "published": true }, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -365,7 +365,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" } }, "nbformat": 4, From be97f48ecf75a4c72ab95f963f1cdcca5273c1f9 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 1 Oct 2018 15:25:32 -0400 Subject: [PATCH 49/83] models quick fit --- .../Models-Quick-Fit/Models-Quick-Fit.ipynb | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) mode change 100644 => 100755 tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb diff --git a/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb b/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb old mode 100644 new mode 100755 index 53d09c006..b458e6f43 --- a/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb +++ b/tutorials/notebooks/Models-Quick-Fit/Models-Quick-Fit.ipynb @@ -304,7 +304,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For second example, lets fit a polynomial of degree more than 1. In this case, we are going to create fake data to make the fit. Note that we are adding gaussian noise to the data with the function `np.random.normal(0,2)` which gives a random number from a gaussian distribution with mean 0 and standard deviation 2." + "For our second example, let's fit a polynomial of degree more than 1. In this case, we are going to create fake data to make the fit. Note that we're adding gaussian noise to the data with the function `np.random.normal(0,2)` which gives a random number from a gaussian distribution with mean 0 and standard deviation 2." ] }, { @@ -326,7 +326,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's plot it to see how it looks like:" + "Let's plot it to see how it looks:" ] }, { @@ -344,7 +344,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To fit this data lets remember the three steps: model, fitter and perform fit. " + "To fit this data let's remember the three steps: model, fitter and perform fit. " ] }, { @@ -371,7 +371,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "What would happend if we use a different fitter (method)? Lets use the same model but with `SimplexLSQFitter` as fitter." + "What would happend if we use a different fitter (method)? Let's use the same model but with `SimplexLSQFitter` as fitter." ] }, { @@ -405,7 +405,7 @@ "\n", "`WARNING: The fit may be unsuccessful; Maximum number of iterations reached. [astropy.modeling.optimizers]`\n", "\n", - "so it is not surprising that the results are different, because this means that the fitter is not working properly. Lets discuss a method to choose between fits and remember to **pay attention** when you choose the **fitter**." + "So it's not surprising that the results are different, because this means that the fitter is not working properly. Let's discuss a method of choosing between fits and remember to **pay attention** when you choose the **fitter**." ] }, { @@ -419,7 +419,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "One way to check which model parameters are a better fit is calculating the [Reduced Chi Square Value](https://en.wikipedia.org/wiki/Reduced_chi-squared_statistic). Lets define a function to do that because we are going to use it several times." + "One way to check which model parameters are a better fit is calculating the [Reduced Chi Square Value](https://en.wikipedia.org/wiki/Reduced_chi-squared_statistic). Let's define a function to do that because we're going to use it several times." ] }, { @@ -464,7 +464,7 @@ "source": [ "As we can see, the *Reduced Chi Square* for the first fit is closer to one, which means this fit is better. Note that this is what we expected after the discussion of the warnings.\n", "\n", - "We can also compare the two fits visually." + "We can also compare the two fits visually:" ] }, { @@ -485,7 +485,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Results are as espected, the fit performed with the linear fitter is better than the second one, non linear. \n", + "Results are as espected, the fit performed with the linear fitter is better than the second, non linear one. \n", "\n", "**Conclusion:** Pay attention when you choose the fitter." ] @@ -494,14 +494,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 3) Fit a Gaussian: Lets compare to scipy" + "## 3) Fit a Gaussian: Let's compare to scipy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Scipy has the function [scipy.optimize.curve_fit](https://docs.scipy.org/doc/scipy-1.0.0/reference/generated/scipy.optimize.curve_fit.html) to fit in a similar way we are doing things. Lets compare the two methods with fake data in the shape of a gaussian." + "Scipy has the function [scipy.optimize.curve_fit](https://docs.scipy.org/doc/scipy-1.0.0/reference/generated/scipy.optimize.curve_fit.html) to fit in a similar way that we are doing. Let's compare the two methods with fake data in the shape of a Gaussian." ] }, { @@ -534,7 +534,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Lets do our three steps to make the fit we want. For this fit we are going to use a non-linear fitter: `LevMarLSQFitter`, because the model we need (`Gaussian1D`) is non-linear in the parameters. " + "Let's do our three steps to make the fit we want. For this fit we're going to use a non-linear fitter, `LevMarLSQFitter`, because the model we need (`Gaussian1D`) is non-linear in the parameters. " ] }, { @@ -703,7 +703,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Conclusion:** Choose the method most convenient for every case you need to fit. We recomend `astropy.modeling` because is easier to write the name of the function you want to fit, than remember the expression every time we want to use it. Also, `astropy.modeling` becomes useful with more complicated models like [two gaussians](http://docs.astropy.org/en/stable/modeling/#compound-models) plus a [black body](http://docs.astropy.org/en/stable/modeling/#blackbody-radiation), but that is another tutorial." + "**Conclusion:** Choose the method most convenient for every case you need to fit. We recomend `astropy.modeling` because is easier to write the name of the function you want to fit than to remember the expression every time we want to use it. Also, `astropy.modeling` becomes useful with more complicated models like [two gaussians](http://docs.astropy.org/en/stable/modeling/#compound-models) plus a [black body](http://docs.astropy.org/en/stable/modeling/#blackbody-radiation), but that is another tutorial." ] }, { @@ -712,13 +712,14 @@ "source": [ "## Summary:\n", "\n", - "Lets review the conclusion we got in this tutorial:\n", + "Let's review the conclusion we got in this tutorial:\n", "\n", "1. You can fit data with **three lines of code**:\n", " * model\n", " * fitter\n", " * perform fit to data\n", " \n", + " \n", "2. **Pay attention** when you choose the **fitter**.\n", "\n", "3. Choose the method most convenient for every case you need to fit. We recomend `astropy.modeling` to make **quick fits of known functions**." @@ -735,9 +736,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Exercise: For the next data: \n", - "* Choose model and fitter to fit this data.\n", - "* Compare different options." + "For the next data: \n", + "* Choose model and fitter to fit this data\n", + "* Compare different options" ] }, { @@ -777,7 +778,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -791,7 +792,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" } }, "nbformat": 4, From d54d4e4b780c9ccf38a98146fcea0b311f12b502 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 1 Oct 2018 15:25:39 -0400 Subject: [PATCH 50/83] uves --- tutorials/notebooks/UVES/UVES.ipynb | 93 ++++++++++++++++------------- 1 file changed, 50 insertions(+), 43 deletions(-) mode change 100644 => 100755 tutorials/notebooks/UVES/UVES.ipynb diff --git a/tutorials/notebooks/UVES/UVES.ipynb b/tutorials/notebooks/UVES/UVES.ipynb old mode 100644 new mode 100755 index 88d8dcd47..375a3ba3f --- a/tutorials/notebooks/UVES/UVES.ipynb +++ b/tutorials/notebooks/UVES/UVES.ipynb @@ -16,8 +16,8 @@ "matplotlib, file input/output, wcs, units, FITS image\n", "\n", "## Summary\n", - "This tutorial follows my real live data analysis of MN Lup and the code developed\n", - "below is taken (with only minor modifications) from the code that I used to\n", + "This tutorial follows real live data analysis of MN Lup and the code developed\n", + "below is taken (with only minor modifications) from the code used to\n", "actually prepare the publication. The plots that will be developed below\n", "appear in very similar form in the article published in\n", "[ApJ, 771, 1, 70](http://adsabs.harvard.edu/abs/2013ApJ...771...70G).\n", @@ -27,9 +27,9 @@ "your python session in the course of this tutorial, please execute all the code\n", "again.\n", "\n", - "Also, this tutorial works best if you follow along and execute the code shown\n", - "on your own computer. The page is already quite long and I do not include the\n", - "output you would see on your screen in this document.\n", + "This tutorial works best if you follow along and execute the code shown\n", + "on your own computer. The page is already quite long and the\n", + "output you would see on your screen in this document is not included.\n", "\n", "## Acknowledgments\n", "License: This tutorial is made available under the terms of the\n", @@ -121,7 +121,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A previous astropy tutorial already covered\n", + "A previous Astropy tutorial already covered\n", "[handling FITS files](../FITS-header.html) and WCS transformations, so the explanation here\n", "is only very brief. Check the [astropy documentation](http://docs.astropy.org)\n", "or the other two tutorials for more details:" @@ -159,7 +159,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Read the first fits file in the list and check what is in there:" + "Read the first FITS file in the list and check what is in there:" ] }, { @@ -182,7 +182,7 @@ "part of the primary header. So, we can extract the WCS from that header\n", "to get the wavelength coordinate.\n", "If you see warnings about a non-standard RADECSYS, don't worry\n", - "about this - the WCS will still work, it just doesn't\n", + "about this -- the WCS will still work, it just doesn't\n", "fully conform to the WCS standard." ] }, @@ -235,8 +235,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, we do not want to repeat this process for every single file by hand,\n", - "so let us define a function that takes the filename as input and returns\n", + "Now, we don't want to repeat this process for every single file by hand,\n", + "so let's define a function that takes the filename as input and returns\n", "the wavelength and flux arrays and the time of the observation.\n", "In python, functions are created with the ``def`` statements.\n", "All lines that have an indentation level below the `def` statement are part\n", @@ -245,7 +245,7 @@ "\n", "If a function ``func`` is contained in a file called ``spectra_utils.py`` in\n", "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", + "order to use the function `func` with the following command:\n", "\n", "```import spectra_utils\n", "a = spectra_utils.func(param1, param2, ...)```\n", @@ -256,7 +256,7 @@ "```from spectra_utils import func\n", "a = func(param1, param2, ...)```\n", "\n", - "You will recognize that python does not make a difference between modules that come\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", "that you write yourself. The syntax to import those modules or functions\n", "is the same in all cases, provided that the directory where your module is\n", @@ -268,14 +268,14 @@ "metadata": {}, "source": [ "Once you used ``import spectra_utils`` python will not monitor the source file.\n", - "If you change the source code of ``func`` in the file, you need to\n", + "If you change the source code of ``func`` in the file, you'll need to\n", "``reload(spectra_utils)`` to load the new version of ``func``.\n", "\n", "So, after all this discussion, we can now define a function that automates the\n", "loading of a single spectrum using the commands we developed above. Even if\n", "this function is fairly short, we still add some documentation to the header,\n", "so that we can look up what parameters it needs when we come back to this\n", - "project a while later. Personally, I comment every function that is longer\n", + "project a while later. We like to comment every function that is longer\n", "than two lines." ] }, @@ -487,9 +487,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, we can use those variables in our calculations. MN Lup is a T Tauri\n", + "Now we can use those variables in our calculations. MN Lup is a T Tauri\n", "star (TTS), which is possibly surrounded by an accretion disk. In the spectra\n", - "we will be looking for signatures of accretion. We expect those accretion\n", + "we'll be looking for signatures of accretion. We expect those accretion\n", "signatures to appear close to the free-fall velocity v that a mass m reaches, when\n", "it hits the stellar surface. We can calculate the infall speed using simple\n", "energy conservation." @@ -507,7 +507,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "So, let us calculate the free-fall velocity for MN Lup." + "So, let's calculate the free-fall velocity for MN Lup." ] }, { @@ -569,7 +569,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The reason for this is that it is not uncommon to use different length units in\n", + "The reason for this is that it's not uncommon to use different length units in\n", "a single constant, e.g. the Hubble constant is commonly given in \"km/ (s Mpc)\".\n", "\"km\" and \"Mpc\" are both units of length, but generally you do *not* want to\n", "shorten this to \"1/s\".\n", @@ -589,7 +589,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Naively, we could try:" + "We could try:" ] }, { @@ -631,7 +631,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "I want to mention one more feature here (check out\n", + "We want to mention one more feature here (check out\n", "[`astropy.units`](http://docs.astropy.org/en/stable/units/index.html) for\n", "more): The ability to convert the spectral axis to frequencies or energies.\n", "Normally, a unit of length is not equivalent to a unit of energy or to a\n", @@ -709,7 +709,7 @@ "line. We need this function later to show the red- and blueshift of the\n", "spectrum relative to the the Ca II H line. Use the following definition\n", "to make sure that the code below can use it later.\n", - "You can test if your function works by calculating the a Dopplershift\n", + "You can test if your function works by calculating the Doppler shift\n", "of the following wavelengths relative to $H_\\alpha$." ] }, @@ -728,7 +728,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "I get -132, -86 and +5 km/s." + "We get -132, -86 and +5 km/s." ] }, { @@ -809,7 +809,7 @@ "source": [ "[`astropy.time`](http://docs.astropy.org/en/stable/time/index.html)\n", "provides methods to convert times and dates between different\n", - "systems and formats. Since the ESO fits headers already contain the time of the\n", + "systems and formats. Since the ESO FITS headers already contain the time of the\n", "observation in different systems, we could just read the keyword in the time\n", "system we like, but we will use ``astropy.time`` to make this conversion here.\n", "``astropy.time.Time`` will parse many common input formats (strings, floats), but\n", @@ -835,7 +835,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Times can be expressed in different formats." + "Times can be expressed in different formats:" ] }, { @@ -892,10 +892,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, we want to express the time difference between the individual spectra of\n", + "Now we want to express the time difference between the individual spectra of\n", "MN Lup in rotational periods. While the unit of ``delta_t`` is days, unfortunately\n", - "``astropy.time.Time`` and ``astropy.units.Quantity`` objects do not work together\n", - "yet, so we will have to convert from one to the other explicitly." + "``astropy.time.Time`` and ``astropy.units.Quantity`` objects don't work together\n", + "yet, so we'll have to convert from one to the other explicitly." ] }, { @@ -997,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We will calculate the equivalent width in Angstroms of the emission line\n", + "We'll calculate the equivalent width in Angstroms of the emission line\n", "for the first spectrum." ] }, @@ -1037,7 +1037,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, we want to generate a LaTeX table of the observation times, period\n", + "Now we want to generate a LaTeX table of the observation times, period\n", "and equivalent width that we can directly paste into our manuscript. To do so,\n", "we first collect all the columns and make an ``astropy.table.Table`` object. (Please\n", "check [`astropy.table`](http://docs.astropy.org/en/stable/table/index.html)\n", @@ -1075,13 +1075,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We will make two plots. The plotting is done with\n", + "We'll make two plots. The plotting is done with\n", "[`matplotlib`](http://matplotlib.org), and does not involve Astropy itself.\n", "Plotting is introduced in `plotting-and-images` and more details on\n", "plotting can be found there. When in doubt, use the search engine of your choice\n", - "and ask the internet. Here, I mainly want to illustrate that Astropy can be\n", + "and ask the internet. Here, we mainly want to illustrate that Astropy can be\n", "used in real-live data analysis.\n", - "Thus, I do not explain every step in the plotting in detail.\n", + "Thus we don't explain every step in the plotting in detail.\n", "The plots we produce below appear in very\n", "similar form in Guenther et al. 2013 (ApJ, 771, 70)." ] @@ -1110,7 +1110,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "First, we will show the line profile." + "First, we'll show the line profile." ] }, { @@ -1153,8 +1153,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "There are clearly several ways to produce a well looking plot. Here is one\n", - "way." + "There are clearly several ways to produce a well-looking plot. Here is one\n", + "way:" ] }, { @@ -1190,7 +1190,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we will make a more advanced plot. For each spectrum we calculate\n", + "Next, we'll make a more advanced plot. For each spectrum we calculate\n", "the difference to the mean flux." ] }, @@ -1232,8 +1232,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In the following, we will plot the spectra from both nights separately.\n", - "Also, we will pass the ``extent`` keyword to ``ax.imshow`` which takes care\n", + "In the following, we'll plot the spectra from both nights separately.\n", + "Also, we'll pass the ``extent`` keyword to ``ax.imshow`` which takes care\n", "of the axis." ] }, @@ -1344,8 +1344,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Clearly, I did not develop this code for scratch.\n", - "The [matplotlib gallery](http://matplotlib.org/gallery.html) is my\n", + "Clearly, we didn't develop this code for scratch.\n", + "The [matplotlib gallery](http://matplotlib.org/gallery.html) is our\n", "preferred place to look for plotting solutions." ] }, @@ -1362,7 +1362,7 @@ "source": [ "[Astropy](http://astropy.org) is an open-source and community-developed\n", "Python package, which means that is only as good as the contribution of the\n", - "astronomical community. Clearly, there will always people who have more fun writing\n", + "astronomical community. There will always people who have more fun writing\n", "code and others who have more fun using it. However, if you find a bug and do not\n", "report it, then it is unlikely to be fixed. If you wish for a specific feature,\n", "then you can either implement it and contribute it or at least fill in a feature\n", @@ -1382,6 +1382,13 @@ "then frequently it will help to include the full Python stack trace as well as\n", "information about your operating system (e.g. MacOSX version or Linux version)." ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -1394,7 +1401,7 @@ "published": true }, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -1408,7 +1415,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" } }, "nbformat": 4, From 0a6179c41bc8abba621c89454f4f36ece2fa25b9 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 1 Oct 2018 15:25:47 -0400 Subject: [PATCH 51/83] plot-catalog --- .../notebooks/plot-catalog/plot-catalog.ipynb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) mode change 100644 => 100755 tutorials/notebooks/plot-catalog/plot-catalog.ipynb diff --git a/tutorials/notebooks/plot-catalog/plot-catalog.ipynb b/tutorials/notebooks/plot-catalog/plot-catalog.ipynb old mode 100644 new mode 100755 index b3f425fe2..ef1d3141e --- a/tutorials/notebooks/plot-catalog/plot-catalog.ipynb +++ b/tutorials/notebooks/plot-catalog/plot-catalog.ipynb @@ -19,7 +19,7 @@ "\n", "## Summary\n", "\n", - "Demonstrates the use of `astropy.io.ascii` for reading ASCII data, `astropy.coordinates` and `astropy.units` for converting RA (as a sexagesimal angle) to decimal degrees, and `matplotlib` for making a color-magnitude diagram and on-sky locations in a mollweide projection." + "This tutorial demonstrates the use of `astropy.io.ascii` for reading ASCII data, `astropy.coordinates` and `astropy.units` for converting RA (as a sexagesimal angle) to decimal degrees, and `matplotlib` for making a color-magnitude diagram and on-sky locations in a Mollweide projection." ] }, { @@ -151,7 +151,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If we try to just use `ascii.read()` on this data, it fails to parse the names out, and the column names become `col` followed by the number of the column:" + "If we try to just use `ascii.read()` on this data, it fails to parse the names out and the column names become `col` followed by the number of the column:" ] }, { @@ -210,7 +210,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Great -- now the columns have the correct names, but there is still a\n", + "Great! Now the columns have the correct names, but there is still a\n", "problem: all of the columns have string data types, and the column\n", "names are still included as a row in the table. This is because by\n", "default the data are assumed to start on the second row (index=1). \n", @@ -367,8 +367,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "By default, matplotlib will add degree ticklabels, so let's change the\n", - "horizontal (x) tick labels to be in units of hours, and display a grid" + "By default, matplotlib will add degree tick labels, so let's change the\n", + "horizontal (x) tick labels to be in units of hours, and display a grid:" ] }, { @@ -427,7 +427,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Try making the maps again, but with each of the following projections: 'aitoff', 'hammer', 'lambert', and `None` (which is the same as not giving any projection). Do any of them make the data seem easier to understand?" + "Try making the maps again, but with each of the following projections: `aitoff`, `hammer`, `lambert`, and `None` (which is the same as not giving any projection). Do any of them make the data seem easier to understand?" ] }, { @@ -448,7 +448,7 @@ "published": true }, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -462,7 +462,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" } }, "nbformat": 4, From b0e53f94ec5e3d06b5bdbf9867abfc6353c1993c Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 1 Oct 2018 15:25:54 -0400 Subject: [PATCH 52/83] quantities --- .../notebooks/quantities/quantities.ipynb | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) mode change 100644 => 100755 tutorials/notebooks/quantities/quantities.ipynb diff --git a/tutorials/notebooks/quantities/quantities.ipynb b/tutorials/notebooks/quantities/quantities.ipynb old mode 100644 new mode 100755 index dfec6eb7e..64d06ae75 --- a/tutorials/notebooks/quantities/quantities.ipynb +++ b/tutorials/notebooks/quantities/quantities.ipynb @@ -17,7 +17,7 @@ "\n", "## Summary\n", "\n", - "In this tutorial we present some examples showing how astropy's `Quantity` object can make astrophysics calculations easier. The examples include calculating the mass of a galaxy from its velocity dispersion and determining masses of molecular clouds from CO intensity maps. We end with an example of good practices for using quantities in functions you might distribute to other people.\n", + "In this tutorial we present some examples showing how Astropy's `Quantity` object can make astrophysics calculations easier. The examples include calculating the mass of a galaxy from its velocity dispersion and determining masses of molecular clouds from CO intensity maps. We end with an example of good practices for using quantities in functions you might distribute to other people.\n", "\n", "For an in-depth discussion of `Quantity` objects, see the [astropy documentation section](http://docs.astropy.org/en/stable/units/quantity.html)." ] @@ -60,9 +60,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "It is conventional to load the astropy `units` module as the variable `u`, demonstrated below. This will make working with `Quantity` objects much easier. \n", + "It's conventional to load the Astropy `units` module as the variable `u`, demonstrated below. This will make working with `Quantity` objects much easier. \n", "\n", - "Astropy also has a `constants` module, where typical physical constants are available. The constants are stored as objects of a subclass of `Quantity`, so they behave just like a `Quantity`. Here, we'll only need the gravitational constant `G`, Planck's constant `h`, and Boltzmann's constant, `k_B`." + "Astropy also has a `constants` module where typical physical constants are available. The constants are stored as objects of a subclass of `Quantity`, so they behave just like a `Quantity`. Here, we'll only need the gravitational constant `G`, Planck's constant `h`, and Boltzmann's constant, `k_B`." ] }, { @@ -95,7 +95,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Lets assume that we measured the half light radius of the galaxy to be 29 pc projected on the sky at the distance of the galaxy. This radius is often called the \"effective radius\", so we will store it as a `Quantity` object with the name `Reff`. The easiest way to create a `Quantity` object is just by multiplying the value with its unit. Units are accessed as u.\"unit\", in this case u.pc." + "Let's assume that we measured the half-light radius of the galaxy to be 29 pc projected on the sky at the distance of the galaxy. This radius is often called the \"effective radius\", so we'll store it as a `Quantity` object with the name `Reff`. The easiest way to create a `Quantity` object is by multiplying the value with its unit. Units are accessed as u.\"unit\", in this case u.pc." ] }, { @@ -183,7 +183,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we will first create a synthetic dataset of radial velocity measurements, assuming a normal distribution with a mean velocity of 206 km/s and a velocity dispersion of 4.3 km/s." + "Next, we'll first create a synthetic dataset of radial velocity measurements, assuming a normal distribution with a mean velocity of 206 km/s and a velocity dispersion of 4.3 km/s." ] }, { @@ -226,7 +226,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we calculate the velocity dispersion of the galaxy. This demonstrates how you can perform basic operations like subtraction and division with `Quantity` objects, and also use them in standard numpy functions such as `mean()` and `size()`. They retain their units through these operations just as you would expect them to." + "Then we calculate the velocity dispersion of the galaxy. This demonstrates how you can perform basic operations like subtraction and division with `Quantity` objects, and also use them in standard numpy functions such as `mean()` and `size()`. They retain their units through these operations just as you would expect them to." ] }, { @@ -268,7 +268,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now for the actual mass calculation. If a galaxy is pressure-supported (for example, an elliptical or dwarf spheroidal galaxy), its mass within the stellar extent can be estimated using a straightforward formula: $M_{1/2}=4\\sigma^2 R_{eff}/G$. There are caveats to the use of this formula for science - see Wolf et al. 2010 for details. For demonstrating `Quantity`, just accept that this is often good enough. For the calculation we can just multiply the quantities together, and `astropy` will keep track of the units." + "Now for the actual mass calculation. If a galaxy is pressure-supported (for example, an elliptical or dwarf spheroidal galaxy), its mass within the stellar extent can be estimated using a straightforward formula: $M_{1/2}=4\\sigma^2 R_{eff}/G$. There are caveats to the use of this formula for science -- see Wolf et al. 2010 for details. For demonstrating `Quantity`, you can accept that this is often good enough. For the calculation, we can multiply the quantities together, and `astropy` will keep track of the units." ] }, { @@ -285,7 +285,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The result is in a composite unit, so it's not really obvious it's a mass. However, it can be decomposed to cancel all of the length units ($km^2 pc/m^3$) using the decompose() method." + "The result is in a composite unit, so it's not really obvious it's a mass. However, it can be decomposed to cancel all of the length units ($km^2 pc/m^3$) using the `decompose()` method." ] }, { @@ -301,7 +301,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can also easily express the mass in whatever form you like - solar masses are common in astronomy, or maybe you want the default SI and CGS units." + "We can also easily express the mass in whatever form you like -- solar masses are common in astronomy, or maybe you want the default SI and CGS units." ] }, { @@ -363,7 +363,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Use `Quantity` and Kepler's law in the form given below to determine the (circular) orbital speed of the Earth around the sun in km/s. You should not have to look up an constants or conversion factors to do this calculation - it's all in `astropy.units` and `astropy.constants`.\n", + "Use `Quantity` and Kepler's law in the form given below to determine the (circular) orbital speed of the Earth around the sun in km/s. No need to look up constants or conversion factors to do this calculation -- it's all in `astropy.units` and `astropy.constants`.\n", "\n", "$$v = \\sqrt{\\frac{G M_{\\odot}}{r}}$$" ] @@ -397,7 +397,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "(Completely optional, but a good way to convince yourself of the value of Quantity:) Do the above calculations by hand - you can use a calculator (or python just for its arithmatic) but look up all the appropriate conversion factors and use paper-and-pencil approaches for keeping track of them all. Which one took longer?" + "(Completely optional, but a good way to convince yourself of the value of Quantity:) Do the above calculations by hand -- you can use a calculator (or python just for its arithmatic) but look up all the appropriate conversion factors and use paper-and-pencil approaches for keeping track of them all. Which one took longer?" ] }, { @@ -434,7 +434,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's assume that we have mapped the inner part of a molecular cloud in the J=1-0 rotational transition of ${\\rm C}^{18}{\\rm O}$ and are interested in measuring its total mass. The measurement produced a data cube with RA and Dec as spatial coordiates and velocity as the third axis. Each voxel in this data cube represents the brightness temperature of the emission at that position and velocity. Furthermore, we will assume that we have an independent measurement of distance to the cloud $d=250$ pc and that the excitation temperature is known and constant throughout the cloud: $T_{ex}=25$ K." + "Let's assume that we've mapped the inner part of a molecular cloud in the J=1-0 rotational transition of ${\\rm C}^{18}{\\rm O}$ and are interested in measuring its total mass. The measurement produced a data cube with RA and Dec as spatial coordiates and velocity as the third axis. Each voxel in this data cube represents the brightness temperature of the emission at that position and velocity. Furthermore, we'll assume that we have an independent measurement of distance to the cloud $d=250$ pc and that the excitation temperature is known and constant throughout the cloud: $T_{ex}=25$ K." ] }, { @@ -453,7 +453,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We will generate a synthetic dataset, assuming the cloud follows a Gaussian distribution in each of RA, Dec and velocity. We start by creating a 100x100x300 numpy array, such that the first coordinate is right ascension, the second is declination, and the third is velocity. We use the `numpy.meshgrid` function to create data cubes for each of the three coordinates, and then use them in the formula for a Gaussian to generate an array with the synthetic data cube. In this cube, the cloud is positioned at the center of the cube, with $\\sigma$ and the center in each dimension shown below. Note in particular that the $\\sigma$ for RA and Dec have different units from the center, but `astropy` automatically does the relevant conversions before computing the exponential." + "We'll generate a synthetic dataset, assuming the cloud follows a Gaussian distribution in each of RA, Dec and velocity. We start by creating a 100x100x300 numpy array, such that the first coordinate is right ascension, the second is declination, and the third is velocity. We use the `numpy.meshgrid` function to create data cubes for each of the three coordinates, and then use them in the formula for a Gaussian to generate an array with the synthetic data cube. In this cube, the cloud is positioned at the center of the cube, with $\\sigma$ and the center in each dimension shown below. Note in particular that the $\\sigma$ for RA and Dec have different units from the center, but `astropy` automatically does the relevant conversions before computing the exponential." ] }, { @@ -509,7 +509,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We will also need to know the width of each velocity bin and the size of each pixel, so we calculate that now." + "We will also need to know the width of each velocity bin and the size of each pixel, so let's calculate that now." ] }, { @@ -534,7 +534,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We are interested in the integrated intensity over all of the velocity channels, so we will create a 2D quantity array by summing our data cube along the velocity axis (multiplying by the velocity width of a pixel)." + "We're interested in the integrated intensity over all of the velocity channels, so let's create a 2D quantity array by summing our data cube along the velocity axis (multiplying by the velocity width of a pixel)." ] }, { @@ -621,7 +621,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Since the wavelength and frequency of light are related using the speed of light, we can convert between them. However, doing so just using the to() method fails, as units of length and frequency are not convertible:" + "Since the wavelength and frequency of light are related using the speed of light, we can convert between them. However, doing so just using the `to()` method fails, as units of length and frequency are not convertible:" ] }, { @@ -641,7 +641,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Fortunately, `astropy` comes to the rescue by providing a feature called \"unit equivalencies\". Equivalencies provide a way to convert between two physically different units that are not normally equivalent, but in a certain context have a one-to-one mapping. For more on equivalencies, see the [equivalencies section of astropy's documentation](http://docs.astropy.org/en/stable/units/equivalencies.html).\n", + "Fortunately, `astropy` comes to the rescue by providing a feature called \"unit equivalencies.\" Equivalencies provide a way to convert between two physically different units that are not normally equivalent, but in a certain context have a one-to-one mapping. For more on equivalencies, see the [equivalencies section of astropy's documentation](http://docs.astropy.org/en/stable/units/equivalencies.html).\n", "\n", "In this case, calling the ``astropy.units.spectral()`` function provides the equivalencies necessary to handle conversions between wavelength and frequency. To use it, provide the equivalencies to the `equivalencies` keyword of the ``to()`` call:" ] @@ -700,7 +700,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The units of $B$ are Hz s, which can be decomposed to a dimensionless unit if you actually care about it's value. Usually this is not necessary, though. Quantities are at their best if you just use them without worrying about intermediate units, and only convert at the very end when you want a final answer." + "The units of $B$ are Hz sec, which can be decomposed to a dimensionless unit if you actually care about its value. Usually this is not necessary, though. Quantities are at their best if you use them without worrying about intermediate units, and only convert at the very end when you want a final answer." ] }, { @@ -803,7 +803,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now comes an important subtlety: in the small angle approximation, multiplying the pixel area with the square of distance yields the cross-sectional area of the cloud that the pixel covers, in *physical* units, rather than angular units. So it is tempting to just multiply the area and the square of the distance." + "Now comes an important subtlety: in the small angle approximation, multiplying the pixel area with the square of distance yields the cross-sectional area of the cloud that the pixel covers, in *physical* units, rather than angular units. So it's tempting to just multiply the area and the square of the distance." ] }, { @@ -899,7 +899,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The astro material was pretty heavy on that one, so lets focus on some associated statistics using `Quantity`'s array capabililities. Compute the median and mean of the `data` with the ``np.mean`` and ``np.median`` functions. Why are their values so different?" + "The astro material was pretty heavy on that one, so let's focus on some associated statistics using `Quantity`'s array capabililities. Compute the median and mean of the `data` with the ``np.mean`` and ``np.median`` functions. Why are their values so different?" ] }, { @@ -945,7 +945,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Suppose you are working on an instrument, and the bigwig funding it asks for a function to give an analytic estimate of the response function. You determine from some tests it's basically a Lorentzian, but with a different scale along the two axes. Your first thought might be to do this:" + "Suppose you are working on an instrument, and the person funding it asks for a function to give an analytic estimate of the response function. You determine from some tests it's basically a Lorentzian, but with a different scale along the two axes. Your first thought might be to do this:" ] }, { @@ -969,7 +969,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You meant the inputs to be in arcsec, but you send that to your hapless collaborator, and they don't look closely and think the inputs are instead supposed to be in arcmin. So they do:" + "You meant the inputs to be in arcsec, but alas, you send that to your collaborator and they don't look closely and think the inputs are instead supposed to be in arcmin. So they do:" ] }, { @@ -1045,7 +1045,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The funding agency is impressed at the resolution you achieved, and your instrument is saved. You now go on to win the Nobel Prize due to discoveries the instrument makes. And it was all because you used `Quantity` as the input of code you shared." + "The funding agency is impressed at the resolution you achieved, and your instrument is saved! You now go on to win the Nobel Prize due to discoveries the instrument makes. And it was all because you used `Quantity` as the input of code you shared." ] }, { @@ -1082,7 +1082,7 @@ "published": true }, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -1096,7 +1096,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" } }, "nbformat": 4, From 3078f3900f5a746640cda933e1aaca6a138b887f Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 1 Oct 2018 15:26:01 -0400 Subject: [PATCH 53/83] redshift plot --- tutorials/notebooks/redshift-plot/redshift-plot.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) mode change 100644 => 100755 tutorials/notebooks/redshift-plot/redshift-plot.ipynb diff --git a/tutorials/notebooks/redshift-plot/redshift-plot.ipynb b/tutorials/notebooks/redshift-plot/redshift-plot.ipynb old mode 100644 new mode 100755 index 73670eb84..94e73b4e4 --- a/tutorials/notebooks/redshift-plot/redshift-plot.ipynb +++ b/tutorials/notebooks/redshift-plot/redshift-plot.ipynb @@ -190,7 +190,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We have ticks on the top axis at the correct ages, but they're labelled with the redshift, not the age. Fix this by setting the tick labels by hand. " + "We have ticks on the top axis at the correct ages, but they're labelled with the redshift, not the age. We can fix this by setting the tick labels by hand. " ] }, { @@ -337,7 +337,7 @@ "published": true }, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -351,7 +351,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" } }, "nbformat": 4, From 21967c4b1bed3d50161d672bb2b4cddc8fa009af Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 1 Oct 2018 15:26:08 -0400 Subject: [PATCH 54/83] synthetic images --- .../synthetic-images/synthetic-images.ipynb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) mode change 100644 => 100755 tutorials/notebooks/synthetic-images/synthetic-images.ipynb diff --git a/tutorials/notebooks/synthetic-images/synthetic-images.ipynb b/tutorials/notebooks/synthetic-images/synthetic-images.ipynb old mode 100644 new mode 100755 index 2fafc82f5..dbafc8bbc --- a/tutorials/notebooks/synthetic-images/synthetic-images.ipynb +++ b/tutorials/notebooks/synthetic-images/synthetic-images.ipynb @@ -66,7 +66,7 @@ "source": [ "## 1. Load and examine the FITS file\n", "\n", - "Here we begin with a 2-dimensional data that were stored in FITS format from some simulations. We have Stokes I, Q, and U maps. We will first load a FITS file and examine the header." + "Here we begin with a 2-dimensional data that were stored in FITS format from some simulations. We have Stokes I, Q, and U maps. We we'll first load a FITS file and examine the header." ] }, { @@ -129,7 +129,7 @@ "source": [ "## 2. Set up astrometry coordinates\n", "\n", - "From the header, we know that the x and y axes are in centimeter. However, in an observation we usually have RA and DEC. To convert physical units to sky coordinates, we will need to make some assumptions about where the object is located, i.e. the distance to the object and the central RA and DEC. " + "From the header, we know that the x and y axes are in centimeter. However, in an observation we usually have RA and Dec. To convert physical units to sky coordinates, we will need to make some assumptions about where the object is located, i.e. the distance to the object and the central RA and Dec. " ] }, { @@ -198,7 +198,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Convert the wcs coordinate into header and update the hdu." + "Now we can convert the WCS coordinate into header and update the hdu." ] }, { @@ -215,7 +215,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Take a look of the header. ```CDELT1```, ```CDELT2```, ```CUNIT1```, ```CUNIT2```, ```CRVAL1```, and ```CRVAL2``` are in sky coordinates now." + "Let's take a look at the header. ```CDELT1```, ```CDELT2```, ```CUNIT1```, ```CUNIT2```, ```CRVAL1```, and ```CRVAL2``` are in sky coordinates now." ] }, { @@ -262,7 +262,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Simple PSFs are included in ```astropy.convolution.kernel```. We will use ```astropy.convolution.Gaussian2DKernel``` here.\n", + "Simple PSFs are included in ```astropy.convolution.kernel```. We'll use ```astropy.convolution.Gaussian2DKernel``` here.\n", "First we need to set the telescope resolution. For a 2D Gaussian, we can calculate sigma in pixels by using our pixel scale keyword ```cdelt2``` from above." ] }, @@ -342,7 +342,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here we use ```astropy.convolution.convolve_fft``` to convolve image. This routine uses fourier transform for faster calculation. Especially our data is $2^n$ sized, which makes it particually fast. Using a fft, however, causes boundary effects. We will need to specify how we want to handle the boundary. Here we choose to \"wrap\" the data, which means making the data periodic. " + "Here we use ```astropy.convolution.convolve_fft``` to convolve image. This routine uses fourier transform for faster calculation. Especially since our data is $2^n$ sized, which makes it particually fast. Using a fft, however, causes boundary effects. We'll need to specify how we want to handle the boundary. Here we choose to \"wrap\" the data, which means making the data periodic. " ] }, { @@ -373,7 +373,7 @@ "collapsed": true }, "source": [ - "Now let's take a look of the convolved image." + "Now let's take a look at the convolved image." ] }, { @@ -554,7 +554,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -568,7 +568,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" } }, "nbformat": 4, From 4bbe99cc08ae99bda33a43f50d6396744c325893 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 1 Oct 2018 15:26:16 -0400 Subject: [PATCH 55/83] units and integration --- .../units-and-integration.ipynb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) mode change 100644 => 100755 tutorials/notebooks/units-and-integration/units-and-integration.ipynb diff --git a/tutorials/notebooks/units-and-integration/units-and-integration.ipynb b/tutorials/notebooks/units-and-integration/units-and-integration.ipynb old mode 100644 new mode 100755 index 44be5c572..e7317a038 --- a/tutorials/notebooks/units-and-integration/units-and-integration.ipynb +++ b/tutorials/notebooks/units-and-integration/units-and-integration.ipynb @@ -13,7 +13,7 @@ "* perform numerical integration in the `astropy` and scientific python context\n", " * trapezoidal approximation\n", " * gaussian quadrature\n", - "* use `astropy`'s built-in blackbody curves\n", + "* use `astropy`'s built-in black-body curves\n", "* understand how `astropy`'s units interact with one another\n", "* write a mini Python class\n", " * how the `__call__` method works\n", @@ -62,7 +62,7 @@ "source": [ "Let's say we have a black-body at 5000 Kelvin. We can find out the total intensity (bolometric) from this object, by integrating the Planck function. The simplest way to do this is by approximating the integral using the trapezoid rule. Let's do this first using the frequency definition of the Planck function.\n", "\n", - "We will define a photon frequency grid, and evaluate the Planck function at those frequencies. Those will be used to numerically integrate using the trapezoidal rule. By multiplying a `numpy` array by an `astropy` unit, we get a `Quantity`, which is effectively a combination of one or more numbers and a unit." + "We'll define a photon frequency grid, and evaluate the Planck function at those frequencies. Those will be used to numerically integrate using the trapezoidal rule. By multiplying a `numpy` array by an `astropy` unit, we get a `Quantity`, which is effectively a combination of one or more numbers and a unit." ] }, { @@ -159,7 +159,7 @@ "source": [ "### How to simulate actual observations\n", "\n", - "As of Fall 2017, `astropy` does not explicitly support constructing synthetic observations of models like blackbody curves. The [`synphot`](https://synphot.readthedocs.io/en/latest/) library does allow this. You can use `synphot` to perform tasks like turning spectra into visual magnitudes by convolving with a filter curve." + "As of Fall 2017, `astropy` does not explicitly support constructing synthetic observations of models like black-body curves. The [`synphot`](https://synphot.readthedocs.io/en/latest/) library does allow this. You can use `synphot` to perform tasks like turning spectra into visual magnitudes by convolving with a filter curve." ] }, { @@ -170,7 +170,7 @@ "\n", "The stellar initial mass function tells us how many of each mass of stars are formed. In particular, low-mass stars are much more abundant than high-mass stars are. Let's explore more of the functionality of `astropy` using this concept.\n", "\n", - "People generally think of the IMF as a power-law probability density function. In other words, if you count the stars that have been born recently from a cloud of gas, their distribution of masses will follow the IMF. Let's write a little class to help us keep track of that..." + "People generally think of the IMF as a power-law probability density function. In other words, if you count the stars that have been born recently from a cloud of gas, their distribution of masses will follow the IMF. Let's write a little class to help us keep track of that:" ] }, { @@ -208,7 +208,7 @@ "source": [ "## Integrating using Gaussian quadrature\n", "\n", - "In this section, we'll explore a method of numerical integration that does not require having your sampling grid set-up already. [`scipy.integrate.quad`](https://docs.scipy.org/doc/scipy-0.19.1/reference/generated/scipy.integrate.quad.html) takes a function and both a lower & upper bound, and our `PowerLawPDF` class takes care of this just fine.\n", + "In this section, we'll explore a method of numerical integration that does not require having your sampling grid set-up already. [`scipy.integrate.quad`](https://docs.scipy.org/doc/scipy-0.19.1/reference/generated/scipy.integrate.quad.html) takes a function and both a lower and upper bound, and our `PowerLawPDF` class takes care of this just fine.\n", "\n", "Now we can use our new class to normalize our IMF given the mass bounds. This amounts to normalizing a probability density function. We'll use Gaussian quadrature (`quad`) to find the integral. `quad` returns the numerical value of the integral and its uncertainty. We only care about the numerical value, so we'll pack the uncertainty into `_` (a placeholder variable). We immediately throw the integral into our IMF object and use it for normalizing!\n", "\n", @@ -337,7 +337,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -351,7 +351,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" } }, "nbformat": 4, From aef5de0ba3f5c4aed823aa00c0322f5246f054d6 Mon Sep 17 00:00:00 2001 From: Adrian Price-Whelan Date: Mon, 1 Oct 2018 15:26:23 -0400 Subject: [PATCH 56/83] conesearch --- tutorials/notebooks/vo/conesearch.ipynb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) mode change 100644 => 100755 tutorials/notebooks/vo/conesearch.ipynb diff --git a/tutorials/notebooks/vo/conesearch.ipynb b/tutorials/notebooks/vo/conesearch.ipynb old mode 100644 new mode 100755 index e13ce5462..aaa3ba117 --- a/tutorials/notebooks/vo/conesearch.ipynb +++ b/tutorials/notebooks/vo/conesearch.ipynb @@ -18,7 +18,7 @@ "matplotlib, table, coordinates, units, conesearch\n", "\n", "## Summary\n", - "Cone Search allows you to query a catalog of astronomical sources and obtain those that lie within a cone of a given radius around the given position. For more information on Cone Search, see http://astroquery.readthedocs.io/en/latest/vo_conesearch/vo_conesearch.html.\n", + "This tutorial desmonstrates Cone Search, which allows you to query a catalog of astronomical sources and obtain those that lie within a cone of a given radius around the given position. For more information on Cone Search, see http://astroquery.readthedocs.io/en/latest/vo_conesearch/vo_conesearch.html.\n", "\n", "This tutorial requires `astroquery` 0.3.5 or greater. " ] @@ -55,7 +55,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "It might be useful to list the available Cone Search catalogs first. By default, catalogs that pass nightly validation are included. Validation is hosted by Space Telescope Science Institute (STScI)." + "To start, it might be useful to list the available Cone Search catalogs first. By default, catalogs that pass nightly validation are included. Validation is hosted by Space Telescope Science Institute (STScI)." ] }, { @@ -446,7 +446,7 @@ "source": [ "Let's get the actual run time and number of rows to compare with the prediction above. This might take a while.\n", "\n", - "As you will see, the prediction is not spot on, but it is not too shabby (at least, not when I tried it). Note that both predicted and actual run time results also depend on network latency and responsiveness of the service provider." + "As you will see, the prediction is not spot on, but it's not too shabby (at least, not when we tried it!) Note that both predicted and actual run time results also depend on network latency and responsiveness of the service provider." ] }, { @@ -482,7 +482,7 @@ "published": false }, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -496,7 +496,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.5" } }, "nbformat": 4, From 2e2d8e5d812b0256c3044884568c1a14957b0c9e Mon Sep 17 00:00:00 2001 From: Erik Tollerud Date: Tue, 21 Aug 2018 12:00:04 -0400 Subject: [PATCH 57/83] some minor fixes to coordinates intro --- .../Coordinates-Intro/Coordinates-Intro.ipynb | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb b/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb index a25c97731..704e2c57b 100755 --- a/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb +++ b/tutorials/notebooks/Coordinates-Intro/Coordinates-Intro.ipynb @@ -155,7 +155,7 @@ "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:" + "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:" ] }, { @@ -280,7 +280,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 1" + "## Exercises" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Excercise 1" ] }, { @@ -301,6 +308,13 @@ "outputs": [], "source": [] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Excercise 2" + ] + }, { "cell_type": "markdown", "metadata": {}, From 1f7730d8a023049eb186c5dcf0888784239c9636 Mon Sep 17 00:00:00 2001 From: Erik Tollerud Date: Tue, 21 Aug 2018 12:05:58 -0400 Subject: [PATCH 58/83] add missing HCG7_SDSS_cutout.jpg file to coordinates intro tutorial --- .../Coordinates-Intro/HCG7_SDSS_cutout.jpg | Bin 0 -> 90801 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tutorials/notebooks/Coordinates-Intro/HCG7_SDSS_cutout.jpg diff --git a/tutorials/notebooks/Coordinates-Intro/HCG7_SDSS_cutout.jpg b/tutorials/notebooks/Coordinates-Intro/HCG7_SDSS_cutout.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4eb9718ffccfdd184b3538fb98e3ad132b677794 GIT binary patch literal 90801 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 literal 0 HcmV?d00001 From e3fbda2f9a364b7f6f849b2e56912975ac306d64 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 13 Nov 2018 11:29:42 -0500 Subject: [PATCH 59/83] Changed astropy-dev environment init command --- tutorials/03-astropy_dev_env.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index 3d9ae2701..4759be367 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -57,8 +57,10 @@ Step 3: Create a new conda environment for developing astropy :: - conda create -n astropy-dev python=3 anaconda + conda create -n astropy-dev --only-deps python=3 astropy source activate astropy-dev + + The *--only-deps* flag indicates that the new environment will be installed with all of astropy's dependencies without installing astropy itself. - Inside the astropy-dev folder, install the Astropy from the source code: From b26947f1480b5f341d490394dfb8a9fc0f800584 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 13 Nov 2018 11:33:24 -0500 Subject: [PATCH 60/83] Changed install command --- tutorials/03-astropy_dev_env.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index 4759be367..2078e0ed1 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -67,8 +67,9 @@ Step 3: Create a new conda environment for developing astropy :: - python setup.py build - python setup.py install + python setup.py develop + + The *develop* command will install the package in way that does not require you to re-install any time you make changes to your astropy-dev library. - At this point, you could install any other packages you normally work with, *except* for astropy. For example, From 00ed79dfb3b3a0e889ac6f714a5fc5a3d2c422f6 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 13 Nov 2018 11:37:58 -0500 Subject: [PATCH 61/83] Added a note about --force --- tutorials/03-astropy_dev_env.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index 2078e0ed1..c6e791482 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -158,5 +158,9 @@ Step 3: Push the changes to your fork on Github :: git push origin master + + If you've already made some changes to your own master branch, you may need to force the push with the `--force` command. This may cause you to lose some changes or issues with your git history. This is why it's good practice to **always develop in a separate branch**. + + Congratulations! You are up to date! From 2c569701e067faa132eafd2fcb028ad824279725 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 13 Nov 2018 11:45:38 -0500 Subject: [PATCH 62/83] Added example of pushing to new branch --- tutorials/03-astropy_dev_env.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index c6e791482..d8c1eda65 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -93,6 +93,15 @@ Congratulations! You're ready to edit the astropy source code safely. Use ``git`` for committing your changes and pushing those changes to your ``my-code-update`` branch on Github. +Here's an example of creating a new file and pushing it to the new branch: + + :: + + echo "print('hello world')" > my-new-code.py + git add my-new-code.py + git commit -m "first commit" + git push origin my-code-update + For more help with learning Git and Github, see the `Github Help `__ pages, the `Git and Github Learning Resources `__ From 2e59d302eb9de750c8a42344c0d305fe5ad71add Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 13 Nov 2018 11:47:21 -0500 Subject: [PATCH 63/83] Fixed markdown formatting --- tutorials/03-astropy_dev_env.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index d8c1eda65..b7c1d0dff 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -95,12 +95,12 @@ your ``my-code-update`` branch on Github. Here's an example of creating a new file and pushing it to the new branch: - :: - - echo "print('hello world')" > my-new-code.py - git add my-new-code.py - git commit -m "first commit" - git push origin my-code-update +:: + + echo "print('hello world')" > my-new-code.py + git add my-new-code.py + git commit -m "first commit" + git push origin my-code-update For more help with learning Git and Github, see the `Github Help `__ pages, the `Git and Github Learning From 0503cbf4a5e8c1b3b042ec9f09371a575a778331 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 13 Nov 2018 11:55:25 -0500 Subject: [PATCH 64/83] Added link to documentation on pull requests --- tutorials/03-astropy_dev_env.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index b7c1d0dff..a3e4f567c 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -114,6 +114,9 @@ astropy-dev environment. source deactivate +When you want your changes to be incorporated into Astropy, `submit a pull request on Github `__. If you're looking for `quick ways to contribute to Astropy `__, check out the issues page on the main Astropy Github repo. + + Keeping your fork up to date ============================ From 5585661b0368633939ca2de94362e31f3c341ccf Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 8 May 2018 15:32:14 -0400 Subject: [PATCH 65/83] Added conda install and environment documentation rst files --- tutorials/01-conda_astropy_install.rst | 143 +++++++++++++++++++++ tutorials/02-conda_envs.rst | 111 +++++++++++++++++ tutorials/03-astropy_dev_env.rst | 164 +++++++++++++++++++++++++ 3 files changed, 418 insertions(+) create mode 100644 tutorials/01-conda_astropy_install.rst create mode 100644 tutorials/02-conda_envs.rst create mode 100644 tutorials/03-astropy_dev_env.rst diff --git a/tutorials/01-conda_astropy_install.rst b/tutorials/01-conda_astropy_install.rst new file mode 100644 index 000000000..1c7984632 --- /dev/null +++ b/tutorials/01-conda_astropy_install.rst @@ -0,0 +1,143 @@ +Installing Astropy and Related Packages with Anaconda +===================================================== + +conda #astropy +============== + +Pre-requisites +-------------- + +**Mac** Have the latest version of `Xcode +developer `__ tools installed + +**Windows** Be able to access a terminal, either through a `Linux +subsystem `__ +or by installing the `Linux bash +shell `__ + +Step 1: Download Anaconda +------------------------- + +The Anaconda Python distribution can be downloaded from +https://www.anaconda.com/download + +- The scientific computing community is now using Python 3 as a + default. + +**But my code only runs in Python 2** Please see the next tutorial: *An +Astropy User's Guide to Managing Conda Environments* + +- When the download is finished, click on the package and follow the + installation instructions. + +- Open a terminal window to check that the Anaconda installation will + work for you: + + :: + + which conda + + should return something like ``/anaconda3/bin/conda`` and + + :: + + which python + + should return a Python path that is in the same directory as + Anaconda: ``/anaconda3/bin/python`` + +Step 2: Install core packages +----------------------------- + +The default Anaconda installation comes with many packages that +astronomers use frequently: *numpy*, *scipy*, and *matplotlib* + +We can use the ``conda install`` command to install everything else we +need. Anaconda will automatically check, update, and install any python +packages that your desired package depends on. + +- We recommend installing the following suite of astropy, scientific, + statistical, and visualization packages. You can install them all + individually or in one line: + +:: + + conda install astropy scikit-learn pandas + +Step 3: Install affiliated packages +----------------------------------- + +Many `Astropy affiliated +packages `__ can be found on +*astroconda* channel, maintained by AURA and STScI. To add this channel +to Anaconda's package search list, run the following command: + +:: + + conda config --add channels http://ssb.stsci.edu/astroconda + +Some astronomical packages are also available in the *conda-forge* +channel. There is no wrong choice between installing a package from +*astroconda* versus *conda-forge*. However, a package that is available +in the *astroconda* channel may not be available in *conda-forge*. + +To see what channels you have available: + +:: + + conda config --show channels + +`More information on managing channels in +Anaconda `__ +is available on the main documentation pages. + +- Here's an example for downloading a few commonly used Astropy + affiliated packages, directly from the *astroconda* channel: + + :: + + conda install -c astroconda astroquery photutils specutils + +You will not need to use ``-c astroconda`` if you ran the commands above +to add *astroconda* to your default channels. + +Additional materials +==================== + +How to upgrade a package or install a specific version +------------------------------------------------------ + +To upgrade to the latest version of Astropy: + +:: + + conda upgrade astropy + +You can choose a specific Astropy version using: + +:: + + conda install astropy=2.0 + +Conda vs Pip +------------ + +Anaconda is one of several package management systems that you might use +for Python. The `Python Package Index `__ project +also provides a package management program called +```pip`` `__. + +Generally, you should pick one package management program and stick to +it. However, there may be cases where a package is available with +``pip`` and not ``conda``, or vice versa. + +With Anaconda, you can still use ``pip`` to download and install +software within the `conda environment of your +choice `__. + +Conflicts may arise if you ``pip install`` a package that has already +been installed with ``conda``, or vice versa. + +Further documentation on this topic is available on the `conda package +management documentation +page `__. diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst new file mode 100644 index 000000000..0b0c579ba --- /dev/null +++ b/tutorials/02-conda_envs.rst @@ -0,0 +1,111 @@ +An Astropy User's Guide to Managing Conda Environments and Jupyter Notebook +=========================================================================== + +conda #astropy +============== + + Help! My code library works in Python 2 and I don't have time to + make it work in Python 3 + +Do not fear! This tutorial will teach you how to use conda environments +to create a *separate* installation of Python 2.7. With conda +environments, you can switch between Python 2 and 3 without having to +worry about version conflicts. + +Step 1: Set up a Python 2 environment +------------------------------------- + +- Create a new ``conda`` environment + + :: + + conda create -n python2 python=2.7 anaconda + +**NOTE:** ``anaconda`` at the end is optional... + +- Activate the Python 2 environment and install any additional packages + you need to run your favorite code library. If you want to download + Astropy and **all** affiliated packages, you can install ``stsci`` + +:: + + conda activate python2 + conda install stsci + +- When you are ready to return to your default environment: + + :: + + conda deactivate + +**NOTE:** Older versions of Anaconda use ``source activate`` and +``source deactivate``. These will both work in newer versions of +Anaconda. If you receive an error with ``conda activate``, switch to +``source activate`` or update your Anaconda installation with +``conda update conda`` + +When you want to see all of your available environments: + +:: + + conda env list + +Step 2: Check that your code runs in the new environment +-------------------------------------------------------- + +- Now you are ready to work in Python 2! Here's a generic example for + switching to your Python 2 environment, running your Python 2 script, + and exiting the environment. + +:: + + cd ~/my-python2-library + conda activate python2 + python my_python2_script.py + conda deactivate + +Step 3: Set up a Jupyter Notebook for the new environment +--------------------------------------------------------- + +- Check that you have ipykernel installed + + :: + + conda list | grep ipykernel + +If you do not see any output, install it with +``conda install ipykernel`` + +- Activate your custom Python 2 environment: + + :: + + conda activate python2 + +- Install that environment for Jupyter notebook. In this case, we are + giving the environment "python2" as a display name, but you may + choose something else (e.g., "Python 2.7" or "conda-env-python2") + +:: + + python -m ipykernel install --user --name python2 --display-name "python2"` + +- Start a Jupyter Notebook session + + :: + + jupyter notebook + +- When you click on *New*, you should see a drop down list of options + that include "python2", the environment display name we chose above. + +- If you would like to change the environment for an existing Jupyter + Notebook, click on *Kernel*, then *Change kernel*, and select the + environment you would like to use. + +- In general, you can view your available Jupyter Notebook kernels by + running + + :: + + jupyter kernelspec list diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst new file mode 100644 index 000000000..cb52a7e7f --- /dev/null +++ b/tutorials/03-astropy_dev_env.rst @@ -0,0 +1,164 @@ +How to set up a development version of Astropy +============================================== + +conda #astropy +============== + +Found a bug? Know how to fix it? See a modification you need for your +own project? This tutorial will teach you how to set up a conda +environment for installing and modifying a developer version of Astropy. + +Pre-requisites +-------------- + +- `Git `__ version control system. On a Mac, this + will come with installing the latest version of the `Xcode + developer `__ tools. +- An account on `GitHub `__ + +This tutorial will show you how to fork, clone, and install the +development version of Astropy from the command line (terminal). + +Step 1: Fork the Astropy repo on Github +--------------------------------------- + +- Log into your account on Github +- Go to https://github.com/astropy/astropy and click on **Fork** in the + upper right-hand corner of the page. This will create a separate repo + in your Github account under github.com//astropy + +Step 2: Clone your forked Astropy repo to your computer +------------------------------------------------------- + +- Go to your forked version of the repository and click on **Clone or + download** (the green button on the upper right-hand side of the + page). +- Highlight and copy the revealed URL. If you prefer using SSH to + connect to Github, you can toggle between "Use SSH" and "Use HTTPS" + by clicking on the highlighted text in the upper right-hand corner of + the box. +- Open a terminal session +- Make an astropy folder in the location you would like to develop the + code. For example: + + :: + + mkdir astropy-dev + cd astropy-dev + git clone git@github.com:/astropy.git . + +**IMPORTANT NOTE:** If it has been a long time since you forked the +Astropy repo for the first time, your fork may out of date. Before +proceeding, follow the instructions for **Keeping your fork up to date** +at the bottom of this page. + +Step 3: Create a new conda environment for developing astropy +------------------------------------------------------------- + +- Inside the astropy-dev folder, create a new conda environment called + *astropy-dev* and activate it. + + :: + + conda create -n astropy-dev python=3 anaconda + source activate astropy-dev + +- Inside the astropy-dev folder, install the Astropy from the source + code: + + :: + + python setup.py build + python setup.py install + +- At this point, you could install any other packages you normally work + with, *except* for astropy. For example, + + :: + + conda install pandas + +Step 4: Make a new branch for editing the source code +----------------------------------------------------- + +- Inside the astropy-dev folder, create a new branch to work in. Try to + pick a descriptive name for your branch: + + :: + + git branch my-code-update + git checkout my-code-update + +Congratulations! You're ready to edit the astropy source code safely. +Use ``git`` for committing your changes and pushing those changes to +your ``my-code-update`` branch on Github. + +For more help with learning Git and Github, see the `Github +Help `__ pages and `Git and Github Learning +Resources `__ +guide. + +https://try.github.io/levels/1/challenges/1 + +When you are done working on development, don't forget to exit the +astropy-dev environment. + +:: + + source deactivate + +Keeping your fork up to date +============================ + +If it has been awhile since you last forked the Astropy repo, your fork +will likely need updating. This tutorial will teach you how to use the +command line to connect to the main Astropy Github repo, update to the +latest development version, and push those changes to your personal +Astropy fork on Github. + +Step 1: Add the core Astropy repo to your git config file +--------------------------------------------------------- + +- Go to https://github.com/astropy/astropy and click on the green + "Clone or Download" button in the upper right-hand corner of the + page. +- Go to the directory where you have the Astropy repo on your computer, + for example: + + :: + + cd ~/astropy-dev + +- Add a new remote named *upstream* to your local copy of the Astropy + repo + + :: + + git remote add upstream git@github.com:astropy/astropy.git + +Step 2: Pull any changes from the master branch of the main Astropy repo +------------------------------------------------------------------------ + +- Make sure you are in the master branch of your local Astropy repo + + :: + + git checkout master + +- Use ``git pull`` to update your local master branch from the upstream + Astropy master branch + + :: + + git pull upstream master + +Step 3: Push the changes to your fork on Github +----------------------------------------------- + +- Use ``git push`` to update your Github fork of Astropy: + + :: + + git push origin master + +Congratulations! You are up to date! From 39d4f1e02b3fff570955defab6f268364bbdb352 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Thu, 24 May 2018 06:29:50 -0500 Subject: [PATCH 66/83] Reminder to deactivate after ipykernel install --- tutorials/02-conda_envs.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst index 0b0c579ba..2eff5d019 100644 --- a/tutorials/02-conda_envs.rst +++ b/tutorials/02-conda_envs.rst @@ -90,6 +90,12 @@ If you do not see any output, install it with python -m ipykernel install --user --name python2 --display-name "python2"` +- Now leave that environement + +:: + + conda deactivate + - Start a Jupyter Notebook session :: From d3ab0656a8845d169a6aebb901502b5d8fa9907c Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Thu, 24 May 2018 06:32:04 -0500 Subject: [PATCH 67/83] Changed indentation levels on code snippets --- tutorials/02-conda_envs.rst | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst index 2eff5d019..45f81ddac 100644 --- a/tutorials/02-conda_envs.rst +++ b/tutorials/02-conda_envs.rst @@ -27,10 +27,10 @@ Step 1: Set up a Python 2 environment you need to run your favorite code library. If you want to download Astropy and **all** affiliated packages, you can install ``stsci`` -:: + :: - conda activate python2 - conda install stsci + conda activate python2 + conda install stsci - When you are ready to return to your default environment: @@ -57,12 +57,12 @@ Step 2: Check that your code runs in the new environment switching to your Python 2 environment, running your Python 2 script, and exiting the environment. -:: + :: - cd ~/my-python2-library - conda activate python2 - python my_python2_script.py - conda deactivate + cd ~/my-python2-library + conda activate python2 + python my_python2_script.py + conda deactivate Step 3: Set up a Jupyter Notebook for the new environment --------------------------------------------------------- @@ -86,15 +86,15 @@ If you do not see any output, install it with giving the environment "python2" as a display name, but you may choose something else (e.g., "Python 2.7" or "conda-env-python2") -:: + :: - python -m ipykernel install --user --name python2 --display-name "python2"` + python -m ipykernel install --user --name python2 --display-name "python2"` - Now leave that environement -:: + :: - conda deactivate + conda deactivate - Start a Jupyter Notebook session From faae49a3531ee10e4182ef15d68e73eb541d8c81 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Fri, 1 Jun 2018 14:59:06 -0500 Subject: [PATCH 68/83] Switch from conda activate to source activate I just downloaded and installed the latest version of Anaconda 3, and 'conda activate' gives an error message with instructions for new set up. I'd rather go around this. --- tutorials/02-conda_envs.rst | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst index 45f81ddac..7b84b27fc 100644 --- a/tutorials/02-conda_envs.rst +++ b/tutorials/02-conda_envs.rst @@ -29,20 +29,18 @@ Step 1: Set up a Python 2 environment :: - conda activate python2 + source activate python2 conda install stsci - When you are ready to return to your default environment: :: - conda deactivate + source deactivate -**NOTE:** Older versions of Anaconda use ``source activate`` and -``source deactivate``. These will both work in newer versions of -Anaconda. If you receive an error with ``conda activate``, switch to -``source activate`` or update your Anaconda installation with -``conda update conda`` +**NOTE:** Some newer versions of Anaconda use ``conda activate`` and +``conda deactivate``. In that case, both ``source`` and ``conda`` will work +interchangeably when activating or deactivating your chosen environment. When you want to see all of your available environments: From a5fa3907ad4bf33dfb32151433dc5daa033994a9 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Fri, 1 Jun 2018 15:00:51 -0500 Subject: [PATCH 69/83] Stay focused on astropy install only --- tutorials/02-conda_envs.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst index 7b84b27fc..4f68c17a8 100644 --- a/tutorials/02-conda_envs.rst +++ b/tutorials/02-conda_envs.rst @@ -24,13 +24,14 @@ Step 1: Set up a Python 2 environment **NOTE:** ``anaconda`` at the end is optional... - Activate the Python 2 environment and install any additional packages - you need to run your favorite code library. If you want to download + you need to run your favorite code library. Here, we show you how to + install the base version of Astropy. If you want to download Astropy and **all** affiliated packages, you can install ``stsci`` :: source activate python2 - conda install stsci + conda install astropy - When you are ready to return to your default environment: From 017f38cf0b4aa5b1fcd7d36583768520bce0a7c2 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Fri, 1 Jun 2018 15:02:53 -0500 Subject: [PATCH 70/83] switch conda to source --- tutorials/02-conda_envs.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst index 4f68c17a8..8c80a7fee 100644 --- a/tutorials/02-conda_envs.rst +++ b/tutorials/02-conda_envs.rst @@ -79,7 +79,7 @@ If you do not see any output, install it with :: - conda activate python2 + source activate python2 - Install that environment for Jupyter notebook. In this case, we are giving the environment "python2" as a display name, but you may @@ -93,7 +93,7 @@ If you do not see any output, install it with :: - conda deactivate + source deactivate - Start a Jupyter Notebook session From b6c07bf2590e23ab3de4b5f975c6c961d6d8f786 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 19 Jun 2018 18:08:21 +0200 Subject: [PATCH 71/83] remove tags --- tutorials/01-conda_astropy_install.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/tutorials/01-conda_astropy_install.rst b/tutorials/01-conda_astropy_install.rst index 1c7984632..266663ccf 100644 --- a/tutorials/01-conda_astropy_install.rst +++ b/tutorials/01-conda_astropy_install.rst @@ -1,9 +1,6 @@ Installing Astropy and Related Packages with Anaconda ===================================================== -conda #astropy -============== - Pre-requisites -------------- From 14b35891a6cf435c11d6bf11f9b2b1627c9030bb Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 19 Jun 2018 18:15:18 +0200 Subject: [PATCH 72/83] fixed broken links and cleaned text --- tutorials/01-conda_astropy_install.rst | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tutorials/01-conda_astropy_install.rst b/tutorials/01-conda_astropy_install.rst index 266663ccf..0ef2a1ffa 100644 --- a/tutorials/01-conda_astropy_install.rst +++ b/tutorials/01-conda_astropy_install.rst @@ -53,13 +53,13 @@ We can use the ``conda install`` command to install everything else we need. Anaconda will automatically check, update, and install any python packages that your desired package depends on. -- We recommend installing the following suite of astropy, scientific, - statistical, and visualization packages. You can install them all +- Below, we give an example of installing astropy along with some common + scientific, statistical, and visualization packages. You can install them all individually or in one line: :: - conda install astropy scikit-learn pandas + conda install astropy matplotlib scikit-learn pandas Step 3: Install affiliated packages ----------------------------------- @@ -121,16 +121,15 @@ Conda vs Pip Anaconda is one of several package management systems that you might use for Python. The `Python Package Index `__ project -also provides a package management program called -```pip`` `__. +also provides a package management program called `pip `__. Generally, you should pick one package management program and stick to it. However, there may be cases where a package is available with ``pip`` and not ``conda``, or vice versa. With Anaconda, you can still use ``pip`` to download and install -software within the `conda environment of your -choice `__. +software within the conda environment of your +choice. Conflicts may arise if you ``pip install`` a package that has already been installed with ``conda``, or vice versa. From 61fda7f0c09a672f92acae1a31487a0f8ba8f9d2 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 19 Jun 2018 18:19:05 +0200 Subject: [PATCH 73/83] cleaning text, polishing formatting --- tutorials/02-conda_envs.rst | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst index 8c80a7fee..3ed475e2a 100644 --- a/tutorials/02-conda_envs.rst +++ b/tutorials/02-conda_envs.rst @@ -1,8 +1,6 @@ An Astropy User's Guide to Managing Conda Environments and Jupyter Notebook =========================================================================== -conda #astropy -============== Help! My code library works in Python 2 and I don't have time to make it work in Python 3 @@ -59,13 +57,19 @@ Step 2: Check that your code runs in the new environment :: cd ~/my-python2-library - conda activate python2 + source activate python2 python my_python2_script.py - conda deactivate + source deactivate Step 3: Set up a Jupyter Notebook for the new environment --------------------------------------------------------- +- Activate your custom Python 2 environment: + + :: + + source activate python2 + - Check that you have ipykernel installed :: @@ -75,15 +79,9 @@ Step 3: Set up a Jupyter Notebook for the new environment If you do not see any output, install it with ``conda install ipykernel`` -- Activate your custom Python 2 environment: - - :: - - source activate python2 - - Install that environment for Jupyter notebook. In this case, we are - giving the environment "python2" as a display name, but you may - choose something else (e.g., "Python 2.7" or "conda-env-python2") + choosing a display name, "python2", that matches the environment name, + but you may choose something else. :: From 2fe93144cfd26be461b87f284e7138a669fd94fa Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 19 Jun 2018 18:19:34 +0200 Subject: [PATCH 74/83] removing hashtags --- tutorials/03-astropy_dev_env.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index cb52a7e7f..c64c1dc98 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -1,9 +1,6 @@ How to set up a development version of Astropy ============================================== -conda #astropy -============== - Found a bug? Know how to fix it? See a modification you need for your own project? This tutorial will teach you how to set up a conda environment for installing and modifying a developer version of Astropy. From ed733ea4529a95c0b526bf39febdd7abe82bb262 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 19 Jun 2018 18:24:45 +0200 Subject: [PATCH 75/83] added some links to github learning resources --- tutorials/03-astropy_dev_env.rst | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index c64c1dc98..3d9ae2701 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -91,11 +91,9 @@ Use ``git`` for committing your changes and pushing those changes to your ``my-code-update`` branch on Github. For more help with learning Git and Github, see the `Github -Help `__ pages and `Git and Github Learning +Help `__ pages, the `Git and Github Learning Resources `__ -guide. - -https://try.github.io/levels/1/challenges/1 +guide, `try.github.io `_, and the `Github Learning Lab `_ When you are done working on development, don't forget to exit the astropy-dev environment. From c80a2ddf9b7841a820e5c64e2ea70b6d0ad2c3c5 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 21 Aug 2018 12:12:28 -0400 Subject: [PATCH 76/83] Incorporated reviewer comments for 01 --- tutorials/01-conda_astropy_install.rst | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/tutorials/01-conda_astropy_install.rst b/tutorials/01-conda_astropy_install.rst index 0ef2a1ffa..08dad49d3 100644 --- a/tutorials/01-conda_astropy_install.rst +++ b/tutorials/01-conda_astropy_install.rst @@ -71,7 +71,7 @@ to Anaconda's package search list, run the following command: :: - conda config --add channels http://ssb.stsci.edu/astroconda + conda install --channel "astropy" package Some astronomical packages are also available in the *conda-forge* channel. There is no wrong choice between installing a package from @@ -89,14 +89,13 @@ Anaconda `__ is available on the main documentation pages. - Here's an example for downloading a few commonly used Astropy - affiliated packages, directly from the *astroconda* channel: + affiliated packages, directly from the *astropy* channel: :: - conda install -c astroconda astroquery photutils specutils - -You will not need to use ``-c astroconda`` if you ran the commands above -to add *astroconda* to your default channels. + conda install -c astropy photutils specutils + +**Note:** If you plan to use the ``astroquery`` package, we recommend using ``pip install`` instead of ``conda install``. See the *Conda vs Pip* discussion, below. Additional materials ==================== @@ -123,16 +122,16 @@ Anaconda is one of several package management systems that you might use for Python. The `Python Package Index `__ project also provides a package management program called `pip `__. -Generally, you should pick one package management program and stick to +Generally, you should pick one package management system and stick to it. However, there may be cases where a package is available with ``pip`` and not ``conda``, or vice versa. With Anaconda, you can still use ``pip`` to download and install software within the conda environment of your -choice. +choice. However, conflicts may arise if you ``pip install`` a package that has already +been installed with ``conda``, or vice versa. So once you use ``pip`` to install a package, you should use ``pip`` to update and manage that package. -Conflicts may arise if you ``pip install`` a package that has already -been installed with ``conda``, or vice versa. +**In particular, we recommend using `pip` to manage the `astroquery` package.** This library is under continuous development. The latest versions and bug-fixes are more readily available with ``pip``, because it takes a long time for the ``conda`` distribution to update. Further documentation on this topic is available on the `conda package management documentation From 505dccb22f954ab1e169cd5f4aa19c59d56ddf69 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 11 Sep 2018 15:00:24 -0400 Subject: [PATCH 77/83] Responded to review comments --- tutorials/02-conda_envs.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tutorials/02-conda_envs.rst b/tutorials/02-conda_envs.rst index 3ed475e2a..38fd8b7e4 100644 --- a/tutorials/02-conda_envs.rst +++ b/tutorials/02-conda_envs.rst @@ -19,18 +19,19 @@ Step 1: Set up a Python 2 environment conda create -n python2 python=2.7 anaconda -**NOTE:** ``anaconda`` at the end is optional... +**NOTE:** By adding ``anaconda`` at the end, the complete Anaconda Python distribution will be installed. Omitting ``anaconda`` or choosing ``miniconda`` will install a much smaller library of Python packages. You can install any additional packages you need for that environment, after activating it. `Some information about the differences between Anaconda and Miniconda can be found in the conda document pages `__ - Activate the Python 2 environment and install any additional packages you need to run your favorite code library. Here, we show you how to - install the base version of Astropy. If you want to download - Astropy and **all** affiliated packages, you can install ``stsci`` + install the base version of Astropy. :: source activate python2 conda install astropy +**NOTE:** If you want to install Astropy and **all** affiliated packages, you can use `` conda install stsci`` + - When you are ready to return to your default environment: :: From b0c9cc73c35ca4ffed2d396c437b9b5af23da1bb Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 13 Nov 2018 11:29:42 -0500 Subject: [PATCH 78/83] Changed astropy-dev environment init command --- tutorials/03-astropy_dev_env.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index 3d9ae2701..4759be367 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -57,8 +57,10 @@ Step 3: Create a new conda environment for developing astropy :: - conda create -n astropy-dev python=3 anaconda + conda create -n astropy-dev --only-deps python=3 astropy source activate astropy-dev + + The *--only-deps* flag indicates that the new environment will be installed with all of astropy's dependencies without installing astropy itself. - Inside the astropy-dev folder, install the Astropy from the source code: From d47dc36af57a9ce56be5968aface5ce61ec3adcf Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 13 Nov 2018 11:33:24 -0500 Subject: [PATCH 79/83] Changed install command --- tutorials/03-astropy_dev_env.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index 4759be367..2078e0ed1 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -67,8 +67,9 @@ Step 3: Create a new conda environment for developing astropy :: - python setup.py build - python setup.py install + python setup.py develop + + The *develop* command will install the package in way that does not require you to re-install any time you make changes to your astropy-dev library. - At this point, you could install any other packages you normally work with, *except* for astropy. For example, From bbdc8152f259b5c1491f37ef068894366b56de80 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 13 Nov 2018 11:37:58 -0500 Subject: [PATCH 80/83] Added a note about --force --- tutorials/03-astropy_dev_env.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index 2078e0ed1..c6e791482 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -158,5 +158,9 @@ Step 3: Push the changes to your fork on Github :: git push origin master + + If you've already made some changes to your own master branch, you may need to force the push with the `--force` command. This may cause you to lose some changes or issues with your git history. This is why it's good practice to **always develop in a separate branch**. + + Congratulations! You are up to date! From f69217de6c044230b696f99e7b057e374723828f Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 13 Nov 2018 11:45:38 -0500 Subject: [PATCH 81/83] Added example of pushing to new branch --- tutorials/03-astropy_dev_env.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index c6e791482..d8c1eda65 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -93,6 +93,15 @@ Congratulations! You're ready to edit the astropy source code safely. Use ``git`` for committing your changes and pushing those changes to your ``my-code-update`` branch on Github. +Here's an example of creating a new file and pushing it to the new branch: + + :: + + echo "print('hello world')" > my-new-code.py + git add my-new-code.py + git commit -m "first commit" + git push origin my-code-update + For more help with learning Git and Github, see the `Github Help `__ pages, the `Git and Github Learning Resources `__ From 3ef115bd8f5850711708d8277bcd31f362a62043 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 13 Nov 2018 11:47:21 -0500 Subject: [PATCH 82/83] Fixed markdown formatting --- tutorials/03-astropy_dev_env.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index d8c1eda65..b7c1d0dff 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -95,12 +95,12 @@ your ``my-code-update`` branch on Github. Here's an example of creating a new file and pushing it to the new branch: - :: - - echo "print('hello world')" > my-new-code.py - git add my-new-code.py - git commit -m "first commit" - git push origin my-code-update +:: + + echo "print('hello world')" > my-new-code.py + git add my-new-code.py + git commit -m "first commit" + git push origin my-code-update For more help with learning Git and Github, see the `Github Help `__ pages, the `Git and Github Learning From cdd74cd49ce989f518ea3d6c1f93ef6bfdde5301 Mon Sep 17 00:00:00 2001 From: Lia Corrales Date: Tue, 13 Nov 2018 11:55:25 -0500 Subject: [PATCH 83/83] Added link to documentation on pull requests --- tutorials/03-astropy_dev_env.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tutorials/03-astropy_dev_env.rst b/tutorials/03-astropy_dev_env.rst index b7c1d0dff..a3e4f567c 100644 --- a/tutorials/03-astropy_dev_env.rst +++ b/tutorials/03-astropy_dev_env.rst @@ -114,6 +114,9 @@ astropy-dev environment. source deactivate +When you want your changes to be incorporated into Astropy, `submit a pull request on Github `__. If you're looking for `quick ways to contribute to Astropy `__, check out the issues page on the main Astropy Github repo. + + Keeping your fork up to date ============================