diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 0000000..f6e3cda --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 7b7ae02bbec54b0f50ef711ddeec201f +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/01_query.html b/01_query.html new file mode 100644 index 0000000..4e9ee44 --- /dev/null +++ b/01_query.html @@ -0,0 +1,1438 @@ + + + + + + + + Chapter 1 — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
+ +
+

Chapter 1

+

Astronomical Data in Python is an introduction to tools and practices for working with astronomical data. Topics covered include:

+
    +
  • Writing queries that select and download data from a database.

  • +
  • Using data stored in an Astropy Table or Pandas DataFrame.

  • +
  • Working with coordinates and other quantities with units.

  • +
  • Storing data in various formats.

  • +
  • Performing database join operations that combine data from multiple tables.

  • +
  • Visualizing data and preparing publication-quality figures.

  • +
+

As a running example, we will replicate part of the analysis in a recent paper, “Off the beaten path: Gaia reveals GD-1 stars outside of the main stream” by Adrian M. Price-Whelan and Ana Bonaca.

+

As the abstract explains, “Using data from the Gaia second data release combined with Pan-STARRS photometry, we present a sample of highly-probable members of the longest cold stream in the Milky Way, GD-1.”

+

GD-1 is a stellar stream, which is “an association of stars orbiting a galaxy that was once a globular cluster or dwarf galaxy that has now been torn apart and stretched out along its orbit by tidal forces.”

+

This article in Science magazine explains some of the background, including the process that led to the paper and an discussion of the scientific implications:

+
    +
  • “The streams are particularly useful for … galactic archaeology — rewinding the cosmic clock to reconstruct the assembly of the Milky Way.”

  • +
  • “They also are being used as exquisitely sensitive scales to measure the galaxy’s mass.”

  • +
  • “… the streams are well-positioned to reveal the presence of dark matter … because the streams are so fragile, theorists say, collisions with marauding clumps of dark matter could leave telltale scars, potential clues to its nature.”

  • +
+
+

Data

+

The datasets we will work with are:

+
    +
  • Gaia, which is “a space observatory of the European Space Agency (ESA), launched in 2013 … designed for astrometry: measuring the positions, distances and motions of stars with unprecedented precision”, and

  • +
  • Pan-STARRS, The Panoramic Survey Telescope and Rapid Response System, which is a survey designed to monitor the sky for transient objects, producing a catalog with accurate astronometry and photometry of detected sources.

  • +
+

Both of these datasets are very large, which can make them challenging to work with. It might not be possible, or practical, to download the entire dataset. +One of the goals of this workshop is to provide tools for working with large datasets.

+
+
+

Prerequisites

+

These notebooks are meant for people who are familiar with basic Python, but not necessarily the libraries we will use, like Astropy or Pandas. If you are familiar with Python lists and dictionaries, and you know how to write a function that takes parameters and returns a value, you know enough Python to get started.

+

We assume that you have some familiarity with operating systems, like the ability to use a command-line interface. But we don’t assume you have any prior experience with databases.

+

We assume that you are familiar with astronomy at the undergraduate level, but we will not assume specialized knowledge of the datasets or analysis methods we’ll use.

+
+
+

Outline

+

The first lesson demonstrates the steps for selecting and downloading data from the Gaia Database:

+
    +
  1. First we’ll make a connection to the Gaia server,

  2. +
  3. We will explore information about the database and the tables it contains,

  4. +
  5. We will write a query and send it to the server, and finally

  6. +
  7. We will download the response from the server.

  8. +
+

After completing this lesson, you should be able to

+
    +
  • Compose a basic query in ADQL.

  • +
  • Use queries to explore a database and its tables.

  • +
  • Use queries to download data.

  • +
  • Develop, test, and debug a query incrementally.

  • +
+
+
+

Query Language

+

In order to select data from a database, you have to compose a query, which is like a program written in a “query language”. +The query language we’ll use is ADQL, which stands for “Astronomical Data Query Language”.

+

ADQL is a dialect of SQL (Structured Query Language), which is by far the most commonly used query language. Almost everything you will learn about ADQL also works in SQL.

+

The reference manual for ADQL is here. +But you might find it easier to learn from this ADQL Cookbook.

+
+
+

Installing libraries

+

The library we’ll use to get Gaia data is Astroquery.

+

If you are running this notebook on Colab, you can run the following cell to install Astroquery and the other libraries we’ll use.

+

If you are running this notebook on your own computer, you might have to install these libraries yourself.

+

If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.

+

TODO: Add a link to the instructions.

+
+
+
# If we're running on Colab, install libraries
+
+import sys
+IN_COLAB = 'google.colab' in sys.modules
+
+if IN_COLAB:
+    !pip install astroquery astro-gala pyia
+
+
+
+
+
+
+

Connecting to Gaia

+

Astroquery provides Gaia, which is an object that represents a connection to the Gaia database.

+

We can connect to the Gaia database like this:

+
+
+
from astroquery.gaia import Gaia
+
+
+
+
+
Created TAP+ (v1.2.1) - Connection:
+	Host: gea.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+Created TAP+ (v1.2.1) - Connection:
+	Host: geadata.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+
+
+
+
+

Optional detail

+
+

Running this import statement has the effect of creating a TAP+ connection; TAP stands for “Table Access Protocol”. It is a network protocol for sending queries to the database and getting back the results. We’re not sure why it seems to create two connections.

+
+
+
+

Databases and Tables

+

What is a database, anyway? Most generally, it can be any collection of data, but when we are talking about ADQL or SQL:

+
    +
  • A database is a collection of one or more named tables.

  • +
  • Each table is a 2-D array with one or more named columns of data.

  • +
+

We can use Gaia.load_tables to get the names of the tables in the Gaia database. With the option only_names=True, it loads information about the tables, called the “metadata”, not the data itself.

+
+
+
tables = Gaia.load_tables(only_names=True)
+
+
+
+
+
INFO: Retrieving tables... [astroquery.utils.tap.core]
+INFO: Parsing tables... [astroquery.utils.tap.core]
+INFO: Done. [astroquery.utils.tap.core]
+
+
+
+
+
+
+
for table in (tables):
+    print(table.get_qualified_name())
+
+
+
+
+
external.external.apassdr9
+external.external.gaiadr2_geometric_distance
+external.external.galex_ais
+external.external.ravedr5_com
+external.external.ravedr5_dr5
+external.external.ravedr5_gra
+external.external.ravedr5_on
+external.external.sdssdr13_photoprimary
+external.external.skymapperdr1_master
+external.external.tmass_xsc
+public.public.hipparcos
+public.public.hipparcos_newreduction
+public.public.hubble_sc
+public.public.igsl_source
+public.public.igsl_source_catalog_ids
+public.public.tycho2
+public.public.dual
+tap_config.tap_config.coord_sys
+tap_config.tap_config.properties
+tap_schema.tap_schema.columns
+tap_schema.tap_schema.key_columns
+tap_schema.tap_schema.keys
+tap_schema.tap_schema.schemas
+tap_schema.tap_schema.tables
+gaiadr1.gaiadr1.aux_qso_icrf2_match
+gaiadr1.gaiadr1.ext_phot_zero_point
+gaiadr1.gaiadr1.allwise_best_neighbour
+gaiadr1.gaiadr1.allwise_neighbourhood
+gaiadr1.gaiadr1.gsc23_best_neighbour
+gaiadr1.gaiadr1.gsc23_neighbourhood
+gaiadr1.gaiadr1.ppmxl_best_neighbour
+gaiadr1.gaiadr1.ppmxl_neighbourhood
+gaiadr1.gaiadr1.sdss_dr9_best_neighbour
+gaiadr1.gaiadr1.sdss_dr9_neighbourhood
+gaiadr1.gaiadr1.tmass_best_neighbour
+gaiadr1.gaiadr1.tmass_neighbourhood
+gaiadr1.gaiadr1.ucac4_best_neighbour
+gaiadr1.gaiadr1.ucac4_neighbourhood
+gaiadr1.gaiadr1.urat1_best_neighbour
+gaiadr1.gaiadr1.urat1_neighbourhood
+gaiadr1.gaiadr1.cepheid
+gaiadr1.gaiadr1.phot_variable_time_series_gfov
+gaiadr1.gaiadr1.phot_variable_time_series_gfov_statistical_parameters
+gaiadr1.gaiadr1.rrlyrae
+gaiadr1.gaiadr1.variable_summary
+gaiadr1.gaiadr1.allwise_original_valid
+gaiadr1.gaiadr1.gsc23_original_valid
+gaiadr1.gaiadr1.ppmxl_original_valid
+gaiadr1.gaiadr1.sdssdr9_original_valid
+gaiadr1.gaiadr1.tmass_original_valid
+gaiadr1.gaiadr1.ucac4_original_valid
+gaiadr1.gaiadr1.urat1_original_valid
+gaiadr1.gaiadr1.gaia_source
+gaiadr1.gaiadr1.tgas_source
+gaiadr2.gaiadr2.aux_allwise_agn_gdr2_cross_id
+gaiadr2.gaiadr2.aux_iers_gdr2_cross_id
+gaiadr2.gaiadr2.aux_sso_orbit_residuals
+gaiadr2.gaiadr2.aux_sso_orbits
+gaiadr2.gaiadr2.dr1_neighbourhood
+gaiadr2.gaiadr2.allwise_best_neighbour
+gaiadr2.gaiadr2.allwise_neighbourhood
+gaiadr2.gaiadr2.apassdr9_best_neighbour
+gaiadr2.gaiadr2.apassdr9_neighbourhood
+gaiadr2.gaiadr2.gsc23_best_neighbour
+gaiadr2.gaiadr2.gsc23_neighbourhood
+gaiadr2.gaiadr2.hipparcos2_best_neighbour
+gaiadr2.gaiadr2.hipparcos2_neighbourhood
+gaiadr2.gaiadr2.panstarrs1_best_neighbour
+gaiadr2.gaiadr2.panstarrs1_neighbourhood
+gaiadr2.gaiadr2.ppmxl_best_neighbour
+gaiadr2.gaiadr2.ppmxl_neighbourhood
+gaiadr2.gaiadr2.ravedr5_best_neighbour
+gaiadr2.gaiadr2.ravedr5_neighbourhood
+gaiadr2.gaiadr2.sdssdr9_best_neighbour
+gaiadr2.gaiadr2.sdssdr9_neighbourhood
+gaiadr2.gaiadr2.tmass_best_neighbour
+gaiadr2.gaiadr2.tmass_neighbourhood
+gaiadr2.gaiadr2.tycho2_best_neighbour
+gaiadr2.gaiadr2.tycho2_neighbourhood
+gaiadr2.gaiadr2.urat1_best_neighbour
+gaiadr2.gaiadr2.urat1_neighbourhood
+gaiadr2.gaiadr2.sso_observation
+gaiadr2.gaiadr2.sso_source
+gaiadr2.gaiadr2.vari_cepheid
+gaiadr2.gaiadr2.vari_classifier_class_definition
+gaiadr2.gaiadr2.vari_classifier_definition
+gaiadr2.gaiadr2.vari_classifier_result
+gaiadr2.gaiadr2.vari_long_period_variable
+gaiadr2.gaiadr2.vari_rotation_modulation
+gaiadr2.gaiadr2.vari_rrlyrae
+gaiadr2.gaiadr2.vari_short_timescale
+gaiadr2.gaiadr2.vari_time_series_statistics
+gaiadr2.gaiadr2.panstarrs1_original_valid
+gaiadr2.gaiadr2.gaia_source
+gaiadr2.gaiadr2.ruwe
+
+
+
+
+

So that’s a lot of tables. The ones we’ll use are:

+
    +
  • gaiadr2.gaia_source, which contains Gaia data from data release 2,

  • +
  • gaiadr2.panstarrs1_original_valid, which contains the photometry data we’ll use from PanSTARRS, and

  • +
  • gaiadr2.panstarrs1_best_neighbour, which we’ll use to cross-match each star observed by Gaia with the same star observed by PanSTARRS.

  • +
+

We can use load_table (not load_tables) to get the metadata for a single table. The name of this function is misleading, because it only downloads metadata.

+
+
+
meta = Gaia.load_table('gaiadr2.gaia_source')
+meta
+
+
+
+
+
Retrieving table 'gaiadr2.gaia_source'
+Parsing table 'gaiadr2.gaia_source'...
+Done.
+
+
+
<astroquery.utils.tap.model.taptable.TapTableMeta at 0x7f922376e0a0>
+
+
+
+
+

Jupyter shows that the result is an object of type TapTableMeta, but it does not display the contents.

+

To see the metadata, we have to print the object.

+
+
+
print(meta)
+
+
+
+
+
TAP Table name: gaiadr2.gaiadr2.gaia_source
+Description: This table has an entry for every Gaia observed source as listed in the
+Main Database accumulating catalogue version from which the catalogue
+release has been generated. It contains the basic source parameters,
+that is only final data (no epoch data) and no spectra (neither final
+nor epoch).
+Num. columns: 96
+
+
+
+
+

Notice one gotcha: in the list of table names, this table appears as gaiadr2.gaiadr2.gaia_source, but when we load the metadata, we refer to it as gaiadr2.gaia_source.

+

Exercise: Go back and try

+
meta = Gaia.load_table('gaiadr2.gaiadr2.gaia_source')
+
+
+

What happens? Is the error message helpful? If you had not made this error deliberately, would you have been able to figure it out?

+
+
+

Columns

+

The following loop prints the names of the columns in the table.

+
+
+
for column in meta.columns:
+    print(column.name)
+
+
+
+
+
solution_id
+designation
+source_id
+random_index
+ref_epoch
+ra
+ra_error
+dec
+dec_error
+parallax
+parallax_error
+parallax_over_error
+pmra
+pmra_error
+pmdec
+pmdec_error
+ra_dec_corr
+ra_parallax_corr
+ra_pmra_corr
+ra_pmdec_corr
+dec_parallax_corr
+dec_pmra_corr
+dec_pmdec_corr
+parallax_pmra_corr
+parallax_pmdec_corr
+pmra_pmdec_corr
+astrometric_n_obs_al
+astrometric_n_obs_ac
+astrometric_n_good_obs_al
+astrometric_n_bad_obs_al
+astrometric_gof_al
+astrometric_chi2_al
+astrometric_excess_noise
+astrometric_excess_noise_sig
+astrometric_params_solved
+astrometric_primary_flag
+astrometric_weight_al
+astrometric_pseudo_colour
+astrometric_pseudo_colour_error
+mean_varpi_factor_al
+astrometric_matched_observations
+visibility_periods_used
+astrometric_sigma5d_max
+frame_rotator_object_type
+matched_observations
+duplicated_source
+phot_g_n_obs
+phot_g_mean_flux
+phot_g_mean_flux_error
+phot_g_mean_flux_over_error
+phot_g_mean_mag
+phot_bp_n_obs
+phot_bp_mean_flux
+phot_bp_mean_flux_error
+phot_bp_mean_flux_over_error
+phot_bp_mean_mag
+phot_rp_n_obs
+phot_rp_mean_flux
+phot_rp_mean_flux_error
+phot_rp_mean_flux_over_error
+phot_rp_mean_mag
+phot_bp_rp_excess_factor
+phot_proc_mode
+bp_rp
+bp_g
+g_rp
+radial_velocity
+radial_velocity_error
+rv_nb_transits
+rv_template_teff
+rv_template_logg
+rv_template_fe_h
+phot_variable_flag
+l
+b
+ecl_lon
+ecl_lat
+priam_flags
+teff_val
+teff_percentile_lower
+teff_percentile_upper
+a_g_val
+a_g_percentile_lower
+a_g_percentile_upper
+e_bp_min_rp_val
+e_bp_min_rp_percentile_lower
+e_bp_min_rp_percentile_upper
+flame_flags
+radius_val
+radius_percentile_lower
+radius_percentile_upper
+lum_val
+lum_percentile_lower
+lum_percentile_upper
+datalink_url
+epoch_photometry_url
+
+
+
+
+

You can probably guess what many of these columns are by looking at the names, but you should resist the temptation to guess. +To find out what the columns mean, read the documentation.

+

If you want to know what can go wrong when you don’t read the documentation, you might like this article.

+

Exercise: One of the other tables we’ll use is gaiadr2.gaiadr2.panstarrs1_original_valid. Use load_table to get the metadata for this table. How many columns are there and what are their names?

+

Hint: Remember the gotcha we mentioned earlier.

+
+
+
# Solution
+
+meta2 = Gaia.load_table('gaiadr2.panstarrs1_original_valid')
+print(meta2)
+
+
+
+
+
Retrieving table 'gaiadr2.panstarrs1_original_valid'
+Parsing table 'gaiadr2.panstarrs1_original_valid'...
+Done.
+TAP Table name: gaiadr2.gaiadr2.panstarrs1_original_valid
+Description: The Panoramic Survey Telescope and Rapid Response System (Pan-STARRS) is
+a system for wide-field astronomical imaging developed and operated by
+the Institute for Astronomy at the University of Hawaii. Pan-STARRS1
+(PS1) is the first part of Pan-STARRS to be completed and is the basis
+for Data Release 1 (DR1). The PS1 survey used a 1.8 meter telescope and
+its 1.4 Gigapixel camera to image the sky in five broadband filters (g,
+r, i, z, y).
+
+The current table contains a filtered subsample of the 10 723 304 629
+entries listed in the original ObjectThin table.
+We used only ObjectThin and MeanObject tables to extract
+panstarrs1OriginalValid table, this means that objects detected only in
+stack images are not included here. The main reason for us to avoid the
+use of objects detected in stack images is that their astrometry is not
+as good as the mean objects astrometry: “The stack positions (raStack,
+decStack) have considerably larger systematic astrometric errors than
+the mean epoch positions (raMean, decMean).” The astrometry for the
+MeanObject positions uses Gaia DR1 as a reference catalog, while the
+stack positions use 2MASS as a reference catalog.
+
+In details, we filtered out all objects where:
+
+-   nDetections = 1
+
+-   no good quality data in Pan-STARRS, objInfoFlag 33554432 not set
+
+-   mean astrometry could not be measured, objInfoFlag 524288 set
+
+-   stack position used for mean astrometry, objInfoFlag 1048576 set
+
+-   error on all magnitudes equal to 0 or to -999;
+
+-   all magnitudes set to -999;
+
+-   error on RA or DEC greater than 1 arcsec.
+
+The number of objects in panstarrs1OriginalValid is 2 264 263 282.
+
+The panstarrs1OriginalValid table contains only a subset of the columns
+available in the combined ObjectThin and MeanObject tables. A
+description of the original ObjectThin and MeanObjects tables can be
+found at:
+https://outerspace.stsci.edu/display/PANSTARRS/PS1+Database+object+and+detection+tables
+
+Download:
+http://mastweb.stsci.edu/ps1casjobs/home.aspx
+Documentation:
+https://outerspace.stsci.edu/display/PANSTARRS
+http://pswww.ifa.hawaii.edu/pswww/
+References:
+The Pan-STARRS1 Surveys, Chambers, K.C., et al. 2016, arXiv:1612.05560
+Pan-STARRS Data Processing System, Magnier, E. A., et al. 2016,
+arXiv:1612.05240
+Pan-STARRS Pixel Processing: Detrending, Warping, Stacking, Waters, C.
+Z., et al. 2016, arXiv:1612.05245
+Pan-STARRS Pixel Analysis: Source Detection and Characterization,
+Magnier, E. A., et al. 2016, arXiv:1612.05244
+Pan-STARRS Photometric and Astrometric Calibration, Magnier, E. A., et
+al. 2016, arXiv:1612.05242
+The Pan-STARRS1 Database and Data Products, Flewelling, H. A., et al.
+2016, arXiv:1612.05243
+
+Catalogue curator:
+SSDC - ASI Space Science Data Center
+https://www.ssdc.asi.it/
+Num. columns: 26
+
+
+
+
+
+
+
# Solution
+
+for column in meta2.columns:
+    print(column.name)
+
+
+
+
+
obj_name
+obj_id
+ra
+dec
+ra_error
+dec_error
+epoch_mean
+g_mean_psf_mag
+g_mean_psf_mag_error
+g_flags
+r_mean_psf_mag
+r_mean_psf_mag_error
+r_flags
+i_mean_psf_mag
+i_mean_psf_mag_error
+i_flags
+z_mean_psf_mag
+z_mean_psf_mag_error
+z_flags
+y_mean_psf_mag
+y_mean_psf_mag_error
+y_flags
+n_detections
+zone_id
+obj_info_flag
+quality_flag
+
+
+
+
+
+
+

Writing queries

+

By now you might be wondering how we actually download the data. With tables this big, you generally don’t. Instead, you use queries to select only the data you want.

+

A query is a string written in a query language like SQL; for the Gaia database, the query language is a dialect of SQL called ADQL.

+

Here’s an example of an ADQL query.

+
+
+
query1 = """SELECT 
+TOP 10
+source_id, ref_epoch, ra, dec, parallax 
+FROM gaiadr2.gaia_source"""
+
+
+
+
+

Python note: We use a triple-quoted string here so we can include line breaks in the query, which makes it easier to read.

+

The words in uppercase are ADQL keywords:

+
    +
  • SELECT indicates that we are selecting data (as opposed to adding or modifying data).

  • +
  • TOP indicates that we only want the first 10 rows of the table, which is useful for testing a query before asking for all of the data.

  • +
  • FROM specifies which table we want data from.

  • +
+

The third line is a list of column names, indicating which columns we want.

+

In this example, the keywords are capitalized and the column names are lowercase. This is a common style, but it is not required. ADQL and SQL are not case-sensitive.

+

To run this query, we use the Gaia object, which represents our connection to the Gaia database, and invoke launch_job:

+
+
+
job1 = Gaia.launch_job(query1)
+job1
+
+
+
+
+
<astroquery.utils.tap.model.job.Job at 0x7f9222e9cb20>
+
+
+
+
+

The result is an object that represents the job running on a Gaia server.

+

If you print it, it displays metadata for the forthcoming table.

+
+
+
print(job1)
+
+
+
+
+
<Table length=10>
+   name    dtype  unit                            description                            
+--------- ------- ---- ------------------------------------------------------------------
+source_id   int64      Unique source identifier (unique within a particular Data Release)
+ref_epoch float64   yr                                                    Reference epoch
+       ra float64  deg                                                    Right ascension
+      dec float64  deg                                                        Declination
+ parallax float64  mas                                                           Parallax
+Jobid: None
+Phase: COMPLETED
+Owner: None
+Output file: sync_20201005090721.xml.gz
+Results: None
+
+
+
+
+

Don’t worry about Results: None. That does not actually mean there are no results.

+

However, Phase: COMPLETED indicates that the job is complete, so we can get the results like this:

+
+
+
results1 = job1.get_results()
+type(results1)
+
+
+
+
+
astropy.table.table.Table
+
+
+
+
+

Optional detail: Why is table repeated three times? The first is the name of the module, the second is the name of the submodule, and the third is the name of the class. Most of the time we only care about the last one. It’s like the Linnean name for gorilla, which is Gorilla Gorilla Gorilla.

+

The result is an Astropy Table, which is similar to a table in an SQL database except:

+
    +
  • SQL databases are stored on disk drives, so they are persistent; that is, they “survive” even if you turn off the computer. An Astropy Table is stored in memory; it disappears when you turn off the computer (or shut down this Jupyter notebook).

  • +
  • SQL databases are designed to process queries. An Astropy Table can perform some query-like operations, like selecting columns and rows. But these operations use Python syntax, not SQL.

  • +
+

Jupyter knows how to display the contents of a Table.

+
+
+
results1
+
+
+
+
+
Table length=10 + + + + + + + + + + + + + + +
source_idref_epochradecparallax
yrdegdegmas
int64float64float64float64float64
45307383617937696002015.5281.5672536244872520.406821174303780.9785380604519425
45307526511350812162015.5281.086156535525720.5233504963518460.2674800612552977
45307433439514055682015.5281.3711441829917720.474147574053124-0.43911323550176806
45307550606271623682015.5281.267623626829920.5585239223461581.1422630184554958
45307468443413159682015.5281.137043174954120.3778523888981841.0092247424630945
45307684566150264322015.5281.872092143634720.31829694530366-0.06900136127674149
45307635131191372802015.5281.921180886411620.209568295785240.1266016679823622
45307363646185392642015.5281.491347561327420.3465790413276930.3894019486060072
45307359523051777282015.5281.408554916570420.3110309037199280.2041189982608354
45307512810560226562015.5281.058532837763820.4603095562147530.10294642821734962
+
+

Each column has a name, units, and a data type.

+

For example, the units of ra and dec are degrees, and their data type is float64, which is a 64-bit floating-point number, used to store measurements with a fraction part.

+

This information comes from the Gaia database, and has been stored in the Astropy Table by Astroquery.

+

Exercise: Read the documentation of this table and choose a column that looks interesting to you. Add the column name to the query and run it again. What are the units of the column you selected? What is its data type?

+
+
+

Asynchronous queries

+

launch_job asks the server to run the job “synchronously”, which normally means it runs immediately. But synchronous jobs are limited to 2000 rows. For queries that return more rows, you should run “asynchronously”, which mean they might take longer to get started.

+

If you are not sure how many rows a query will return, you can use the SQL command COUNT to find out how many rows are in the result without actually returning them. We’ll see an example of this later.

+

The results of an asynchronous query are stored in a file on the server, so you can start a query and come back later to get the results.

+

For anonymous users, files are kept for three days.

+

As an example, let’s try a query that’s similar to query1, with two changes:

+
    +
  • It selects the first 3000 rows, so it is bigger than we should run synchronously.

  • +
  • It uses a new keyword, WHERE.

  • +
+
+
+
query2 = """SELECT TOP 3000
+source_id, ref_epoch, ra, dec, parallax
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+"""
+
+
+
+
+

A WHERE clause indicates which rows we want; in this case, the query selects only rows “where” parallax is less than 1. This has the effect of selecting stars with relatively low parallax, which are farther away. We’ll use this clause to exclude nearby stars that are unlikely to be part of GD-1.

+

WHERE is one of the most common clauses in ADQL/SQL, and one of the most useful, because it allows us to select only the rows we need from the database.

+

We use launch_job_async to submit an asynchronous query.

+
+
+
job2 = Gaia.launch_job_async(query2)
+print(job2)
+
+
+
+
+
INFO: Query finished. [astroquery.utils.tap.core]
+<Table length=3000>
+   name    dtype  unit                            description                            
+--------- ------- ---- ------------------------------------------------------------------
+source_id   int64      Unique source identifier (unique within a particular Data Release)
+ref_epoch float64   yr                                                    Reference epoch
+       ra float64  deg                                                    Right ascension
+      dec float64  deg                                                        Declination
+ parallax float64  mas                                                           Parallax
+Jobid: 1601903242219O
+Phase: COMPLETED
+Owner: None
+Output file: async_20201005090722.vot
+Results: None
+
+
+
+
+

And here are the results.

+
+
+
results2 = job2.get_results()
+results2
+
+
+
+
+
Table length=3000 + + + + + + + + + + + + + + + + + + + + + + + + +
source_idref_epochradecparallax
yrdegdegmas
int64float64float64float64float64
45307383617937696002015.5281.5672536244872520.406821174303780.9785380604519425
45307526511350812162015.5281.086156535525720.5233504963518460.2674800612552977
45307433439514055682015.5281.3711441829917720.474147574053124-0.43911323550176806
45307684566150264322015.5281.872092143634720.31829694530366-0.06900136127674149
45307635131191372802015.5281.921180886411620.209568295785240.1266016679823622
45307363646185392642015.5281.491347561327420.3465790413276930.3894019486060072
45307359523051777282015.5281.408554916570420.3110309037199280.2041189982608354
45307512810560226562015.5281.058532837763820.4603095562147530.10294642821734962
45307409387744093442015.5281.376256953641620.4361400589412060.9242670062090182
...............
44677109150118026242015.5269.96809693073471.14290850381608820.42361471245557913
44677065513286795522015.5270.0331645898811.05657473236899270.922888231734588
44677122550373000962015.5270.77247179230470.6581664892880896-2.669179465293931
44677350011817617922015.5270.36286062483080.89470793235991240.6117399163086398
44677371014219166722015.5270.51108346614440.9806225910160181-0.39818224846127004
44677075477573274882015.5269.887462805949271.02127599401369620.7741412301054209
44677327720945730562015.5270.559971827601260.9037072088489417-1.7920417800164183
44677323554910877442015.5270.67307907024910.9197224705139885-0.3464446494840354
44677170997669445122015.5270.576671731208250.7262776590095680.05443955111134051
44677190582657812482015.5270.72480529715140.82055519217827850.3733943917490343
+
+

You might notice that some values of parallax are negative. As this FAQ explains, “Negative parallaxes are caused by errors in the observations.” Negative parallaxes have “no physical meaning,” but they can be a “useful diagnostic on the quality of the astrometric solution.”

+

Later we will see an example where we use parallax and parallax_error to identify stars where the distance estimate is likely to be inaccurate.

+

Exercise: The clauses in a query have to be in the right order. Go back and change the order of the clauses in query2 and run it again.

+

The query should fail, but notice that you don’t get much useful debugging information.

+

For this reason, developing and debugging ADQL queries can be really hard. A few suggestions that might help:

+
    +
  • Whenever possible, start with a working query, either an example you find online or a query you have used in the past.

  • +
  • Make small changes and test each change before you continue.

  • +
  • While you are debugging, use TOP to limit the number of rows in the result. That will make each attempt run faster, which reduces your testing time.

  • +
  • Launching test queries synchronously might make them start faster, too.

  • +
+
+
+

Operators

+

In a WHERE clause, you can use any of the SQL comparison operators; here are the most common ones:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Symbol

Operation

>

greater than

<

less than

>=

greater than or equal

<=

less than or equal

=

equal

!= or <>

not equal

+

Most of these are the same as Python, but some are not. In particular, notice that the equality operator is =, not ==. +Be careful to keep your Python out of your ADQL!

+

You can combine comparisons using the logical operators:

+
    +
  • AND: true if both comparisons are true

  • +
  • OR: true if either or both comparisons are true

  • +
+

Finally, you can use NOT to invert the result of a comparison.

+

Exercise: Read about SQL operators here and then modify the previous query to select rows where bp_rp is between -0.75 and 2.

+

You can read about this variable here.

+
+
+
# Solution
+
+# This is what most people will probably do
+
+query = """SELECT TOP 10
+source_id, ref_epoch, ra, dec, parallax
+FROM gaiadr2.gaia_source
+WHERE parallax < 1 
+  AND bp_rp > -0.75 AND bp_rp < 2
+"""
+
+
+
+
+
+
+
# Solution
+
+# But if someone notices the BETWEEN operator, 
+# they might do this
+
+query = """SELECT TOP 10
+source_id, ref_epoch, ra, dec, parallax
+FROM gaiadr2.gaia_source
+WHERE parallax < 1 
+  AND bp_rp BETWEEN -0.75 AND 2
+"""
+
+
+
+
+

This Hertzsprung-Russell diagram shows the BP-RP color and luminosity of stars in the Gaia catalog.

+

Selecting stars with bp-rp less than 2 excludes many class M dwarf stars, which are low temperature, low luminosity. A star like that at GD-1’s distance would be hard to detect, so if it is detected, it it more likely to be in the foreground.

+
+
+

Cleaning up

+

Asynchronous jobs have a jobid.

+
+
+
job1.jobid, job2.jobid
+
+
+
+
+
(None, '1601903242219O')
+
+
+
+
+

Which you can use to remove the job from the server.

+
+
+
Gaia.remove_jobs([job2.jobid])
+
+
+
+
+
Removed jobs: '['1601903242219O']'.
+
+
+
+
+

If you don’t remove it job from the server, it will be removed eventually, so don’t feel too bad if you don’t clean up after yourself.

+
+
+

Formatting queries

+

So far the queries have been string “literals”, meaning that the entire string is part of the program. +But writing queries yourself can be slow, repetitive, and error-prone.

+

It is often a good idea to write Python code that assembles a query for you. One useful tool for that is the string format method.

+

As an example, we’ll divide the previous query into two parts; a list of column names and a “base” for the query that contains everything except the column names.

+

Here’s the list of columns we’ll select.

+
+
+
columns = 'source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity'
+
+
+
+
+

And here’s the base; it’s a string that contains at least one format specifier in curly brackets (braces).

+
+
+
query3_base = """SELECT TOP 10 
+{columns}
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2
+"""
+
+
+
+
+

This base query contains one format specifier, {columns}, which is a placeholder for the list of column names we will provide.

+

To assemble the query, we invoke format on the base string and provide a keyword argument that assigns a value to columns.

+
+
+
query3 = query3_base.format(columns=columns)
+
+
+
+
+

The result is a string with line breaks. If you display it, the line breaks appear as \n.

+
+
+
query3
+
+
+
+
+
'SELECT TOP 10 \nsource_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\nFROM gaiadr2.gaia_source\nWHERE parallax < 1\n  AND bp_rp BETWEEN -0.75 AND 2\n'
+
+
+
+
+

But if you print it, the line breaks appear as… line breaks.

+
+
+
print(query3)
+
+
+
+
+
SELECT TOP 10 
+source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2
+
+
+
+
+

Notice that the format specifier has been replaced with the value of columns.

+

Let’s run it and see if it works:

+
+
+
job3 = Gaia.launch_job(query3)
+print(job3)
+
+
+
+
+
<Table length=10>
+      name       dtype    unit                              description                             n_bad
+--------------- ------- -------- ------------------------------------------------------------------ -----
+      source_id   int64          Unique source identifier (unique within a particular Data Release)     0
+             ra float64      deg                                                    Right ascension     0
+            dec float64      deg                                                        Declination     0
+           pmra float64 mas / yr                         Proper motion in right ascension direction     0
+          pmdec float64 mas / yr                             Proper motion in declination direction     0
+       parallax float64      mas                                                           Parallax     0
+ parallax_error float64      mas                                         Standard error of parallax     0
+radial_velocity float64   km / s                                                    Radial velocity    10
+Jobid: None
+Phase: COMPLETED
+Owner: None
+Output file: sync_20201005090726.xml.gz
+Results: None
+
+
+
+
+
+
+
results3 = job3.get_results()
+results3
+
+
+
+
+
Table length=10 + + + + + + + + + + + + + + +
source_idradecpmrapmdecparallaxparallax_errorradial_velocity
degdegmas / yrmas / yrmasmaskm / s
int64float64float64float64float64float64float64float64
4467710915011802624269.96809693073471.14290850381608822.0233280236600626-2.56924278755102660.423614712455579130.470352406647465--
4467706551328679552270.0331645898811.0565747323689927-3.414829591355289-3.84372158574957370.9228882317345880.927008559859825--
4467712255037300096270.77247179230470.6581664892880896-3.5620173752896025-6.595792323153987-2.6691794652939310.9719742773203504--
4467735001181761792270.36286062483080.89470793235991242.13070799264892050.88267277109107120.61173991630863980.509812721702093--
4467737101421916672270.51108346614440.98062259101601810.17532366511560785-5.113270239706202-0.398182248461270040.7549581886719651--
4467707547757327488269.887462805949271.0212759940136962-2.6382230817672987-3.7077765320492870.77414123010542090.3022057897812064--
4467732355491087744270.67307907024910.9197224705139885-2.2735991502653037-11.864952855984358-0.34644464948403540.4937921513912002--
4467717099766944512270.576671731208250.726277659009568-3.4598362614808367-4.6014268933659210.054439551111340510.8867339293525688--
4467719058265781248270.72480529715140.8205551921782785-3.255079498426542-9.2492850691110850.37339439174903430.390952370410666--
4467722326741572352270.874312918885040.85955659758691580.106963983518598261.2035993780158853-0.118509434328643730.1660452431882023--
+
+

Good so far.

+

Exercise: This query always selects sources with parallax less than 1. But suppose you want to take that upper bound as an input.

+

Modify query3_base to replace 1 with a format specifier like {max_parallax}. Now, when you call format, add a keyword argument that assigns a value to max_parallax, and confirm that the format specifier gets replaced with the value you provide.

+
+
+
# Solution
+
+query4_base = """SELECT TOP 10
+{columns}
+FROM gaiadr2.gaia_source
+WHERE parallax < {max_parallax} AND 
+bp_rp BETWEEN -0.75 AND 2
+"""
+
+
+
+
+
+
+
# Solution
+
+query4 = query4_base.format(columns=columns,
+                          max_parallax=0.5)
+print(query)
+
+
+
+
+
SELECT TOP 10
+source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity
+FROM gaiadr2.gaia_source
+WHERE parallax < 0.5 AND 
+bp_rp BETWEEN -0.75 AND 2
+
+
+
+
+

Style note: You might notice that the variable names in this notebook are numbered, like query1, query2, etc.

+

The advantage of this style is that it isolates each section of the notebook from the others, so if you go back and run the cells out of order, it’s less likely that you will get unexpected interactions.

+

A drawback of this style is that it can be a nuisance to update the notebook if you add, remove, or reorder a section.

+

What do you think of this choice? Are there alternatives you prefer?

+
+
+

Summary

+

This notebook demonstrates the following steps:

+
    +
  1. Making a connection to the Gaia server,

  2. +
  3. Exploring information about the database and the tables it contains,

  4. +
  5. Writing a query and sending it to the server, and finally

  6. +
  7. Downloading the response from the server as an Astropy Table.

  8. +
+
+
+

Best practices

+
    +
  • If you can’t download an entire dataset (or it’s not practical) use queries to select the data you need.

  • +
  • Read the metadata and the documentation to make sure you understand the tables, their columns, and what they mean.

  • +
  • Develop queries incrementally: start with something simple, test it, and add a little bit at a time.

  • +
  • Use ADQL features like TOP and COUNT to test before you run a query that might return a lot of data.

  • +
  • If you know your query will return fewer than 3000 rows, you can run it synchronously, which might complete faster (but it doesn’t seem to make much difference). If it might return more than 3000 rows, you should run it asynchronously.

  • +
  • ADQL and SQL are not case-sensitive, so you don’t have to capitalize the keywords, but you should.

  • +
  • ADQL and SQL don’t require you to break a query into multiple lines, but you should.

  • +
+

Jupyter notebooks can be good for developing and testing code, but they have some drawbacks. In particular, if you run the cells out of order, you might find that variables don’t have the values you expect.

+

There are a few things you can do to mitigate these problems:

+
    +
  • Make each section of the notebook self-contained. Try not to use the same variable name in more than one section.

  • +
  • Keep notebooks short. Look for places where you can break your analysis into phases with one notebook per phase.

  • +
+
+
+ + + + +
+ +
+
+ + + + +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/02_coords.html b/02_coords.html new file mode 100644 index 0000000..55828f5 --- /dev/null +++ b/02_coords.html @@ -0,0 +1,1884 @@ + + + + + + + + Chapter 2 — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
+ +
+

Chapter 2

+

This is the second in a series of notebooks related to astronomy data.

+

As a running example, we are replicating parts of the analysis in a recent paper, “Off the beaten path: Gaia reveals GD-1 stars outside of the main stream” by Adrian M. Price-Whelan and Ana Bonaca.

+

In the first notebook, we wrote ADQL queries and used them to select and download data from the Gaia server.

+

In this notebook, we’ll pick up where we left off and write a query to select stars from the region of the sky where we expect GD-1 to be.

+
+

Outline

+

We’ll start with an example that does a “cone search”; that is, it selects stars that appear in a circular region of the sky.

+

Then, to select stars in the vicinity of GD-1, we’ll:

+
    +
  • Use Quantity objects to represent measurements with units.

  • +
  • Use the Gala library to convert coordinates from one frame to another.

  • +
  • Use the ADQL keywords POLYGON, CONTAINS, and POINT to select stars that fall within a polygonal region.

  • +
  • Submit a query and download the results.

  • +
  • Store the results in a FITS file.

  • +
+

After completing this lesson, you should be able to

+
    +
  • Use Python string formatting to compose more complex ADQL queries.

  • +
  • Work with coordinates and other quantities that have units.

  • +
  • Download the results of a query and store them in a file.

  • +
+
+
+

Installing libraries

+

If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we’ll use.

+

If you are running this notebook on your own computer, you might have to install these libraries yourself.

+

If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.

+

TODO: Add a link to the instructions.

+
+
+
# If we're running on Colab, install libraries
+
+import sys
+IN_COLAB = 'google.colab' in sys.modules
+
+if IN_COLAB:
+    !pip install astroquery astro-gala pyia
+
+
+
+
+
+
+

Selecting a region

+

One of the most common ways to restrict a query is to select stars in a particular region of the sky.

+

For example, here’s a query from the Gaia archive documentation that selects “all the objects … in a circular region centered at (266.41683, -29.00781) with a search radius of 5 arcmin (0.08333 deg).”

+
+
+
query = """
+SELECT 
+TOP 10 source_id
+FROM gaiadr2.gaia_source
+WHERE 1=CONTAINS(
+  POINT(ra, dec),
+  CIRCLE(266.41683, -29.00781, 0.08333333))
+"""
+
+
+
+
+

This query uses three keywords that are specific to ADQL (not SQL):

+
    +
  • POINT: a location in ICRS coordinates, specified in degrees of right ascension and declination.

  • +
  • CIRCLE: a circle where the first two values are the coordinates of the center and the third is the radius in degrees.

  • +
  • CONTAINS: a function that returns 1 if a POINT is contained in a shape and 0 otherwise.

  • +
+

Here is the documentation of CONTAINS.

+

A query like this is called a cone search because it selects stars in a cone.

+

Here’s how we run it.

+
+
+
from astroquery.gaia import Gaia
+
+job = Gaia.launch_job(query)
+result = job.get_results()
+result
+
+
+
+
+
Created TAP+ (v1.2.1) - Connection:
+	Host: gea.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+Created TAP+ (v1.2.1) - Connection:
+	Host: geadata.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+
+
+
Table length=10 + + + + + + + + + + + + + +
source_id
int64
4057468321929794432
4057468287575835392
4057482027171038976
4057470349160630656
4057470039924301696
4057469868125641984
4057468351995073024
4057469661959554560
4057470520960672640
4057470555320409600
+
+

Exercise: When you are debugging queries like this, you can use TOP to limit the size of the results, but then you still don’t know how big the results will be.

+

An alternative is to use COUNT, which asks for the number of rows that would be selected, but it does not return them.

+

In the previous query, replace TOP 10 source_id with COUNT(source_id) and run the query again. How many stars has Gaia identified in the cone we searched?

+
+
+

Getting GD-1 Data

+

From the Price-Whelan and Bonaca paper, we will try to reproduce Figure 1, which includes this representation of stars likely to belong to GD-1:

+

Along the axis of right ascension (\(\phi_1\)) the figure extends from -100 to 20 degrees.

+

Along the axis of declination (\(\phi_2\)) the figure extends from about -8 to 4 degrees.

+

Ideally, we would select all stars from this rectangle, but there are more than 10 million of them, so

+
    +
  • That would be difficult to work with,

  • +
  • As anonymous users, we are limited to 3 million rows in a single query, and

  • +
  • While we are developing and testing code, it will be faster to work with a smaller dataset.

  • +
+

So we’ll start by selecting stars in a smaller rectangle, from -55 to -45 degrees right ascension and -8 to 4 degrees of declination.

+

But first we let’s see how to represent quantities with units like degrees.

+
+
+

Working with coordinates

+

Coordinates are physical quantities, which means that they have two parts, a value and a unit.

+

For example, the coordinate \(30^{\circ}\) has value 30 and its units are degrees.

+

Until recently, most scientific computation was done with values only; units were left out of the program altogether, often with disastrous results.

+

Astropy provides tools for including units explicitly in computations, which makes it possible to detect errors before they cause disasters.

+

To use Astropy units, we import them like this:

+
+
+
import astropy.units as u
+
+u
+
+
+
+
+
<module 'astropy.units' from '/home/downey/anaconda3/envs/AstronomicalData/lib/python3.8/site-packages/astropy/units/__init__.py'>
+
+
+
+
+

u is an object that contains most common units and all SI units.

+

You can use dir to list them, but you should also read the documentation.

+
+
+
dir(u)
+
+
+
+
+
['A',
+ 'AA',
+ 'AB',
+ 'ABflux',
+ 'ABmag',
+ 'AU',
+ 'Angstrom',
+ 'B',
+ 'Ba',
+ 'Barye',
+ 'Bi',
+ 'Biot',
+ 'Bol',
+ 'Bq',
+ 'C',
+ 'Celsius',
+ 'Ci',
+ 'CompositeUnit',
+ 'D',
+ 'Da',
+ 'Dalton',
+ 'Debye',
+ 'Decibel',
+ 'DecibelUnit',
+ 'Dex',
+ 'DexUnit',
+ 'EA',
+ 'EAU',
+ 'EB',
+ 'EBa',
+ 'EC',
+ 'ED',
+ 'EF',
+ 'EG',
+ 'EGal',
+ 'EH',
+ 'EHz',
+ 'EJ',
+ 'EJy',
+ 'EK',
+ 'EL',
+ 'EN',
+ 'EOhm',
+ 'EP',
+ 'EPa',
+ 'ER',
+ 'ERy',
+ 'ES',
+ 'ESt',
+ 'ET',
+ 'EV',
+ 'EW',
+ 'EWb',
+ 'Ea',
+ 'Eadu',
+ 'Earcmin',
+ 'Earcsec',
+ 'Eau',
+ 'Eb',
+ 'Ebarn',
+ 'Ebeam',
+ 'Ebin',
+ 'Ebit',
+ 'Ebyte',
+ 'Ecd',
+ 'Echan',
+ 'Ecount',
+ 'Ect',
+ 'Ed',
+ 'Edeg',
+ 'Edyn',
+ 'EeV',
+ 'Eerg',
+ 'Eg',
+ 'Eh',
+ 'EiB',
+ 'Eib',
+ 'Eibit',
+ 'Eibyte',
+ 'Ek',
+ 'El',
+ 'Elm',
+ 'Elx',
+ 'Elyr',
+ 'Em',
+ 'Emag',
+ 'Emin',
+ 'Emol',
+ 'Eohm',
+ 'Epc',
+ 'Eph',
+ 'Ephoton',
+ 'Epix',
+ 'Epixel',
+ 'Erad',
+ 'Es',
+ 'Esr',
+ 'Eu',
+ 'Evox',
+ 'Evoxel',
+ 'Eyr',
+ 'F',
+ 'Farad',
+ 'Fr',
+ 'Franklin',
+ 'FunctionQuantity',
+ 'FunctionUnitBase',
+ 'G',
+ 'GA',
+ 'GAU',
+ 'GB',
+ 'GBa',
+ 'GC',
+ 'GD',
+ 'GF',
+ 'GG',
+ 'GGal',
+ 'GH',
+ 'GHz',
+ 'GJ',
+ 'GJy',
+ 'GK',
+ 'GL',
+ 'GN',
+ 'GOhm',
+ 'GP',
+ 'GPa',
+ 'GR',
+ 'GRy',
+ 'GS',
+ 'GSt',
+ 'GT',
+ 'GV',
+ 'GW',
+ 'GWb',
+ 'Ga',
+ 'Gadu',
+ 'Gal',
+ 'Garcmin',
+ 'Garcsec',
+ 'Gau',
+ 'Gauss',
+ 'Gb',
+ 'Gbarn',
+ 'Gbeam',
+ 'Gbin',
+ 'Gbit',
+ 'Gbyte',
+ 'Gcd',
+ 'Gchan',
+ 'Gcount',
+ 'Gct',
+ 'Gd',
+ 'Gdeg',
+ 'Gdyn',
+ 'GeV',
+ 'Gerg',
+ 'Gg',
+ 'Gh',
+ 'GiB',
+ 'Gib',
+ 'Gibit',
+ 'Gibyte',
+ 'Gk',
+ 'Gl',
+ 'Glm',
+ 'Glx',
+ 'Glyr',
+ 'Gm',
+ 'Gmag',
+ 'Gmin',
+ 'Gmol',
+ 'Gohm',
+ 'Gpc',
+ 'Gph',
+ 'Gphoton',
+ 'Gpix',
+ 'Gpixel',
+ 'Grad',
+ 'Gs',
+ 'Gsr',
+ 'Gu',
+ 'Gvox',
+ 'Gvoxel',
+ 'Gyr',
+ 'H',
+ 'Henry',
+ 'Hertz',
+ 'Hz',
+ 'IrreducibleUnit',
+ 'J',
+ 'Jansky',
+ 'Joule',
+ 'Jy',
+ 'K',
+ 'Kayser',
+ 'Kelvin',
+ 'KiB',
+ 'Kib',
+ 'Kibit',
+ 'Kibyte',
+ 'L',
+ 'L_bol',
+ 'L_sun',
+ 'LogQuantity',
+ 'LogUnit',
+ 'Lsun',
+ 'MA',
+ 'MAU',
+ 'MB',
+ 'MBa',
+ 'MC',
+ 'MD',
+ 'MF',
+ 'MG',
+ 'MGal',
+ 'MH',
+ 'MHz',
+ 'MJ',
+ 'MJy',
+ 'MK',
+ 'ML',
+ 'MN',
+ 'MOhm',
+ 'MP',
+ 'MPa',
+ 'MR',
+ 'MRy',
+ 'MS',
+ 'MSt',
+ 'MT',
+ 'MV',
+ 'MW',
+ 'MWb',
+ 'M_bol',
+ 'M_e',
+ 'M_earth',
+ 'M_jup',
+ 'M_jupiter',
+ 'M_p',
+ 'M_sun',
+ 'Ma',
+ 'Madu',
+ 'MagUnit',
+ 'Magnitude',
+ 'Marcmin',
+ 'Marcsec',
+ 'Mau',
+ 'Mb',
+ 'Mbarn',
+ 'Mbeam',
+ 'Mbin',
+ 'Mbit',
+ 'Mbyte',
+ 'Mcd',
+ 'Mchan',
+ 'Mcount',
+ 'Mct',
+ 'Md',
+ 'Mdeg',
+ 'Mdyn',
+ 'MeV',
+ 'Mearth',
+ 'Merg',
+ 'Mg',
+ 'Mh',
+ 'MiB',
+ 'Mib',
+ 'Mibit',
+ 'Mibyte',
+ 'Mjup',
+ 'Mjupiter',
+ 'Mk',
+ 'Ml',
+ 'Mlm',
+ 'Mlx',
+ 'Mlyr',
+ 'Mm',
+ 'Mmag',
+ 'Mmin',
+ 'Mmol',
+ 'Mohm',
+ 'Mpc',
+ 'Mph',
+ 'Mphoton',
+ 'Mpix',
+ 'Mpixel',
+ 'Mrad',
+ 'Ms',
+ 'Msr',
+ 'Msun',
+ 'Mu',
+ 'Mvox',
+ 'Mvoxel',
+ 'Myr',
+ 'N',
+ 'NamedUnit',
+ 'Newton',
+ 'Ohm',
+ 'P',
+ 'PA',
+ 'PAU',
+ 'PB',
+ 'PBa',
+ 'PC',
+ 'PD',
+ 'PF',
+ 'PG',
+ 'PGal',
+ 'PH',
+ 'PHz',
+ 'PJ',
+ 'PJy',
+ 'PK',
+ 'PL',
+ 'PN',
+ 'POhm',
+ 'PP',
+ 'PPa',
+ 'PR',
+ 'PRy',
+ 'PS',
+ 'PSt',
+ 'PT',
+ 'PV',
+ 'PW',
+ 'PWb',
+ 'Pa',
+ 'Padu',
+ 'Parcmin',
+ 'Parcsec',
+ 'Pascal',
+ 'Pau',
+ 'Pb',
+ 'Pbarn',
+ 'Pbeam',
+ 'Pbin',
+ 'Pbit',
+ 'Pbyte',
+ 'Pcd',
+ 'Pchan',
+ 'Pcount',
+ 'Pct',
+ 'Pd',
+ 'Pdeg',
+ 'Pdyn',
+ 'PeV',
+ 'Perg',
+ 'Pg',
+ 'Ph',
+ 'PiB',
+ 'Pib',
+ 'Pibit',
+ 'Pibyte',
+ 'Pk',
+ 'Pl',
+ 'Plm',
+ 'Plx',
+ 'Plyr',
+ 'Pm',
+ 'Pmag',
+ 'Pmin',
+ 'Pmol',
+ 'Pohm',
+ 'Ppc',
+ 'Pph',
+ 'Pphoton',
+ 'Ppix',
+ 'Ppixel',
+ 'Prad',
+ 'PrefixUnit',
+ 'Ps',
+ 'Psr',
+ 'Pu',
+ 'Pvox',
+ 'Pvoxel',
+ 'Pyr',
+ 'Quantity',
+ 'QuantityInfo',
+ 'QuantityInfoBase',
+ 'R',
+ 'R_earth',
+ 'R_jup',
+ 'R_jupiter',
+ 'R_sun',
+ 'Rayleigh',
+ 'Rearth',
+ 'Rjup',
+ 'Rjupiter',
+ 'Rsun',
+ 'Ry',
+ 'S',
+ 'ST',
+ 'STflux',
+ 'STmag',
+ 'Siemens',
+ 'SpecificTypeQuantity',
+ 'St',
+ 'Sun',
+ 'T',
+ 'TA',
+ 'TAU',
+ 'TB',
+ 'TBa',
+ 'TC',
+ 'TD',
+ 'TF',
+ 'TG',
+ 'TGal',
+ 'TH',
+ 'THz',
+ 'TJ',
+ 'TJy',
+ 'TK',
+ 'TL',
+ 'TN',
+ 'TOhm',
+ 'TP',
+ 'TPa',
+ 'TR',
+ 'TRy',
+ 'TS',
+ 'TSt',
+ 'TT',
+ 'TV',
+ 'TW',
+ 'TWb',
+ 'Ta',
+ 'Tadu',
+ 'Tarcmin',
+ 'Tarcsec',
+ 'Tau',
+ 'Tb',
+ 'Tbarn',
+ 'Tbeam',
+ 'Tbin',
+ 'Tbit',
+ 'Tbyte',
+ 'Tcd',
+ 'Tchan',
+ 'Tcount',
+ 'Tct',
+ 'Td',
+ 'Tdeg',
+ 'Tdyn',
+ 'TeV',
+ 'Terg',
+ 'Tesla',
+ 'Tg',
+ 'Th',
+ 'TiB',
+ 'Tib',
+ 'Tibit',
+ 'Tibyte',
+ 'Tk',
+ 'Tl',
+ 'Tlm',
+ 'Tlx',
+ 'Tlyr',
+ 'Tm',
+ 'Tmag',
+ 'Tmin',
+ 'Tmol',
+ 'Tohm',
+ 'Tpc',
+ 'Tph',
+ 'Tphoton',
+ 'Tpix',
+ 'Tpixel',
+ 'Trad',
+ 'Ts',
+ 'Tsr',
+ 'Tu',
+ 'Tvox',
+ 'Tvoxel',
+ 'Tyr',
+ 'Unit',
+ 'UnitBase',
+ 'UnitConversionError',
+ 'UnitTypeError',
+ 'UnitsError',
+ 'UnitsWarning',
+ 'UnrecognizedUnit',
+ 'V',
+ 'Volt',
+ 'W',
+ 'Watt',
+ 'Wb',
+ 'Weber',
+ 'YA',
+ 'YAU',
+ 'YB',
+ 'YBa',
+ 'YC',
+ 'YD',
+ 'YF',
+ 'YG',
+ 'YGal',
+ 'YH',
+ 'YHz',
+ 'YJ',
+ 'YJy',
+ 'YK',
+ 'YL',
+ 'YN',
+ 'YOhm',
+ 'YP',
+ 'YPa',
+ 'YR',
+ 'YRy',
+ 'YS',
+ 'YSt',
+ 'YT',
+ 'YV',
+ 'YW',
+ 'YWb',
+ 'Ya',
+ 'Yadu',
+ 'Yarcmin',
+ 'Yarcsec',
+ 'Yau',
+ 'Yb',
+ 'Ybarn',
+ 'Ybeam',
+ 'Ybin',
+ 'Ybit',
+ 'Ybyte',
+ 'Ycd',
+ 'Ychan',
+ 'Ycount',
+ 'Yct',
+ 'Yd',
+ 'Ydeg',
+ 'Ydyn',
+ 'YeV',
+ 'Yerg',
+ 'Yg',
+ 'Yh',
+ 'Yk',
+ 'Yl',
+ 'Ylm',
+ 'Ylx',
+ 'Ylyr',
+ 'Ym',
+ 'Ymag',
+ 'Ymin',
+ 'Ymol',
+ 'Yohm',
+ 'Ypc',
+ 'Yph',
+ 'Yphoton',
+ 'Ypix',
+ 'Ypixel',
+ 'Yrad',
+ 'Ys',
+ 'Ysr',
+ 'Yu',
+ 'Yvox',
+ 'Yvoxel',
+ 'Yyr',
+ 'ZA',
+ 'ZAU',
+ 'ZB',
+ 'ZBa',
+ 'ZC',
+ 'ZD',
+ 'ZF',
+ 'ZG',
+ 'ZGal',
+ 'ZH',
+ 'ZHz',
+ 'ZJ',
+ 'ZJy',
+ 'ZK',
+ 'ZL',
+ 'ZN',
+ 'ZOhm',
+ 'ZP',
+ 'ZPa',
+ 'ZR',
+ 'ZRy',
+ 'ZS',
+ 'ZSt',
+ 'ZT',
+ 'ZV',
+ 'ZW',
+ 'ZWb',
+ 'Za',
+ 'Zadu',
+ 'Zarcmin',
+ 'Zarcsec',
+ 'Zau',
+ 'Zb',
+ 'Zbarn',
+ 'Zbeam',
+ 'Zbin',
+ 'Zbit',
+ 'Zbyte',
+ 'Zcd',
+ 'Zchan',
+ 'Zcount',
+ 'Zct',
+ 'Zd',
+ 'Zdeg',
+ 'Zdyn',
+ 'ZeV',
+ 'Zerg',
+ 'Zg',
+ 'Zh',
+ 'Zk',
+ 'Zl',
+ 'Zlm',
+ 'Zlx',
+ 'Zlyr',
+ 'Zm',
+ 'Zmag',
+ 'Zmin',
+ 'Zmol',
+ 'Zohm',
+ 'Zpc',
+ 'Zph',
+ 'Zphoton',
+ 'Zpix',
+ 'Zpixel',
+ 'Zrad',
+ 'Zs',
+ 'Zsr',
+ 'Zu',
+ 'Zvox',
+ 'Zvoxel',
+ 'Zyr',
+ '__builtins__',
+ '__cached__',
+ '__doc__',
+ '__file__',
+ '__loader__',
+ '__name__',
+ '__package__',
+ '__path__',
+ '__spec__',
+ 'a',
+ 'aA',
+ 'aAU',
+ 'aB',
+ 'aBa',
+ 'aC',
+ 'aD',
+ 'aF',
+ 'aG',
+ 'aGal',
+ 'aH',
+ 'aHz',
+ 'aJ',
+ 'aJy',
+ 'aK',
+ 'aL',
+ 'aN',
+ 'aOhm',
+ 'aP',
+ 'aPa',
+ 'aR',
+ 'aRy',
+ 'aS',
+ 'aSt',
+ 'aT',
+ 'aV',
+ 'aW',
+ 'aWb',
+ 'aa',
+ 'aadu',
+ 'aarcmin',
+ 'aarcsec',
+ 'aau',
+ 'ab',
+ 'abA',
+ 'abC',
+ 'abampere',
+ 'abarn',
+ 'abcoulomb',
+ 'abeam',
+ 'abin',
+ 'abit',
+ 'abyte',
+ 'acd',
+ 'achan',
+ 'acount',
+ 'act',
+ 'ad',
+ 'add_enabled_equivalencies',
+ 'add_enabled_units',
+ 'adeg',
+ 'adu',
+ 'adyn',
+ 'aeV',
+ 'aerg',
+ 'ag',
+ 'ah',
+ 'ak',
+ 'al',
+ 'allclose',
+ 'alm',
+ 'alx',
+ 'alyr',
+ 'am',
+ 'amag',
+ 'amin',
+ 'amol',
+ 'amp',
+ 'ampere',
+ 'angstrom',
+ 'annum',
+ 'aohm',
+ 'apc',
+ 'aph',
+ 'aphoton',
+ 'apix',
+ 'apixel',
+ 'arad',
+ 'arcmin',
+ 'arcminute',
+ 'arcsec',
+ 'arcsecond',
+ 'asr',
+ 'astronomical_unit',
+ 'astrophys',
+ 'attoBarye',
+ 'attoDa',
+ 'attoDalton',
+ 'attoDebye',
+ 'attoFarad',
+ 'attoGauss',
+ 'attoHenry',
+ 'attoHertz',
+ 'attoJansky',
+ 'attoJoule',
+ 'attoKayser',
+ 'attoKelvin',
+ 'attoNewton',
+ 'attoOhm',
+ 'attoPascal',
+ 'attoRayleigh',
+ 'attoSiemens',
+ 'attoTesla',
+ 'attoVolt',
+ 'attoWatt',
+ 'attoWeber',
+ 'attoamp',
+ 'attoampere',
+ 'attoannum',
+ 'attoarcminute',
+ 'attoarcsecond',
+ 'attoastronomical_unit',
+ 'attobarn',
+ 'attobarye',
+ 'attobit',
+ 'attobyte',
+ 'attocandela',
+ 'attocoulomb',
+ 'attocount',
+ 'attoday',
+ 'attodebye',
+ 'attodegree',
+ 'attodyne',
+ 'attoelectronvolt',
+ 'attofarad',
+ 'attogal',
+ 'attogauss',
+ 'attogram',
+ 'attohenry',
+ 'attohertz',
+ 'attohour',
+ 'attohr',
+ 'attojansky',
+ 'attojoule',
+ 'attokayser',
+ 'attolightyear',
+ 'attoliter',
+ 'attolumen',
+ 'attolux',
+ 'attometer',
+ 'attominute',
+ 'attomole',
+ 'attonewton',
+ 'attoparsec',
+ 'attopascal',
+ 'attophoton',
+ 'attopixel',
+ 'attopoise',
+ 'attoradian',
+ 'attorayleigh',
+ 'attorydberg',
+ 'attosecond',
+ 'attosiemens',
+ 'attosteradian',
+ 'attostokes',
+ 'attotesla',
+ 'attovolt',
+ 'attovoxel',
+ 'attowatt',
+ 'attoweber',
+ 'attoyear',
+ 'au',
+ 'avox',
+ 'avoxel',
+ 'ayr',
+ 'b',
+ 'bar',
+ 'barn',
+ 'barye',
+ 'beam',
+ 'beam_angular_area',
+ 'becquerel',
+ 'bin',
+ 'binary_prefixes',
+ 'bit',
+ 'bol',
+ 'brightness_temperature',
+ 'byte',
+ 'cA',
+ 'cAU',
+ 'cB',
+ 'cBa',
+ 'cC',
+ 'cD',
+ 'cF',
+ 'cG',
+ 'cGal',
+ 'cH',
+ 'cHz',
+ 'cJ',
+ 'cJy',
+ 'cK',
+ 'cL',
+ 'cN',
+ 'cOhm',
+ 'cP',
+ 'cPa',
+ 'cR',
+ 'cRy',
+ 'cS',
+ 'cSt',
+ 'cT',
+ 'cV',
+ 'cW',
+ 'cWb',
+ 'ca',
+ 'cadu',
+ 'candela',
+ 'carcmin',
+ 'carcsec',
+ 'cau',
+ 'cb',
+ 'cbarn',
+ 'cbeam',
+ 'cbin',
+ 'cbit',
+ 'cbyte',
+ 'ccd',
+ 'cchan',
+ 'ccount',
+ 'cct',
+ 'cd',
+ 'cdeg',
+ 'cdyn',
+ 'ceV',
+ 'centiBarye',
+ 'centiDa',
+ 'centiDalton',
+ 'centiDebye',
+ 'centiFarad',
+ 'centiGauss',
+ 'centiHenry',
+ 'centiHertz',
+ 'centiJansky',
+ 'centiJoule',
+ 'centiKayser',
+ 'centiKelvin',
+ 'centiNewton',
+ 'centiOhm',
+ 'centiPascal',
+ 'centiRayleigh',
+ 'centiSiemens',
+ 'centiTesla',
+ 'centiVolt',
+ 'centiWatt',
+ 'centiWeber',
+ 'centiamp',
+ 'centiampere',
+ 'centiannum',
+ 'centiarcminute',
+ 'centiarcsecond',
+ 'centiastronomical_unit',
+ 'centibarn',
+ 'centibarye',
+ 'centibit',
+ 'centibyte',
+ 'centicandela',
+ 'centicoulomb',
+ 'centicount',
+ 'centiday',
+ 'centidebye',
+ 'centidegree',
+ 'centidyne',
+ 'centielectronvolt',
+ 'centifarad',
+ 'centigal',
+ 'centigauss',
+ 'centigram',
+ 'centihenry',
+ 'centihertz',
+ 'centihour',
+ 'centihr',
+ 'centijansky',
+ 'centijoule',
+ 'centikayser',
+ 'centilightyear',
+ 'centiliter',
+ 'centilumen',
+ 'centilux',
+ 'centimeter',
+ 'centiminute',
+ 'centimole',
+ 'centinewton',
+ 'centiparsec',
+ 'centipascal',
+ 'centiphoton',
+ 'centipixel',
+ 'centipoise',
+ 'centiradian',
+ 'centirayleigh',
+ 'centirydberg',
+ 'centisecond',
+ 'centisiemens',
+ 'centisteradian',
+ 'centistokes',
+ 'centitesla',
+ 'centivolt',
+ 'centivoxel',
+ 'centiwatt',
+ 'centiweber',
+ 'centiyear',
+ 'cerg',
+ 'cg',
+ 'cgs',
+ 'ch',
+ 'chan',
+ 'ck',
+ 'cl',
+ 'clm',
+ 'clx',
+ 'clyr',
+ 'cm',
+ 'cmag',
+ 'cmin',
+ 'cmol',
+ 'cohm',
+ 'core',
+ 'coulomb',
+ 'count',
+ 'cpc',
+ 'cph',
+ 'cphoton',
+ 'cpix',
+ 'cpixel',
+ 'crad',
+ 'cs',
+ 'csr',
+ 'ct',
+ 'cu',
+ 'curie',
+ 'cvox',
+ 'cvoxel',
+ 'cy',
+ 'cycle',
+ 'cyr',
+ 'd',
+ 'dA',
+ 'dAU',
+ 'dB',
+ 'dBa',
+ 'dC',
+ 'dD',
+ 'dF',
+ 'dG',
+ 'dGal',
+ 'dH',
+ 'dHz',
+ 'dJ',
+ 'dJy',
+ 'dK',
+ 'dL',
+ 'dN',
+ 'dOhm',
+ 'dP',
+ 'dPa',
+ 'dR',
+ 'dRy',
+ 'dS',
+ 'dSt',
+ 'dT',
+ ...]
+
+
+
+
+

To create a quantity, we multiply a value by a unit.

+
+
+
coord = 30 * u.deg
+type(coord)
+
+
+
+
+
astropy.units.quantity.Quantity
+
+
+
+
+

The result is a Quantity object.

+

Jupyter knows how to display Quantities like this:

+
+
+
coord
+
+
+
+
+
+\[30 \; \mathrm{{}^{\circ}}\]
+
+
+
+
+

Selecting a rectangle

+

Now we’ll select a rectangle from -55 to -45 degrees right ascension and -8 to 4 degrees of declination.

+

We’ll define variables to contain these limits.

+
+
+
phi1_min = -55
+phi1_max = -45
+phi2_min = -8
+phi2_max = 4
+
+
+
+
+

To represent a rectangle, we’ll use two lists of coordinates and multiply by their units.

+
+
+
phi1_rect = [phi1_min, phi1_min, phi1_max, phi1_max] * u.deg
+phi2_rect = [phi2_min, phi2_max, phi2_max, phi2_min] * u.deg
+
+
+
+
+

phi1_rect and phi2_rect represent the coordinates of the corners of a rectangle.

+

But they are in “a Heliocentric spherical coordinate system defined by the orbit of the GD1 stream

+

In order to use them in a Gaia query, we have to convert them to International Celestial Reference System (ICRS) coordinates. We can do that by storing the coordinates in a GD1Koposov10 object provided by Gala.

+
+
+
import gala.coordinates as gc
+
+corners = gc.GD1Koposov10(phi1=phi1_rect, phi2=phi2_rect)
+type(corners)
+
+
+
+
+
gala.coordinates.gd1.GD1Koposov10
+
+
+
+
+

We can display the result like this:

+
+
+
corners
+
+
+
+
+
<GD1Koposov10 Coordinate: (phi1, phi2) in deg
+    [(-55., -8.), (-55.,  4.), (-45.,  4.), (-45., -8.)]>
+
+
+
+
+

Now we can use transform_to to convert to ICRS coordinates.

+
+
+
import astropy.coordinates as coord
+
+corners_icrs = corners.transform_to(coord.ICRS)
+type(corners_icrs)
+
+
+
+
+
astropy.coordinates.builtin_frames.icrs.ICRS
+
+
+
+
+

The result is an ICRS object.

+
+
+
corners_icrs
+
+
+
+
+
<ICRS Coordinate: (ra, dec) in deg
+    [(146.27533314, 19.26190982), (135.42163944, 25.87738723),
+     (141.60264825, 34.3048303 ), (152.81671045, 27.13611254)]>
+
+
+
+
+

Notice that a rectangle in one coordinate system is not necessarily a rectangle in another. In this example, the result is a polygon.

+
+
+

Selecting a polygon

+

In order to use this polygon as part of an ADQL query, we have to convert it to a string with a comma-separated list of coordinates, as in this example:

+
"""
+POLYGON(143.65, 20.98, 
+        134.46, 26.39, 
+        140.58, 34.85, 
+        150.16, 29.01)
+"""
+
+
+

corners_icrs behaves like a list, so we can use a for loop to iterate through the points.

+
+
+
for point in corners_icrs:
+    print(point)
+
+
+
+
+
<ICRS Coordinate: (ra, dec) in deg
+    (146.27533314, 19.26190982)>
+<ICRS Coordinate: (ra, dec) in deg
+    (135.42163944, 25.87738723)>
+<ICRS Coordinate: (ra, dec) in deg
+    (141.60264825, 34.3048303)>
+<ICRS Coordinate: (ra, dec) in deg
+    (152.81671045, 27.13611254)>
+
+
+
+
+

From that, we can select the coordinates ra and dec:

+
+
+
for point in corners_icrs:
+    print(point.ra, point.dec)
+
+
+
+
+
146d16m31.1993s 19d15m42.8754s
+135d25m17.902s 25d52m38.594s
+141d36m09.5337s 34d18m17.3891s
+152d49m00.1576s 27d08m10.0051s
+
+
+
+
+

The results are quantities with units, but if we select the value part, we get a dimensionless floating-point number.

+
+
+
for point in corners_icrs:
+    print(point.ra.value, point.dec.value)
+
+
+
+
+
146.27533313607782 19.261909820533692
+135.42163944306296 25.87738722767213
+141.60264825107333 34.304830296257144
+152.81671044675923 27.136112541397996
+
+
+
+
+

We can use string format to convert these numbers to strings.

+
+
+
point_base = "{point.ra.value}, {point.dec.value}"
+
+t = [point_base.format(point=point)
+     for point in corners_icrs]
+t
+
+
+
+
+
['146.27533313607782, 19.261909820533692',
+ '135.42163944306296, 25.87738722767213',
+ '141.60264825107333, 34.304830296257144',
+ '152.81671044675923, 27.136112541397996']
+
+
+
+
+

The result is a list of strings, which we can join into a single string using join.

+
+
+
point_list = ', '.join(t)
+point_list
+
+
+
+
+
'146.27533313607782, 19.261909820533692, 135.42163944306296, 25.87738722767213, 141.60264825107333, 34.304830296257144, 152.81671044675923, 27.136112541397996'
+
+
+
+
+

Notice that we invoke join on a string and pass the list as an argument.

+

Before we can assemble the query, we need columns again (as we saw in the previous notebook).

+
+
+
columns = 'source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity'
+
+
+
+
+

Here’s the base for the query, with format specifiers for columns and point_list.

+
+
+
query_base = """SELECT {columns}
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2 
+  AND 1 = CONTAINS(POINT(ra, dec), 
+                   POLYGON({point_list}))
+"""
+
+
+
+
+

And here’s the result:

+
+
+
query = query_base.format(columns=columns, 
+                          point_list=point_list)
+print(query)
+
+
+
+
+
SELECT source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2 
+  AND 1 = CONTAINS(POINT(ra, dec), 
+                   POLYGON(146.27533313607782, 19.261909820533692, 135.42163944306296, 25.87738722767213, 141.60264825107333, 34.304830296257144, 152.81671044675923, 27.136112541397996))
+
+
+
+
+

As always, we should take a minute to proof-read the query before we launch it.

+

The result will be bigger than our previous queries, so it will take a little longer.

+
+
+
job = Gaia.launch_job_async(query)
+print(job)
+
+
+
+
+
INFO: Query finished. [astroquery.utils.tap.core]
+<Table length=140340>
+      name       dtype    unit                              description                             n_bad 
+--------------- ------- -------- ------------------------------------------------------------------ ------
+      source_id   int64          Unique source identifier (unique within a particular Data Release)      0
+             ra float64      deg                                                    Right ascension      0
+            dec float64      deg                                                        Declination      0
+           pmra float64 mas / yr                         Proper motion in right ascension direction      0
+          pmdec float64 mas / yr                             Proper motion in declination direction      0
+       parallax float64      mas                                                           Parallax      0
+ parallax_error float64      mas                                         Standard error of parallax      0
+radial_velocity float64   km / s                                                    Radial velocity 139374
+Jobid: 1603114980658O
+Phase: COMPLETED
+Owner: None
+Output file: async_20201019094300.vot
+Results: None
+
+
+
+
+

Here are the results.

+
+
+
results = job.get_results()
+len(results)
+
+
+
+
+
140340
+
+
+
+
+

There are more than 100,000 stars in this polygon, but that’s a manageable size to work with.

+
+
+

Saving results

+

This is the set of stars we’ll work with in the next step. But since we have a substantial dataset now, this is a good time to save it.

+

Storing the data in a file means we can shut down this notebook and pick up where we left off without running the previous query again.

+

Astropy Table objects provide write, which writes the table to disk.

+
+
+
filename = 'gd1_results.fits'
+results.write(filename, overwrite=True)
+
+
+
+
+

Because the filename ends with fits, the table is written in the FITS format, which preserves the metadata associated with the table.

+

If the file already exists, the overwrite argument causes it to be overwritten.

+

To see how big the file is, we can use ls with the -lh option, which prints information about the file including its size in human-readable form.

+
+
+
!ls -lh gd1_results.fits
+
+
+
+
+
-rw-rw-r-- 1 downey downey 8.6M Oct 19 09:43 gd1_results.fits
+
+
+
+
+

The file is about 8.6 MB. If you are using Windows, ls might not work; in that case, try:

+
!dir gd1_results.fits
+
+
+
+
+

Summary

+

In this notebook, we composed more complex queries to select stars within a polygonal region of the sky. Then we downloaded the results and saved them in a FITS file.

+

In the next notebook, we’ll reload the data from this file and replicate the next step in the analysis, using proper motion to identify stars likely to be in GD-1.

+
+
+

Best practices

+
    +
  • For measurements with units, use Quantity objects that represent units explicitly and check for errors.

  • +
  • Use the format function to compose queries; it is often faster and less error-prone.

  • +
  • Develop queries incrementally: start with something simple, test it, and add a little bit at a time.

  • +
  • Once you have a query working, save the data in a local file. If you shut down the notebook and come back to it later, you can reload the file; you don’t have to run the query again.

  • +
+
+
+ + + + +
+ +
+
+ + +
+ + Chapter 1 + Chapter 3 + +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/03_motion.html b/03_motion.html new file mode 100644 index 0000000..93bf3ae --- /dev/null +++ b/03_motion.html @@ -0,0 +1,1374 @@ + + + + + + + + Chapter 3 — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
+ +
+

Chapter 3

+

This is the third in a series of notebooks related to astronomy data.

+

As a running example, we are replicating parts of the analysis in a recent paper, “Off the beaten path: Gaia reveals GD-1 stars outside of the main stream” by Adrian M. Price-Whelan and Ana Bonaca.

+

In the first lesson, we wrote ADQL queries and used them to select and download data from the Gaia server.

+

In the second lesson, we wrote a query to select stars from the region of the sky where we expect GD-1 to be, and saved the results in a FITS file.

+

Now we’ll read that data back and implement the next step in the analysis, identifying stars with the proper motion we expect for GD-1.

+
+

Outline

+

Here are the steps in this lesson:

+
    +
  1. We’ll read back the results from the previous lesson, which we saved in a FITS file.

  2. +
  3. Then we’ll transform the coordinates and proper motion data from ICRS back to the coordinate frame of GD-1.

  4. +
  5. We’ll put those results into a Pandas DataFrame, which we’ll use to select stars near the centerline of GD-1.

  6. +
  7. Plotting the proper motion of those stars, we’ll identify a region of proper motion for stars that are likely to be in GD-1.

  8. +
  9. Finally, we’ll select and plot the stars whose proper motion is in that region.

  10. +
+

After completing this lesson, you should be able to

+
    +
  • Select rows and columns from an Astropy Table.

  • +
  • Use Matplotlib to make a scatter plot.

  • +
  • Use Gala to transform coordinates.

  • +
  • Make a Pandas DataFrame and use a Boolean Series to select rows.

  • +
  • Save a DataFrame in an HDF5 file.

  • +
+
+
+

Installing libraries

+

If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we’ll use.

+

If you are running this notebook on your own computer, you might have to install these libraries yourself.

+

If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.

+

TODO: Add a link to the instructions.

+
+
+
# If we're running on Colab, install libraries
+
+import sys
+IN_COLAB = 'google.colab' in sys.modules
+
+if IN_COLAB:
+    !pip install astroquery astro-gala pyia python-wget
+
+
+
+
+
+
+

Reload the data

+

In the previous lesson, we ran a query on the Gaia server and downloaded data for roughly 100,000 stars. We saved the data in a FITS file so that now, picking up where we left off, we can read the data from a local file rather than running the query again.

+

If you ran the previous lesson successfully, you should already have a file called gd1_results.fits that contains the data we downloaded.

+

If not, you can run the following cell, which downloads the data from our repository.

+
+
+
import os
+from wget import download
+
+filename = 'gd1_results.fits'
+path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'
+
+if not os.path.exists(filename):
+    print(download(path+filename))
+
+
+
+
+

Now here’s how we can read the data from the file back into an Astropy Table:

+
+
+
from astropy.table import Table
+
+results = Table.read(filename)
+
+
+
+
+

The result is an Astropy Table.

+

We can use info to refresh our memory of the contents.

+
+
+
results.info
+
+
+
+
+
<Table length=140340>
+      name       dtype    unit                              description                            
+--------------- ------- -------- ------------------------------------------------------------------
+      source_id   int64          Unique source identifier (unique within a particular Data Release)
+             ra float64      deg                                                    Right ascension
+            dec float64      deg                                                        Declination
+           pmra float64 mas / yr                         Proper motion in right ascension direction
+          pmdec float64 mas / yr                             Proper motion in declination direction
+       parallax float64      mas                                                           Parallax
+ parallax_error float64      mas                                         Standard error of parallax
+radial_velocity float64   km / s                                                    Radial velocity
+
+
+
+
+
+
+

Selecting rows and columns

+

In this section we’ll see operations for selecting columns and rows from an Astropy Table. You can find more information about these operations in the Astropy documentation.

+

We can get the names of the columns like this:

+
+
+
results.colnames
+
+
+
+
+
['source_id',
+ 'ra',
+ 'dec',
+ 'pmra',
+ 'pmdec',
+ 'parallax',
+ 'parallax_error',
+ 'radial_velocity']
+
+
+
+
+

And select an individual column like this:

+
+
+
results['ra']
+
+
+
+
+
<Column name='ra' dtype='float64' unit='deg' description='Right ascension' length=140340> + + + + + + + + + + + + + + + + + + + + + + + + + + +
142.48301935991023
142.25452941346344
142.64528557468074
142.57739430926034
142.58913564478618
141.81762228999614
143.18339801317677
142.9347319464589
142.26769745823267
142.89551292869012
142.2780935768316
142.06138786534987
...
143.05456487172972
144.0436496516182
144.06566578919313
144.13177563215973
143.77696341662764
142.945956347594
142.97282480557786
143.4166017695258
143.64484588686904
143.41554585481808
143.6908739159247
143.7702681295401
+
+

The result is a Column object that contains the data, and also the data type, units, and name of the column.

+
+
+
type(results['ra'])
+
+
+
+
+
astropy.table.column.Column
+
+
+
+
+

The rows in the Table are numbered from 0 to n-1, where n is the number of rows. We can select the first row like this:

+
+
+
results[0]
+
+
+
+
+
Row index=0 + + + + + +
source_idradecpmrapmdecparallaxparallax_errorradial_velocity
degdegmas / yrmas / yrmasmaskm / s
int64float64float64float64float64float64float64float64
637987125186749568142.4830193599102321.75771616932985-2.51683846838757662.941813096629439-0.25734489623333540.8237207945098111e+20
+
+

As you might have guessed, the result is a Row object.

+
+
+
type(results[0])
+
+
+
+
+
astropy.table.row.Row
+
+
+
+
+

Notice that the bracket operator selects both columns and rows. You might wonder how it knows which to select.

+

If the expression in brackets is a string, it selects a column; if the expression is an integer, it selects a row.

+

If you apply the bracket operator twice, you can select a column and then an element from the column.

+
+
+
results['ra'][0]
+
+
+
+
+
142.48301935991023
+
+
+
+
+

Or you can select a row and then an element from the row.

+
+
+
results[0]['ra']
+
+
+
+
+
142.48301935991023
+
+
+
+
+

You get the same result either way.

+
+
+

Scatter plot

+

To see what the results look like, we’ll use a scatter plot. The library we’ll use is Matplotlib, which is the most widely-used plotting library for Python.

+

The Matplotlib interface is based on MATLAB (hence the name), so if you know MATLAB, some of it will be familiar.

+

We’ll import like this.

+
+
+
import matplotlib.pyplot as plt
+
+
+
+
+

Pyplot part of the Matplotlib library. It is conventional to import it using the shortened name plt.

+

Pyplot provides two functions that can make scatterplots, plt.scatter and plt.plot.

+
    +
  • scatter is more versatile; for example, you can make every point in a scatter plot a different color.

  • +
  • plot is more limited, but for simple cases, it can be substantially faster.

  • +
+

Jake Vanderplas explains these differences in The Python Data Science Handbook

+

Since we are plotting more than 100,000 points and they are all the same size and color, we’ll use plot.

+

Here’s a scatter plot with right ascension on the x-axis and declination on the y-axis, both ICRS coordinates in degrees.

+
+
+
x = results['ra']
+y = results['dec']
+plt.plot(x, y, 'ko')
+
+plt.xlabel('ra (degree ICRS)')
+plt.ylabel('dec (degree ICRS)');
+
+
+
+
+_images/03_motion_28_0.png +
+
+

The arguments to plt.plot are x, y, and a string that specifies the style. In this case, the letters ko indicate that we want a black, round marker (k is for black because b is for blue).

+

The functions xlabel and ylabel put labels on the axes.

+

This scatter plot has a problem. It is “overplotted”, which means that there are so many overlapping points, we can’t distinguish between high and low density areas.

+

To fix this, we can provide optional arguments to control the size and transparency of the points.

+

Exercise: In the call to plt.plot, add the keyword argument markersize=0.1 to make the markers smaller.

+

Then add the argument alpha=0.1 to make the markers nearly transparent.

+

Adjust these arguments until you think the figure shows the data most clearly.

+

Note: Once you have made these changes, you might notice that the figure shows stripes with lower density of stars. These stripes are caused by the way Gaia scans the sky, which you can read about here. The dataset we are using, Gaia Data Release 2, covers 22 months of observations; during this time, some parts of the sky were scanned more than others.

+
+
+

Transform back

+

Remember that we selected data from a rectangle of coordinates in the GD1Koposov10 frame, then transformed them to ICRS when we constructed the query. +The coordinates in results are in ICRS.

+

To plot them, we will transform them back to the GD1Koposov10 frame; that way, the axes of the figure are aligned with the GD-1, which will make it easy to select stars near the centerline of the stream.

+

To do that, we’ll put the results into a GaiaData object, provided by the pyia library.

+
+
+
from pyia import GaiaData
+
+gaia_data = GaiaData(results)
+type(gaia_data)
+
+
+
+
+
pyia.data.GaiaData
+
+
+
+
+

Now we can extract sky coordinates from the GaiaData object, like this:

+
+
+
import astropy.units as u
+
+skycoord = gaia_data.get_skycoord(
+                distance=8*u.kpc, 
+                radial_velocity=0*u.km/u.s)
+
+
+
+
+

We provide distance and radial_velocity to prepare the data for reflex correction, which we explain below.

+
+
+
type(skycoord)
+
+
+
+
+
astropy.coordinates.sky_coordinate.SkyCoord
+
+
+
+
+

The result is an Astropy SkyCoord object (documentation here), which provides transform_to, so we can transform the coordinates to other frames.

+
+
+
import gala.coordinates as gc
+
+transformed = skycoord.transform_to(gc.GD1Koposov10)
+type(transformed)
+
+
+
+
+
astropy.coordinates.sky_coordinate.SkyCoord
+
+
+
+
+

The result is another SkyCoord object, now in the GD1Koposov10 frame.

+

The next step is to correct the proper motion measurements from Gaia for reflex due to the motion of our solar system around the Galactic center.

+

When we created skycoord, we provided distance and radial_velocity as arguments, which means we ignore the measurements provided by Gaia and replace them with these fixed values.

+

That might seem like a strange thing to do, but here’s the motivation:

+
    +
  • Because the stars in GD-1 are so far away, the distance estimates we get from Gaia, which are based on parallax, are not very precise. So we replace them with our current best estimate of the mean distance to GD-1, about 8 kpc. See Koposov, Rix, and Hogg, 2010.

  • +
  • For the other stars in the table, this distance estimate will be inaccurate, so reflex correction will not be correct. But that should have only a small effect on our ability to identify stars with the proper motion we expect for GD-1.

  • +
  • The measurement of radial velocity has no effect on the correction for proper motion; the value we provide is arbitrary, but we have to provide a value to avoid errors in the reflex correction calculation.

  • +
+

We are grateful to Adrian Price-Whelen for his help explaining this step in the analysis.

+

With this preparation, we can use reflex_correct from Gala (documentation here) to correct for solar reflex motion.

+
+
+
gd1_coord = gc.reflex_correct(transformed)
+
+type(gd1_coord)
+
+
+
+
+
astropy.coordinates.sky_coordinate.SkyCoord
+
+
+
+
+

The result is a SkyCoord object that contains

+
    +
  • The transformed coordinates as attributes named phi1 and phi2, which represent right ascension and declination in the GD1Koposov10 frame.

  • +
  • The transformed and corrected proper motions as pm_phi1_cosphi2 and pm_phi2.

  • +
+

We can select the coordinates like this:

+
+
+
phi1 = gd1_coord.phi1
+phi2 = gd1_coord.phi2
+
+
+
+
+

And plot them like this:

+
+
+
plt.plot(phi1, phi2, 'ko', markersize=0.1, alpha=0.2)
+
+plt.xlabel('ra (degree GD1)')
+plt.ylabel('dec (degree GD1)');
+
+
+
+
+_images/03_motion_45_0.png +
+
+

Remember that we started with a rectangle in GD-1 coordinates. When transformed to ICRS, it’s a non-rectangular polygon. Now that we have transformed back to GD-1 coordinates, it’s a rectangle again.

+
+
+

Pandas DataFrame

+

At this point we have three objects containing different subsets of the data.

+
+
+
type(results)
+
+
+
+
+
astropy.table.table.Table
+
+
+
+
+
+
+
type(gaia_data)
+
+
+
+
+
pyia.data.GaiaData
+
+
+
+
+
+
+
type(gd1_coord)
+
+
+
+
+
astropy.coordinates.sky_coordinate.SkyCoord
+
+
+
+
+

On one hand, this makes sense, since each object provides different capabilities. But working with three different object types can be awkward.

+

It will be more convenient to choose one object and get all of the data into it. We’ll use a Pandas DataFrame, for two reasons:

+
    +
  1. It provides capabilities that are pretty much a superset of the other data structures, so it’s the all-in-one solution.

  2. +
  3. Pandas is a general-purpose tool that is useful in many domains, especially data science. If you are going to develop expertise in one tool, Pandas is a good choice.

  4. +
+

However, compared to an Astropy Table, Pandas has one big drawback: it does not keep the metadata associated with the table, including the units for the columns.

+

It’s easy to convert a Table to a Pandas DataFrame.

+
+
+
import pandas as pd
+
+df = results.to_pandas()
+df.shape
+
+
+
+
+
(140340, 8)
+
+
+
+
+

DataFrame provides shape, which shows the number of rows and columns.

+

It also provides head, which displays the first few rows. It is useful for spot-checking large results as you go along.

+
+
+
df.head()
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
source_idradecpmrapmdecparallaxparallax_errorradial_velocity
0637987125186749568142.48301921.757716-2.5168382.941813-0.2573450.8237211.000000e+20
1638285195917112960142.25452922.4761682.662702-12.1659840.4227280.2974721.000000e+20
2638073505568978688142.64528622.16693218.306747-7.9506600.1036400.5445841.000000e+20
3638086386175786752142.57739422.2279200.987786-2.584105-0.8573271.0596071.000000e+20
4638049655615392384142.58913622.1107830.244439-4.9410790.0996250.4862241.000000e+20
+
+
+

Python detail: shape is an attribute, so we can display it’s value without calling it as a function; head is a function, so we need the parentheses.

+

Now we can extract the columns we want from gd1_coord and add them as columns in the DataFrame. phi1 and phi2 contain the transformed coordinates.

+
+
+
df['phi1'] = gd1_coord.phi1
+df['phi2'] = gd1_coord.phi2
+df.shape
+
+
+
+
+
(140340, 10)
+
+
+
+
+

pm_phi1_cosphi2 and pm_phi2 contain the components of proper motion in the transformed frame.

+
+
+
df['pm_phi1'] = gd1_coord.pm_phi1_cosphi2
+df['pm_phi2'] = gd1_coord.pm_phi2
+df.shape
+
+
+
+
+
(140340, 12)
+
+
+
+
+

Detail: If you notice that SkyCoord has an attribute called proper_motion, you might wonder why we are not using it.

+

We could have: proper_motion contains the same data as pm_phi1_cosphi2 and pm_phi2, but in a different format.

+
+
+

Plot proper motion

+

Now we are ready to replicate one of the panels in Figure 1 of the Price-Whelan and Bonaca paper, the one that shows the components of proper motion as a scatter plot:

+ +

In this figure, the shaded area is a high-density region of stars with the proper motion we expect for stars in GD-1.

+
    +
  • Due to the nature of tidal streams, we expect the proper motion for most stars to be along the axis of the stream; that is, we expect motion in the direction of phi2 to be near 0.

  • +
  • In the direction of phi1, we don’t have a prior expectation for proper motion, except that it should form a cluster at a non-zero value.

  • +
+

To locate this cluster, we’ll select stars near the centerline of GD-1 and plot their proper motion.

+
+
+

Selecting the centerline

+

As we can see in the following figure, many stars in GD-1 are less than 1 degree of declination from the line phi2=0.

+ +

If we select stars near this line, they are more likely to be in GD-1.

+

We’ll start by selecting the phi2 column from the DataFrame:

+
+
+
phi2 = df['phi2']
+type(phi2)
+
+
+
+
+
pandas.core.series.Series
+
+
+
+
+

The result is a Series, which is the structure Pandas uses to represent columns.

+

We can use a comparison operator, >, to compare the values in a Series to a constant.

+
+
+
phi2_min = -1.0 * u.deg
+phi2_max = 1.0 * u.deg
+
+mask = (df['phi2'] > phi2_min)
+type(mask)
+
+
+
+
+
pandas.core.series.Series
+
+
+
+
+
+
+
mask.dtype
+
+
+
+
+
dtype('bool')
+
+
+
+
+

The result is a Series of Boolean values, that is, True and False.

+
+
+
mask.head()
+
+
+
+
+
0    False
+1    False
+2    False
+3    False
+4    False
+Name: phi2, dtype: bool
+
+
+
+
+

A Boolean Series is sometimes called a “mask” because we can use it to mask out some of the rows in a DataFrame and select the rest, like this:

+
+
+
selected = df[mask]
+type(selected)
+
+
+
+
+
pandas.core.frame.DataFrame
+
+
+
+
+

selected is a DataFrame that contains only the rows from df that correspond to True values in mask.

+

The previous mask selects all stars where phi2 exceeds phi2_min; now we’ll select stars where phi2 falls between phi2_min and phi2_max.

+
+
+
phi_mask = ((df['phi2'] > phi2_min) & 
+            (df['phi2'] < phi2_max))
+
+
+
+
+

The & operator computes “logical AND”, which means the result is true where elements from both Boolean Series are true.

+

The sum of a Boolean Series is the number of True values, so we can use sum to see how many stars are in the selected region.

+
+
+
phi_mask.sum()
+
+
+
+
+
25084
+
+
+
+
+

And we can use phi1_mask to select stars near the centerline, which are more likely to be in GD-1.

+
+
+
centerline = df[phi_mask]
+len(centerline)
+
+
+
+
+
25084
+
+
+
+
+

Here’s a scatter plot of proper motion for the selected stars.

+
+
+
pm1 = centerline['pm_phi1']
+pm2 = centerline['pm_phi2']
+
+plt.plot(pm1, pm2, 'ko', markersize=0.1, alpha=0.1)
+    
+plt.xlabel('Proper motion phi1 (GD1 frame)')
+plt.ylabel('Proper motion phi2 (GD1 frame)');
+
+
+
+
+_images/03_motion_79_0.png +
+
+

Looking at these results, we see a large cluster around (0, 0), and a smaller cluster near (0, -10).

+

We can use xlim and ylim to set the limits on the axes and zoom in on the region near (0, 0).

+
+
+
pm1 = centerline['pm_phi1']
+pm2 = centerline['pm_phi2']
+
+plt.plot(pm1, pm2, 'ko', markersize=0.3, alpha=0.3)
+    
+plt.xlabel('Proper motion phi1 (GD1 frame)')
+plt.ylabel('Proper motion phi2 (GD1 frame)')
+
+plt.xlim(-12, 8)
+plt.ylim(-10, 10);
+
+
+
+
+_images/03_motion_81_0.png +
+
+

Now we can see the smaller cluster more clearly.

+

You might notice that our figure is less dense than the one in the paper. That’s because we started with a set of stars from a relatively small region. The figure in the paper is based on a region about 10 times bigger.

+

In the next lesson we’ll go back and select stars from a larger region. But first we’ll use the proper motion data to identify stars likely to be in GD-1.

+
+
+

Filtering based on proper motion

+

The next step is to select stars in the “overdense” region of proper motion, which are candidates to be in GD-1.

+

In the original paper, Price-Whelan and Bonaca used a polygon to cover this region, as shown in this figure.

+ +

We’ll use a simple rectangle for now, but in a later lesson we’ll see how to select a polygonal region as well.

+

Here are bounds on proper motion we chose by eye,

+
+
+
pm1_min = -8.9
+pm1_max = -6.9
+pm2_min = -2.2
+pm2_max =  1.0
+
+
+
+
+

To draw these bounds, we’ll make two lists containing the coordinates of the corners of the rectangle.

+
+
+
pm1_rect = [pm1_min, pm1_min, pm1_max, pm1_max, pm1_min] * u.mas/u.yr
+pm2_rect = [pm2_min, pm2_max, pm2_max, pm2_min, pm2_min] * u.mas/u.yr
+
+
+
+
+

Here’s what the plot looks like with the bounds we chose.

+
+
+
plt.plot(pm1, pm2, 'ko', markersize=0.3, alpha=0.3)
+plt.plot(pm1_rect, pm2_rect, '-')
+    
+plt.xlabel('Proper motion phi1 (GD1 frame)')
+plt.ylabel('Proper motion phi2 (GD1 frame)')
+
+plt.xlim(-12, 8)
+plt.ylim(-10, 10);
+
+
+
+
+_images/03_motion_88_0.png +
+
+

To select rows that fall within these bounds, we’ll use the following function, which uses Pandas operators to make a mask that selects rows where series falls between low and high.

+
+
+
def between(series, low, high):
+    """Make a Boolean Series.
+    
+    series: Pandas Series
+    low: lower bound
+    high: upper bound
+    
+    returns: Boolean Series
+    """
+    return (series > low) & (series < high)
+
+
+
+
+

The following mask select stars with proper motion in the region we chose.

+
+
+
pm_mask = (between(df['pm_phi1'], pm1_min, pm1_max) & 
+           between(df['pm_phi2'], pm2_min, pm2_max))
+
+
+
+
+

Again, the sum of a Boolean series is the number of True values.

+
+
+
pm_mask.sum()
+
+
+
+
+
1049
+
+
+
+
+

Now we can use this mask to select rows from df.

+
+
+
selected = df[pm_mask]
+len(selected)
+
+
+
+
+
1049
+
+
+
+
+

These are the stars we think are likely to be in GD-1. Let’s see what they look like, plotting their coordinates (not their proper motion).

+
+
+
phi1 = selected['phi1']
+phi2 = selected['phi2']
+
+plt.plot(phi1, phi2, 'ko', markersize=0.5, alpha=0.5)
+
+plt.xlabel('ra (degree GD1)')
+plt.ylabel('dec (degree GD1)');
+
+
+
+
+_images/03_motion_98_0.png +
+
+

Now that’s starting to look like a tidal stream!

+
+
+

Saving the DataFrame

+

At this point we have run a successful query and cleaned up the results; this is a good time to save the data.

+

To save a Pandas DataFrame, one option is to convert it to an Astropy Table, like this:

+
+
+
selected_table = Table.from_pandas(selected)
+type(selected_table)
+
+
+
+
+
astropy.table.table.Table
+
+
+
+
+

Then we could write the Table to a FITS file, as we did in the previous lesson.

+

But Pandas provides functions to write DataFrames in other formats; to see what they are find the functions here that begin with to_.

+

One of the best options is HDF5, which is Version 5 of Hierarchical Data Format.

+

HDF5 is a binary format, so files are small and fast to read and write (like FITS, but unlike XML).

+

An HDF5 file is similar to an SQL database in the sense that it can contain more than one table, although in HDF5 vocabulary, a table is called a Dataset. (Multi-extension FITS files can also contain more than one table.)

+

And HDF5 stores the metadata associated with the table, including column names, row labels, and data types (like FITS).

+

Finally, HDF5 is a cross-language standard, so if you write an HDF5 file with Pandas, you can read it back with many other software tools (more than FITS).

+

Before we write the HDF5, let’s delete the old one, if it exists.

+
+
+
!rm -f gd1_dataframe.hdf5
+
+
+
+
+

We can write a Pandas DataFrame to an HDF5 file like this:

+
+
+
filename = 'gd1_dataframe.hdf5'
+
+df.to_hdf(filename, 'df')
+
+
+
+
+

Because an HDF5 file can contain more than one Dataset, we have to provide a name, or “key”, that identifies the Dataset in the file.

+

We could use any string as the key, but in this example I use the variable name df.

+

Exercise: We’re going to need centerline and selected later as well. Write a line or two of code to add it as a second Dataset in the HDF5 file.

+
+
+
# Solution
+
+centerline.to_hdf(filename, 'centerline')
+selected.to_hdf(filename, 'selected')
+
+
+
+
+

Detail: Reading and writing HDF5 tables requires a library called PyTables that is not always installed with Pandas. You can install it with pip like this:

+
pip install tables
+
+
+

If you install it using Conda, the name of the package is pytables.

+
conda install pytables
+
+
+

We can use ls to confirm that the file exists and check the size:

+
+
+
!ls -lh gd1_dataframe.hdf5
+
+
+
+
+
-rw-rw-r-- 1 downey downey 17M Oct 19 12:05 gd1_dataframe.hdf5
+
+
+
+
+

If you are using Windows, ls might not work; in that case, try:

+
!dir gd1_dataframe.hdf5
+
+
+

We can read the file back like this:

+
+
+
read_back_df = pd.read_hdf(filename, 'df')
+read_back_df.shape
+
+
+
+
+
(140340, 12)
+
+
+
+
+

Pandas can write a variety of other formats, which you can read about here.

+
+
+

Summary

+

In this lesson, we re-loaded the Gaia data we saved from a previous query.

+

We transformed the coordinates and proper motion from ICRS to a frame aligned with GD-1, and stored the results in a Pandas DataFrame.

+

Then we replicated the selection process from the Price-Whelan and Bonaca paper:

+
    +
  • We selected stars near the centerline of GD-1 and made a scatter plot of their proper motion.

  • +
  • We identified a region of proper motion that contains stars likely to be in GD-1.

  • +
  • We used a Boolean Series as a mask to select stars whose proper motion is in that region.

  • +
+

So far, we have used data from a relatively small region of the sky. In the next lesson, we’ll write a query that selects stars based on proper motion, which will allow us to explore a larger region.

+
+
+

Best practices

+
    +
  • When you make a scatter plot, adjust the size of the markers and their transparency so the figure is not overplotted; otherwise it can misrepresent the data badly.

  • +
  • For simple scatter plots in Matplotlib, plot is faster than scatter.

  • +
  • An Astropy Table and a Pandas DataFrame are similar in many ways and they provide many of the same functions. They have pros and cons, but for many projects, either one would be a reasonable choice.

  • +
+
+
+ + + + +
+ +
+
+ + +
+ + Chapter 2 + Chapter 4 + +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/04_select.html b/04_select.html new file mode 100644 index 0000000..eee4bb2 --- /dev/null +++ b/04_select.html @@ -0,0 +1,1270 @@ + + + + + + + + Chapter 4 — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
+ +
+

Chapter 4

+

This is the fourth in a series of notebooks related to astronomy data.

+

As a running example, we are replicating parts of the analysis in a recent paper, “Off the beaten path: Gaia reveals GD-1 stars outside of the main stream” by Adrian M. Price-Whelan and Ana Bonaca.

+

In the first lesson, we wrote ADQL queries and used them to select and download data from the Gaia server.

+

In the second lesson, we write a query to select stars from the region of the sky where we expect GD-1 to be, and save the results in a FITS file.

+

In the third lesson, we read that data back and identified stars with the proper motion we expect for GD-1.

+
+

Outline

+

Here are the steps in this lesson:

+
    +
  1. Using data from the previous lesson, we’ll identify the values of proper motion for stars likely to be in GD-1.

  2. +
  3. Then we’ll compose an ADQL query that selects stars based on proper motion, so we can download only the data we need.

  4. +
  5. We’ll also see how to write the results to a CSV file.

  6. +
+

That will make it possible to search a bigger region of the sky in a single query.

+

After completing this lesson, you should be able to

+
    +
  • Convert proper motion between frames.

  • +
  • Write an ADQL query that selects based on proper motion.

  • +
+
+
+

Installing libraries

+

If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we’ll use.

+

If you are running this notebook on your own computer, you might have to install these libraries yourself.

+

If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.

+

TODO: Add a link to the instructions.

+
+
+
# If we're running on Colab, install libraries
+
+import sys
+IN_COLAB = 'google.colab' in sys.modules
+
+if IN_COLAB:
+    !pip install astroquery astro-gala pyia python-wget
+
+
+
+
+
+
+

Reload the data

+

The following cells download the data from the previous lesson, if necessary, and load it into a Pandas DataFrame.

+
+
+
import os
+from wget import download
+
+filename = 'gd1_dataframe.hdf5'
+path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'
+
+if not os.path.exists(filename):
+    print(download(path+filename))
+
+
+
+
+
+
+
import pandas as pd
+
+df = pd.read_hdf(filename, 'df')
+centerline = pd.read_hdf(filename, 'centerline')
+selected = pd.read_hdf(filename, 'selected')
+
+
+
+
+
+
+

Selection by proper motion

+

At this point we have downloaded data for a relatively large number of stars (more than 100,000) and selected a relatively small number (around 1000).

+

It would be more efficient to use ADQL to select only the stars we need. That would also make it possible to download data covering a larger region of the sky.

+

However, the selection we did was based on proper motion in the GD1Koposov10 frame. In order to do the same selection in ADQL, we have to work with proper motions in ICRS.

+

As a reminder, here’s the rectangle we selected based on proper motion in the GD1Koposov10 frame.

+
+
+
pm1_min = -8.9
+pm1_max = -6.9
+pm2_min = -2.2
+pm2_max =  1.0
+
+
+
+
+
+
+
import astropy.units as u
+
+pm1_rect = [pm1_min, pm1_min, pm1_max, pm1_max, pm1_min] * u.mas/u.yr
+pm2_rect = [pm2_min, pm2_max, pm2_max, pm2_min, pm2_min] * u.mas/u.yr
+
+
+
+
+

The following figure shows:

+
    +
  • Proper motion for the stars we selected along the center line of GD-1,

  • +
  • The rectangle we selected, and

  • +
  • The stars inside the rectangle highlighted in green.

  • +
+
+
+
import matplotlib.pyplot as plt
+
+pm1 = centerline['pm_phi1']
+pm2 = centerline['pm_phi2']
+plt.plot(pm1, pm2, 'ko', markersize=0.3, alpha=0.3)
+
+pm1 = selected['pm_phi1']
+pm2 = selected['pm_phi2']
+plt.plot(pm1, pm2, 'gx', markersize=0.3, alpha=0.3)
+
+plt.plot(pm1_rect, pm2_rect, '-')
+    
+plt.xlabel('Proper motion phi1 (GD1 frame)')
+plt.ylabel('Proper motion phi2 (GD1 frame)')
+
+plt.xlim(-12, 8)
+plt.ylim(-10, 10);
+
+
+
+
+_images/04_select_11_0.png +
+
+

Now we’ll make the same plot using proper motions in the ICRS frame, which are stored in columns pmra and pmdec.

+
+
+
pm1 = centerline['pmra']
+pm2 = centerline['pmdec']
+plt.plot(pm1, pm2, 'ko', markersize=0.3, alpha=0.3)
+
+pm1 = selected['pmra']
+pm2 = selected['pmdec']
+plt.plot(pm1, pm2, 'gx', markersize=1, alpha=0.3)
+    
+plt.xlabel('Proper motion phi1 (ICRS frame)')
+plt.ylabel('Proper motion phi2 (ICRS frame)')
+
+plt.xlim([-10, 5])
+plt.ylim([-20, 5]);
+
+
+
+
+_images/04_select_13_0.png +
+
+

The proper motions of the selected stars are more spread out in this frame, which is why it was preferable to do the selection in the GD-1 frame.

+

But now we can define a polygon that encloses the proper motions of these stars in ICRS, +and use the polygon as a selection criterion in an ADQL query.

+

SciPy provides a function that computes the convex hull of a set of points, which is the smallest convex polygon that contains all of the points.

+

To use it, I’ll select columns pmra and pmdec and convert them to a NumPy array.

+
+
+
import numpy as np
+
+points = selected[['pmra','pmdec']].to_numpy()
+points.shape
+
+
+
+
+
(1049, 2)
+
+
+
+
+

We’ll pass the points to ConvexHull, which returns an object that contains the results.

+
+
+
from scipy.spatial import ConvexHull
+
+hull = ConvexHull(points)
+hull
+
+
+
+
+
<scipy.spatial.qhull.ConvexHull at 0x7f446b1e8bb0>
+
+
+
+
+

hull.vertices contains the indices of the points that fall on the perimeter of the hull.

+
+
+
hull.vertices
+
+
+
+
+
array([ 692,  873,  141,  303,   42,  622,   45,   83,  127,  182, 1006,
+        971,  967, 1001,  969,  940], dtype=int32)
+
+
+
+
+

We can use them as an index into the original array to select the corresponding rows.

+
+
+
pm_vertices = points[hull.vertices]
+pm_vertices
+
+
+
+
+
array([[ -4.05037121, -14.75623261],
+       [ -3.41981085, -14.72365546],
+       [ -3.03521988, -14.44357135],
+       [ -2.26847919, -13.7140236 ],
+       [ -2.61172203, -13.24797471],
+       [ -2.73471401, -13.09054471],
+       [ -3.19923146, -12.5942653 ],
+       [ -3.34082546, -12.47611926],
+       [ -5.67489413, -11.16083338],
+       [ -5.95159272, -11.10547884],
+       [ -6.42394023, -11.05981295],
+       [ -7.09631023, -11.95187806],
+       [ -7.30641519, -12.24559977],
+       [ -7.04016696, -12.88580702],
+       [ -6.00347705, -13.75912098],
+       [ -4.42442296, -14.74641176]])
+
+
+
+
+

To plot the resulting polygon, we have to pull out the x and y coordinates.

+
+
+
pmra_poly, pmdec_poly = np.transpose(pm_vertices)
+
+
+
+
+

The following figure shows proper motion in ICRS again, along with the convex hull we just computed.

+
+
+
pm1 = centerline['pmra']
+pm2 = centerline['pmdec']
+plt.plot(pm1, pm2, 'ko', markersize=0.3, alpha=0.3)
+
+pm1 = selected['pmra']
+pm2 = selected['pmdec']
+plt.plot(pm1, pm2, 'gx', markersize=0.3, alpha=0.3)
+
+plt.plot(pmra_poly, pmdec_poly)
+    
+plt.xlabel('Proper motion phi1 (ICRS frame)')
+plt.ylabel('Proper motion phi2 (ICRS frame)')
+
+plt.xlim([-10, 5])
+plt.ylim([-20, 5]);
+
+
+
+
+_images/04_select_25_0.png +
+
+

To use pm_vertices as part of an ADQL query, we have to convert it to a string.

+

We’ll use flatten to convert from a 2-D array to a 1-D array, and str to convert each element to a string.

+
+
+
t = [str(x) for x in pm_vertices.flatten()]
+t
+
+
+
+
+
['-4.050371212154984',
+ '-14.75623260987968',
+ '-3.4198108491382455',
+ '-14.723655456335619',
+ '-3.035219883740934',
+ '-14.443571352854612',
+ '-2.268479190206636',
+ '-13.714023598831554',
+ '-2.611722027231764',
+ '-13.247974712069263',
+ '-2.7347140078529106',
+ '-13.090544709622938',
+ '-3.199231461993783',
+ '-12.594265302440828',
+ '-3.34082545787549',
+ '-12.476119260818695',
+ '-5.674894125178565',
+ '-11.160833381392624',
+ '-5.95159272432137',
+ '-11.105478836426514',
+ '-6.423940229776128',
+ '-11.05981294804957',
+ '-7.096310230579248',
+ '-11.951878058650085',
+ '-7.306415190921692',
+ '-12.245599765990594',
+ '-7.040166963232815',
+ '-12.885807024935527',
+ '-6.0034770546523735',
+ '-13.759120984106968',
+ '-4.42442296194263',
+ '-14.7464117578883']
+
+
+
+
+

Now t is a list of strings; we can use join to make a single string with commas between the elements.

+
+
+
pm_point_list = ', '.join(t)
+pm_point_list
+
+
+
+
+
'-4.050371212154984, -14.75623260987968, -3.4198108491382455, -14.723655456335619, -3.035219883740934, -14.443571352854612, -2.268479190206636, -13.714023598831554, -2.611722027231764, -13.247974712069263, -2.7347140078529106, -13.090544709622938, -3.199231461993783, -12.594265302440828, -3.34082545787549, -12.476119260818695, -5.674894125178565, -11.160833381392624, -5.95159272432137, -11.105478836426514, -6.423940229776128, -11.05981294804957, -7.096310230579248, -11.951878058650085, -7.306415190921692, -12.245599765990594, -7.040166963232815, -12.885807024935527, -6.0034770546523735, -13.759120984106968, -4.42442296194263, -14.7464117578883'
+
+
+
+
+
+
+

Selecting the region

+

Let’s review how we got to this point.

+
    +
  1. We made an ADQL query to the Gaia server to get data for stars in the vicinity of GD-1.

  2. +
  3. We transformed to GD1 coordinates so we could select stars along the centerline of GD-1.

  4. +
  5. We plotted the proper motion of the centerline stars to identify the bounds of the overdense region.

  6. +
  7. We made a mask that selects stars whose proper motion is in the overdense region.

  8. +
+

The problem is that we downloaded data for more than 100,000 stars and selected only about 1000 of them.

+

It will be more efficient if we select on proper motion as part of the query. That will allow us to work with a larger region of the sky in a single query, and download less unneeded data.

+

This query will select on the following conditions:

+
    +
  • parallax < 1

  • +
  • bp_rp BETWEEN -0.75 AND 2

  • +
  • Coordinates within a rectangle in the GD-1 frame, transformed to ICRS.

  • +
  • Proper motion with the polygon we just computed.

  • +
+

The first three conditions are the same as in the previous query. Only the last one is new.

+

Here’s the rectangle in the GD-1 frame we’ll select.

+
+
+
phi1_min = -70
+phi1_max = -20
+phi2_min = -5
+phi2_max = 5
+
+
+
+
+
+
+
phi1_rect = [phi1_min, phi1_min, phi1_max, phi1_max] * u.deg
+phi2_rect = [phi2_min, phi2_max, phi2_max, phi2_min] * u.deg
+
+
+
+
+

Here’s how we transform it to ICRS, as we saw in the previous lesson.

+
+
+
import gala.coordinates as gc
+import astropy.coordinates as coord
+
+corners = gc.GD1Koposov10(phi1=phi1_rect, phi2=phi2_rect)
+corners_icrs = corners.transform_to(coord.ICRS)
+
+
+
+
+

To use corners_icrs as part of an ADQL query, we have to convert it to a string. Here’s how we do that, as we saw in the previous lesson.

+
+
+
point_base = "{point.ra.value}, {point.dec.value}"
+
+t = [point_base.format(point=point)
+     for point in corners_icrs]
+
+point_list = ', '.join(t)
+point_list
+
+
+
+
+
'135.30559858565638, 8.398623940157561, 126.50951508623503, 13.44494195652069, 163.0173655836748, 54.24242734020255, 172.9328536286811, 46.47260492416258'
+
+
+
+
+

Now we have everything we need to assemble the query.

+
+
+

Assemble the query

+

Here’s the base string we used for the query in the previous lesson.

+
+
+
query_base = """SELECT 
+{columns}
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2 
+  AND 1 = CONTAINS(POINT(ra, dec), 
+                   POLYGON({point_list}))
+"""
+
+
+
+
+

Exercise: Modify query_base by adding a new clause to select stars whose coordinates of proper motion, pmra and pmdec, fall within the polygon defined by pm_point_list.

+
+
+
# Solution
+
+query_base = """SELECT 
+{columns}
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2 
+  AND 1 = CONTAINS(POINT(ra, dec), 
+                   POLYGON({point_list}))
+  AND 1 = CONTAINS(POINT(pmra, pmdec),
+                   POLYGON({pm_point_list}))
+"""
+
+
+
+
+

Here again are the columns we want to select.

+
+
+
columns = 'source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity'
+
+
+
+
+

Exercise: Use format to format query_base and define query, filling in the values of columns, point_list, and pm_point_list.

+
+
+
# Solution
+
+query = query_base.format(columns=columns, 
+                            point_list=point_list,
+                            pm_point_list=pm_point_list)
+print(query)
+
+
+
+
+
SELECT 
+source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2 
+  AND 1 = CONTAINS(POINT(ra, dec), 
+                   POLYGON(135.30559858565638, 8.398623940157561, 126.50951508623503, 13.44494195652069, 163.0173655836748, 54.24242734020255, 172.9328536286811, 46.47260492416258))
+  AND 1 = CONTAINS(POINT(pmra, pmdec),
+                   POLYGON(-4.050371212154984, -14.75623260987968, -3.4198108491382455, -14.723655456335619, -3.035219883740934, -14.443571352854612, -2.268479190206636, -13.714023598831554, -2.611722027231764, -13.247974712069263, -2.7347140078529106, -13.090544709622938, -3.199231461993783, -12.594265302440828, -3.34082545787549, -12.476119260818695, -5.674894125178565, -11.160833381392624, -5.95159272432137, -11.105478836426514, -6.423940229776128, -11.05981294804957, -7.096310230579248, -11.951878058650085, -7.306415190921692, -12.245599765990594, -7.040166963232815, -12.885807024935527, -6.0034770546523735, -13.759120984106968, -4.42442296194263, -14.7464117578883))
+
+
+
+
+

Here’s how we run it.

+
+
+
from astroquery.gaia import Gaia
+
+job = Gaia.launch_job_async(query)
+print(job)
+
+
+
+
+
Created TAP+ (v1.2.1) - Connection:
+	Host: gea.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+Created TAP+ (v1.2.1) - Connection:
+	Host: geadata.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+INFO: Query finished. [astroquery.utils.tap.core]
+<Table length=7346>
+      name       dtype    unit                              description                             n_bad
+--------------- ------- -------- ------------------------------------------------------------------ -----
+      source_id   int64          Unique source identifier (unique within a particular Data Release)     0
+             ra float64      deg                                                    Right ascension     0
+            dec float64      deg                                                        Declination     0
+           pmra float64 mas / yr                         Proper motion in right ascension direction     0
+          pmdec float64 mas / yr                             Proper motion in declination direction     0
+       parallax float64      mas                                                           Parallax     0
+ parallax_error float64      mas                                         Standard error of parallax     0
+radial_velocity float64   km / s                                                    Radial velocity  7295
+Jobid: 1603132746237O
+Phase: COMPLETED
+Owner: None
+Output file: async_20201019143906.vot
+Results: None
+
+
+
+
+

And get the results.

+
+
+
candidate_table = job.get_results()
+len(candidate_table)
+
+
+
+
+
7346
+
+
+
+
+
+
+

Plotting one more time

+

Let’s see what the results look like.

+
+
+
x = candidate_table['ra']
+y = candidate_table['dec']
+plt.plot(x, y, 'ko', markersize=0.3, alpha=0.3)
+
+plt.xlabel('ra (degree ICRS)')
+plt.ylabel('dec (degree ICRS)');
+
+
+
+
+_images/04_select_51_0.png +
+
+

Here we can see why it was useful to transform these coordinates. In ICRS, it is more difficult to identity the stars near the centerline of GD-1.

+

So, before we move on to the next step, let’s collect the code we used to transform the coordinates and make a Pandas DataFrame:

+
+
+
from pyia import GaiaData
+
+def make_dataframe(table):
+    """Transform coordinates from ICRS to GD-1 frame.
+    
+    table: Astropy Table
+    
+    returns: Pandas DataFrame
+    """
+    gaia_data = GaiaData(table)
+
+    c_sky = gaia_data.get_skycoord(distance=8*u.kpc, 
+                                   radial_velocity=0*u.km/u.s)
+    c_gd1 = gc.reflex_correct(
+                c_sky.transform_to(gc.GD1Koposov10))
+
+    df = table.to_pandas()
+    df['phi1'] = c_gd1.phi1
+    df['phi2'] = c_gd1.phi2
+    df['pm_phi1'] = c_gd1.pm_phi1_cosphi2
+    df['pm_phi2'] = c_gd1.pm_phi2
+    return df
+
+
+
+
+

Here’s how we can use this function:

+
+
+
candidate_df = make_dataframe(candidate_table)
+
+
+
+
+

And let’s see the results.

+
+
+
x = candidate_df['phi1']
+y = candidate_df['phi2']
+
+plt.plot(x, y, 'ko', markersize=0.5, alpha=0.5)
+
+plt.xlabel('ra (degree GD1)')
+plt.ylabel('dec (degree GD1)');
+
+
+
+
+_images/04_select_57_0.png +
+
+

We’re starting to see GD-1 more clearly.

+

We can compare this figure with one of these panels in Figure 1 from the original paper:

+ + +

The top panel shows stars selected based on proper motion only, so it is comparable to our figure (although notice that it covers a wider region).

+

In the next lesson, we will use photometry data from Pan-STARRS to do a second round of filtering, and see if we can replicate the bottom panel.

+

We’ll also learn how to add annotations like the ones in the figure from the paper, and customize the style of the figure to present the results clearly and compellingly.

+
+
+

Saving the DataFrame

+

Let’s save this DataFrame so we can pick up where we left off without running this query again.

+
+
+
!rm -f gd1_candidates.hdf5
+
+
+
+
+
+
+
filename = 'gd1_candidates.hdf5'
+
+candidate_df.to_hdf(filename, 'candidate_df')
+
+
+
+
+

We can use ls to confirm that the file exists and check the size:

+
+
+
!ls -lh gd1_candidates.hdf5
+
+
+
+
+
-rw-rw-r-- 1 downey downey 756K Oct 19 14:39 gd1_candidates.hdf5
+
+
+
+
+

If you are using Windows, ls might not work; in that case, try:

+
!dir gd1_candidates.hdf5
+
+
+
+
+

CSV

+

Pandas can write a variety of other formats, which you can read about here.

+

We won’t cover all of them, but one other important one is CSV, which stands for “comma-separated values”.

+

CSV is a plain-text format with minimal formatting requirements, so it can be read and written by pretty much any tool that works with data. In that sense, it is the “least common denominator” of data formats.

+

However, it has an important limitation: some information about the data gets lost in translation, notably the data types. If you read a CSV file from someone else, you might need some additional information to make sure you are getting it right.

+

Also, CSV files tend to be big, and slow to read and write.

+

With those caveats, here’s how to write one:

+
+
+
candidate_df.to_csv('gd1_candidates.csv')
+
+
+
+
+

We can check the file size like this:

+
+
+
!ls -lh gd1_candidates.csv
+
+
+
+
+
-rw-rw-r-- 1 downey downey 1.6M Oct 19 14:39 gd1_candidates.csv
+
+
+
+
+

The CSV file about 2 times bigger than the HDF5 file (so that’s not that bad, really).

+

We can see the first few lines like this:

+
+
+
!head -3 gd1_candidates.csv
+
+
+
+
+
,source_id,ra,dec,pmra,pmdec,parallax,parallax_error,radial_velocity,phi1,phi2,pm_phi1,pm_phi2
+0,635559124339440000,137.58671691646745,19.1965441084838,-3.770521900009566,-12.490481778113859,0.7913934419894347,0.2717538145759051,,-59.63048941944396,-1.21648525150429,-7.361362712556612,-0.5926328820420083
+1,635860218726658176,138.5187065217173,19.09233926905897,-5.941679495793577,-11.346409129876392,0.30745551377348623,0.19946557779138105,,-59.247329893833296,-2.0160784008206476,-7.527126084599517,1.7487794924398758
+
+
+
+
+

The CSV file contains the names of the columns, but not the data types.

+

We can read the CSV file back like this:

+
+
+
read_back_csv = pd.read_csv('gd1_candidates.csv')
+
+
+
+
+

Let’s compare the first few rows of candidate_df and read_back_csv

+
+
+
candidate_df.head(3)
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
source_idradecpmrapmdecparallaxparallax_errorradial_velocityphi1phi2pm_phi1pm_phi2
0635559124339440000137.58671719.196544-3.770522-12.4904820.7913930.271754NaN-59.630489-1.216485-7.361363-0.592633
1635860218726658176138.51870719.092339-5.941679-11.3464090.3074560.199466NaN-59.247330-2.016078-7.5271261.748779
2635674126383965568138.84287419.031798-3.897001-12.7027800.7794630.223692NaN-59.133391-2.306901-7.560608-0.741800
+
+
+
+
+
read_back_csv.head(3)
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Unnamed: 0source_idradecpmrapmdecparallaxparallax_errorradial_velocityphi1phi2pm_phi1pm_phi2
00635559124339440000137.58671719.196544-3.770522-12.4904820.7913930.271754NaN-59.630489-1.216485-7.361363-0.592633
11635860218726658176138.51870719.092339-5.941679-11.3464090.3074560.199466NaN-59.247330-2.016078-7.5271261.748779
22635674126383965568138.84287419.031798-3.897001-12.7027800.7794630.223692NaN-59.133391-2.306901-7.560608-0.741800
+
+
+

Notice that the index in candidate_df has become an unnamed column in read_back_csv. The Pandas functions for writing and reading CSV files provide options to avoid that problem, but this is an example of the kind of thing that can go wrong with CSV files.

+
+
+

Summary

+

In the previous lesson we downloaded data for a large number of stars and then selected a small fraction of them based on proper motion.

+

In this lesson, we improved this process by writing a more complex query that uses the database to select stars based on proper motion. This process requires more computation on the Gaia server, but then we’re able to either:

+
    +
  1. Search the same region and download less data, or

  2. +
  3. Search a larger region while still downloading a manageable amount of data.

  4. +
+

In the next lesson, we’ll learn about the databased JOIN operation and use it to download photometry data from Pan-STARRS.

+
+
+

Best practices

+
    +
  • When possible, “move the computation to the data”; that is, do as much of the work as possible on the database server before downloading the data.

  • +
  • For most applications, saving data in FITS or HDF5 is better than CSV. FITS and HDF5 are binary formats, so the files are usually smaller, and they store metadata, so you don’t lose anything when you read the file back.

  • +
  • On the other hand, CSV is a “least common denominator” format; that is, it can be read by practically any application that works with data.

  • +
+
+
+ + + + +
+ +
+
+ + +
+ + Chapter 3 + Chapter 5 + +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/05_join.html b/05_join.html new file mode 100644 index 0000000..17ba935 --- /dev/null +++ b/05_join.html @@ -0,0 +1,1080 @@ + + + + + + + + Chapter 5 — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
+ +
+

Chapter 5

+

This is the fifth in a series of notebooks related to astronomy data.

+

As a continuing example, we will replicate part of the analysis in a recent paper, “Off the beaten path: Gaia reveals GD-1 stars outside of the main stream” by Adrian M. Price-Whelan and Ana Bonaca.

+

Picking up where we left off, the next step in the analysis is to select candidate stars based on photometry. The following figure from the paper is a color-magnitude diagram for the stars selected based on proper motion:

+ +

In red is a theoretical isochrone, showing where we expect the stars in GD-1 to fall based on the metallicity and age of their original globular cluster.

+

By selecting stars in the shaded area, we can further distinguish the main sequence of GD-1 from younger background stars.

+
+

Outline

+

Here are the steps in this notebook:

+
    +
  1. We’ll reload the candidate stars we identified in the previous notebook.

  2. +
  3. Then we’ll run a query on the Gaia server that uploads the table of candidates and uses a JOIN operation to select photometry data for the candidate stars.

  4. +
  5. We’ll write the results to a file for use in the next notebook.

  6. +
+

After completing this lesson, you should be able to

+
    +
  • Upload a table to the Gaia server.

  • +
  • Write ADQL queries involving JOIN operations.

  • +
+
+
+

Installing libraries

+

If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we’ll use.

+

If you are running this notebook on your own computer, you might have to install these libraries yourself.

+

If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.

+

TODO: Add a link to the instructions.

+
+
+
# If we're running on Colab, install libraries
+
+import sys
+IN_COLAB = 'google.colab' in sys.modules
+
+if IN_COLAB:
+    !pip install astroquery astro-gala pyia python-wget
+
+
+
+
+
+
+

Reloading the data

+

The following cell downloads the data from the previous notebook.

+
+
+
import os
+from wget import download
+
+filename = 'gd1_candidates.hdf5'
+path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'
+
+if not os.path.exists(filename):
+    print(download(path+filename))
+
+
+
+
+

And we can read it back.

+
+
+
import pandas as pd
+
+candidate_df = pd.read_hdf(filename, 'candidate_df')
+
+
+
+
+

candidate_df is the Pandas DataFrame that contains results from the query in the previous notebook, which selects stars likely to be in GD-1 based on proper motion. It also includes position and proper motion transformed to the ICRS frame.

+
+
+
import matplotlib.pyplot as plt
+
+x = candidate_df['phi1']
+y = candidate_df['phi2']
+
+plt.plot(x, y, 'ko', markersize=0.3, alpha=0.3)
+
+plt.xlabel('ra (degree GD1)')
+plt.ylabel('dec (degree GD1)');
+
+
+
+
+_images/05_join_9_0.png +
+
+

This is the same figure we saw at the end of the previous notebook. GD-1 is visible against the background stars, but we will be able to see it more clearly after selecting based on photometry data.

+
+
+

Getting photometry data

+

The Gaia dataset contains some photometry data, including the variable bp_rp, which we used in the original query to select stars with BP - RP color between -0.75 and 2.

+

Selecting stars with bp-rp less than 2 excludes many class M dwarf stars, which are low temperature, low luminosity. A star like that at GD-1’s distance would be hard to detect, so if it is detected, it it more likely to be in the foreground.

+

Now, to select stars with the age and metal richness we expect in GD-1, we will use g i color and apparent g-band magnitude, which are available from the Pan-STARRS survey.

+

Conveniently, the Gaia server provides data from Pan-STARRS as a table in the same database we have been using, so we can access it by making ADQL queries.

+

In general, looking up a star from the Gaia catalog and finding the corresponding star in the Pan-STARRS catalog is not easy. This kind of cross matching is not always possible, because a star might appear in one catalog and not the other. And even when both stars are present, there might not be a clear one-to-one relationship between stars in the two catalogs.

+

Fortunately, smart people have worked on this problem, and the Gaia database includes cross-matching tables that suggest a best neighbor in the Pan-STARRS catalog for many stars in the Gaia catalog.

+

This document describes the cross matching process. Briefly, it uses a cone search to find possible matches in approximately the right position, then uses attributes like color and magnitude to choose pairs of stars most likely to be identical.

+

So the hard part of cross-matching has been done for us. However, using the results is a little tricky.

+

But, it is also an opportunity to learn about one of the most important tools for working with databases: “joining” tables.

+

In general, a “join” is an operation where you match up records from one table with records from another table using as a “key” a piece of information that is common to both tables, usually some kind of ID code.

+

In this example:

+
    +
  • Stars in the Gaia dataset are identified by source_id.

  • +
  • Stars in the Pan-STARRS dataset are identified by obj_id.

  • +
+

For each candidate star we have selected so far, we have the source_id; the goal is to find the obj_id for the same star (we hope) in the Pan-STARRS catalog.

+

To do that we will:

+
    +
  1. Make a table that contains the source_id for each candidate star and upload the table to the Gaia server;

  2. +
  3. Use the JOIN operator to look up each source_id in the gaiadr2.panstarrs1_best_neighbour table, which contains the obj_id of the best match for each star in the Gaia catalog; then

  4. +
  5. Use the JOIN operator again to look up each obj_id in the panstarrs1_original_valid table, which contains the Pan-STARRS photometry data we want.

  6. +
+

Let’s start with the first step, uploading a table.

+
+
+

Preparing a table for uploading

+

For each candidate star, we want to find the corresponding row in the gaiadr2.panstarrs1_best_neighbour table.

+

In order to do that, we have to:

+
    +
  1. Write the table in a local file as an XML VOTable, which is a format suitable for transmitting a table over a network.

  2. +
  3. Write an ADQL query that refers to the uploaded table.

  4. +
  5. Change the way we submit the job so it uploads the table before running the query.

  6. +
+

The first step is not too difficult because Astropy provides a function called writeto that can write a Table in XML.

+

The documentation of this process is here.

+

First we have to convert our Pandas DataFrame to an Astropy Table.

+
+
+
from astropy.table import Table
+
+candidate_table = Table.from_pandas(candidate_df)
+type(candidate_table)
+
+
+
+
+
astropy.table.table.Table
+
+
+
+
+

To write the file, we can use Table.write with format='votable', as described here.

+
+
+
table = candidate_table[['source_id']]
+table.write('candidate_df.xml', format='votable', overwrite=True)
+
+
+
+
+

Notice that we select a single column from the table, source_id. +We could write the entire table to a file, but that would take longer to transmit over the network, and we really only need one column.

+

This process, taking a structure like a Table and translating it into a form that can be transmitted over a network, is called serialization.

+

XML is one of the most common serialization formats. One nice feature is that XML data is plain text, as opposed to binary digits, so you can read the file we just wrote:

+
+
+
!head candidate_df.xml
+
+
+
+
+
<?xml version="1.0" encoding="utf-8"?>
+<!-- Produced with astropy.io.votable version 4.0.1.post1
+     http://www.astropy.org/ -->
+<VOTABLE version="1.4" xmlns="http://www.ivoa.net/xml/VOTable/v1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.ivoa.net/xml/VOTable/v1.4">
+ <RESOURCE type="results">
+  <TABLE>
+   <FIELD ID="source_id" datatype="long" name="source_id"/>
+   <DATA>
+    <TABLEDATA>
+     <TR>
+
+
+
+
+

XML is a general format, so different XML files contain different kinds of data. In order to read an XML file, it’s not enough to know that it’s XML; you also have to know the data format, which is called a schema.

+

In this example, the schema is VOTable; notice that one of the first tags in the file specifies the schema, and even includes the URL where you can get its definition.

+

So this is an example of a self-documenting format.

+

A drawback of XML is that it tends to be big, which is why we wrote just the source_id column rather than the whole table. +The size of the file is about 750 KB, so that’s not too bad.

+
+
+
!ls -lh candidate_df.xml
+
+
+
+
+
-rw-rw-r-- 1 downey downey 396K Oct 19 14:48 candidate_df.xml
+
+
+
+
+

If you are using Windows, ls might not work; in that case, try:

+
!dir candidate_df.xml
+
+
+

Exercise: There’s a gotcha here we want to warn you about. Why do you think we used double brackets to specify the column we wanted? What happens if you use single brackets?

+

Run these cells to find out.

+
+
+
table = candidate_table[['source_id']]
+type(table)
+
+
+
+
+
astropy.table.table.Table
+
+
+
+
+
+
+
column = candidate_table['source_id']
+type(column)
+
+
+
+
+
astropy.table.column.Column
+
+
+
+
+
+
+
# writeto(column, 'candidate_df.xml')
+
+
+
+
+
+
+

Uploading a table

+

The next step is to upload this table to the Gaia server and use it as part of a query.

+

Here’s the documentation that explains how to run a query with an uploaded table.

+

In the spirit of incremental development and testing, let’s start with the simplest possible query.

+
+
+
query = """SELECT *
+FROM tap_upload.candidate_df
+"""
+
+
+
+
+

This query downloads all rows and all columns from the uploaded table. The name of the table has two parts: tap_upload specifies a table that was uploaded using TAP+ (remember that’s the name of the protocol we’re using to talk to the Gaia server).

+

And candidate_df is the name of the table, which we get to choose (unlike tap_upload, which we didn’t get to choose).

+

Here’s how we run the query:

+
+
+
from astroquery.gaia import Gaia
+
+job = Gaia.launch_job_async(query=query, 
+                            upload_resource='candidate_df.xml', 
+                            upload_table_name='candidate_df')
+
+
+
+
+
Created TAP+ (v1.2.1) - Connection:
+	Host: gea.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+Created TAP+ (v1.2.1) - Connection:
+	Host: geadata.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+INFO: Query finished. [astroquery.utils.tap.core]
+
+
+
+
+

upload_resource specifies the name of the file we want to upload, which is the file we just wrote.

+

upload_table_name is the name we assign to this table, which is the name we used in the query.

+

And here are the results:

+
+
+
results = job.get_results()
+results
+
+
+
+
+
Table length=7346 + + + + + + + + + + + + + + + + + + + + + + + + +
source_id
int64
635559124339440000
635860218726658176
635674126383965568
635535454774983040
635497276810313600
635614168640132864
635821843194387840
635551706931167104
635518889086133376
635580294233854464
...
612282738058264960
612485911486166656
612386332668697600
612296172717818624
612250375480101760
612394926899159168
612288854091187712
612428870024913152
612256418500423168
612429144902815104
+
+

If things go according to plan, the result should contain the same rows and columns as the uploaded table.

+
+
+
len(candidate_table), len(results)
+
+
+
+
+
(7346, 7346)
+
+
+
+
+
+
+
set(candidate_table['source_id']) == set(results['source_id'])
+
+
+
+
+
True
+
+
+
+
+

In this example, we uploaded a table and then downloaded it again, so that’s not too useful.

+

But now that we can upload a table, we can join it with other tables on the Gaia server.

+
+
+

Joining with an uploaded table

+

Here’s the first example of a query that contains a JOIN clause.

+
+
+
query1 = """SELECT *
+FROM gaiadr2.panstarrs1_best_neighbour as best
+JOIN tap_upload.candidate_df as candidate_df
+ON best.source_id = candidate_df.source_id
+"""
+
+
+
+
+

Let’s break that down one clause at a time:

+
    +
  • SELECT * means we will download all columns from both tables.

  • +
  • FROM gaiadr2.panstarrs1_best_neighbour as best means that we’ll get the columns from the Pan-STARRS best neighbor table, which we’ll refer to using the short name best.

  • +
  • JOIN tap_upload.candidate_df as candidate_df means that we’ll also get columns from the uploaded table, which we’ll refer to using the short name candidate_df.

  • +
  • ON best.source_id = candidate_df.source_id specifies that we will use source_id to match up the rows from the two tables.

  • +
+

Here’s the documentation of the best neighbor table.

+

Let’s run the query:

+
+
+
job1 = Gaia.launch_job_async(query=query1, 
+                       upload_resource='candidate_df.xml', 
+                       upload_table_name='candidate_df')
+
+
+
+
+
INFO: Query finished. [astroquery.utils.tap.core]
+
+
+
+
+

And get the results.

+
+
+
results1 = job1.get_results()
+results1
+
+
+
+
+
Table length=3724 + + + + + + + + + + + + + + + + + + + + + + + + +
source_idoriginal_ext_source_idangular_distancenumber_of_neighboursnumber_of_matesbest_neighbour_multiplicitygaia_astrometric_paramssource_id_2
arcsec
int64int64float64int32int16int16int16int64
6358602187266581761309113851876713490.0536670358954670841015635860218726658176
6356741263839655681308313884284887200.0388102681415775161015635674126383965568
6355354547749830401306313783776573690.0343230288289910761015635535454774983040
6354972768103136001308113804456319300.047202554132500061015635497276810313600
6356141686401328641305713959221401350.0203041897099641431015635614168640132864
6355986079743697921303413920912795130.0365246268534030541015635598607974369792
6357376618354965761310013993335021360.0366268278207166061015635737661835496576
6358509458927486721320113986549341470.0211787423933783961015635850945892748672
6356005321197136641304213922858936230.045188209150430151015635600532119713664
........................
6122417812491246081297513437559955610.042357158300018151015612241781249124608
6123321473614430721301413414585387770.022652498590129771015612332147361443072
6124267440168024321305213468524656560.032476530099618431015612426744016802432
6123317393403417601301113412177938390.0360642408180257351015612331739340341760
6122827380582649601297413404459335190.0252932373534968981015612282738058264960
6123863326686976001303513545702197740.020103160014030861015612386332668697600
6122961727178186241296913380061687800.0512642120258362051015612296172717818624
6122503754801017601297413464758974640.0317837403475309051015612250375480101760
6123949268991591681305813551997517950.040191748305466981015612394926899159168
6122564185004231681299313490752973100.0092427896695131561015612256418500423168
+
+

This table contains all of the columns from the best neighbor table, plus the single column from the uploaded table.

+
+
+
results1.colnames
+
+
+
+
+
['source_id',
+ 'original_ext_source_id',
+ 'angular_distance',
+ 'number_of_neighbours',
+ 'number_of_mates',
+ 'best_neighbour_multiplicity',
+ 'gaia_astrometric_params',
+ 'source_id_2']
+
+
+
+
+

Because one of the column names appears in both tables, the second instance of source_id has been appended with the suffix _2.

+

The length of the results table is about 2000, which means we were not able to find matches for all stars in the list of candidate_df.

+
+
+
len(results1)
+
+
+
+
+
3724
+
+
+
+
+

To get more information about the matching process, we can inspect best_neighbour_multiplicity, which indicates for each star in Gaia how many stars in Pan-STARRS are equally likely matches.

+

For this kind of data exploration, we’ll convert a column from the table to a Pandas Series so we can use value_counts, which counts the number of times each value appears in a Series, like a histogram.

+
+
+
import pandas as pd
+
+nn = pd.Series(results1['best_neighbour_multiplicity'])
+nn.value_counts()
+
+
+
+
+
1    3724
+dtype: int64
+
+
+
+
+

The result shows that 1 is the only value in the Series, appearing xxx times.

+

That means that in every case where a match was found, the matching algorithm identified a single neighbor as the most likely match.

+

Similarly, number_of_mates indicates the number of other stars in Gaia that match with the same star in Pan-STARRS.

+
+
+
nm = pd.Series(results1['number_of_mates'])
+nm.value_counts()
+
+
+
+
+
0    3724
+dtype: int64
+
+
+
+
+

For this set of candidate_df, almost all of the stars we’ve selected from Pan-STARRS are only matched with a single star in the Gaia catalog.

+

Detail The table also contains number_of_neighbors which is the number of stars in Pan-STARRS that match in terms of position, before using other critieria to choose the most likely match.

+
+
+

Getting the photometry data

+

The most important column in results1 is original_ext_source_id which is the obj_id we will use to look up the likely matches in Pan-STARRS to get photometry data.

+

The process is similar to what we just did to look up the matches. We will:

+
    +
  1. Make a table that contains source_id and original_ext_source_id.

  2. +
  3. Write the table to an XML VOTable file.

  4. +
  5. Write a query that joins the uploaded table with gaiadr2.panstarrs1_original_valid and selects the photometry data we want.

  6. +
  7. Run the query using the uploaded table.

  8. +
+

Since we’ve done everything here before, we’ll do these steps as an exercise.

+

Exercise: Select source_id and original_ext_source_id from results1 and write the resulting table as a file named external.xml.

+
+
+
# Solution
+
+table = results1[['source_id', 'original_ext_source_id']]
+table.write('external.xml', format='votable', overwrite=True)
+
+
+
+
+

Use !head to confirm that the file exists and contains an XML VOTable.

+
+
+
!head external.xml
+
+
+
+
+
<?xml version="1.0" encoding="utf-8"?>
+<!-- Produced with astropy.io.votable version 4.0.1.post1
+     http://www.astropy.org/ -->
+<VOTABLE version="1.4" xmlns="http://www.ivoa.net/xml/VOTable/v1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.ivoa.net/xml/VOTable/v1.4">
+ <RESOURCE type="results">
+  <TABLE>
+   <FIELD ID="source_id" datatype="long" name="source_id" ucd="meta.id;meta.main">
+    <DESCRIPTION>
+     Unique Gaia source identifier
+    </DESCRIPTION>
+
+
+
+
+

Exercise: Read the documentation of the Pan-STARRS table and make note of obj_id, which contains the object IDs we’ll use to find the rows we want.

+

Write a query that uses each value of original_ext_source_id from the uploaded table to find a row in gaiadr2.panstarrs1_original_valid with the same value in obj_id, and select all columns from both tables.

+

Suggestion: Develop and test your query incrementally. For example:

+
    +
  1. Write a query that downloads all columns from the uploaded table. Test to make sure we can read the uploaded table.

  2. +
  3. Write a query that downloads the first 10 rows from gaiadr2.panstarrs1_original_valid. Test to make sure we can access Pan-STARRS data.

  4. +
  5. Write a query that joins the two tables and selects all columns. Test that the join works as expected.

  6. +
+

As a bonus exercise, write a query that joins the two tables and selects just the columns we need:

+
    +
  • source_id from the uploaded table

  • +
  • g_mean_psf_mag from gaiadr2.panstarrs1_original_valid

  • +
  • i_mean_psf_mag from gaiadr2.panstarrs1_original_valid

  • +
+

Hint: When you select a column from a join, you have to specify which table the column is in.

+
+
+
# Solution
+
+query2 = """SELECT *
+FROM tap_upload.external as external
+"""
+
+
+
+
+
+
+
# Solution
+
+query2 = """SELECT TOP 10 *
+FROM gaiadr2.panstarrs1_original_valid
+"""
+
+
+
+
+
+
+
# Solution
+
+query2 = """SELECT *
+FROM gaiadr2.panstarrs1_original_valid as ps
+JOIN tap_upload.external as external
+ON ps.obj_id = external.original_ext_source_id
+"""
+
+
+
+
+
+
+
# Solution
+
+query2 = """SELECT
+external.source_id, ps.g_mean_psf_mag, ps.i_mean_psf_mag
+FROM gaiadr2.panstarrs1_original_valid as ps
+JOIN tap_upload.external as external
+ON ps.obj_id = external.original_ext_source_id
+"""
+
+
+
+
+
+
+
print(query2)
+
+
+
+
+
SELECT
+external.source_id, ps.g_mean_psf_mag, ps.i_mean_psf_mag
+FROM gaiadr2.panstarrs1_original_valid as ps
+JOIN tap_upload.external as external
+ON ps.obj_id = external.original_ext_source_id
+
+
+
+
+
+
+
job2 = Gaia.launch_job_async(query=query2, 
+                       upload_resource='external.xml', 
+                       upload_table_name='external')
+
+
+
+
+
INFO: Query finished. [astroquery.utils.tap.core]
+
+
+
+
+
+
+
results2 = job2.get_results()
+results2
+
+
+
+
+
Table length=3724 + + + + + + + + + + + + + + + + + + + + + + + + +
source_idg_mean_psf_magi_mean_psf_mag
mag
int64float64float64
63586021872665817617.897800445556617.5174007415771
63567412638396556819.287300109863317.6781005859375
63553545477498304016.923799514770516.478099822998
63549727681031360019.924200057983418.3339996337891
63561416864013286416.151599884033214.6662998199463
63559860797436979216.522399902343816.1375007629395
63573766183549657614.503299713134813.9849004745483
63585094589274867216.517499923706116.0450000762939
63560053211971366420.450599670410219.5177001953125
.........
61224178124912460820.234399795532218.6518001556396
61233214736144307221.384899139404320.3076000213623
61242674401680243217.828100204467817.4281005859375
61233173934034176021.865699768066419.5223007202148
61228273805826496022.515199661254919.9743995666504
61238633266869760019.379299163818417.9923000335693
61229617271781862417.494400024414116.926700592041
61225037548010176015.333000183105514.6280002593994
61239492689915916816.441400527954115.8212003707886
61225641850042316820.871599197387719.9612007141113
+
+

Challenge exercise

+

Do both joins in one query.

+

There’s an example here you could start with.

+
+
+

Write the data

+

Since we have the data in an Astropy Table, let’s store it in a FITS file.

+
+
+
filename = 'gd1_photo.fits'
+results2.write(filename, overwrite=True)
+
+
+
+
+

We can check that the file exists, and see how big it is.

+
+
+
!ls -lh gd1_photo.fits
+
+
+
+
+
-rw-rw-r-- 1 downey downey 96K Oct 19 14:49 gd1_photo.fits
+
+
+
+
+

At around 175 KB, it is smaller than some of the other files we’ve been working with.

+

If you are using Windows, ls might not work; in that case, try:

+
!dir gd1_photo.fits
+
+
+
+
+

Summary

+

In this notebook, we used database JOIN operations to select photometry data for the stars we’ve identified as candidates to be in GD-1.

+

In the next notebook, we’ll use this data for a second round of selection, identifying stars that have photometry data consistent with GD-1.

+
+
+

Best practice

+
    +
  • Use JOIN operations to combine data from multiple tables in a databased, using some kind of identifier to match up records from one table with records from another.

  • +
  • This is another example of a practice we saw in the previous notebook, moving the computation to the data.

  • +
+
+
+ + + + +
+ +
+
+ + +
+ + Chapter 4 + Chapter 6 + +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/06_photo.html b/06_photo.html new file mode 100644 index 0000000..4d305be --- /dev/null +++ b/06_photo.html @@ -0,0 +1,1184 @@ + + + + + + + + Chapter 6 — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ + +
+
+ +
+ +
+

Chapter 6

+

This is the sixth in a series of notebooks related to astronomy data.

+

As a continuing example, we will replicate part of the analysis in a recent paper, “Off the beaten path: Gaia reveals GD-1 stars outside of the main stream” by Adrian M. Price-Whelan and Ana Bonaca.

+

In the previous lesson we downloaded photometry data from Pan-STARRS, which is available from the same server we’ve been using to get Gaia data.

+

The next step in the analysis is to select candidate stars based on the photometry data. The following figure from the paper is a color-magnitude diagram for the stars selected based on proper motion:

+ +

In red is a theoretical isochrone, showing where we expect the stars in GD-1 to fall based on the metallicity and age of their original globular cluster.

+

By selecting stars in the shaded area, we can further distinguish the main sequence of GD-1 from younger background stars.

+
+

Outline

+

Here are the steps in this notebook:

+
    +
  1. We’ll reload the data from the previous notebook and make a color-magnitude diagram.

  2. +
  3. Then we’ll specify a polygon in the diagram that contains stars with the photometry we expect.

  4. +
  5. Then we’ll merge the photometry data with the list of candidate stars, storing the result in a Pandas DataFrame.

  6. +
+

After completing this lesson, you should be able to

+
    +
  • Use Matplotlib to specify a Polygon and determine which points fall inside it.

  • +
  • Use Pandas to merge data from multiple DataFrames, much like a database JOIN operation.

  • +
+
+
+

Installing libraries

+

If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we’ll use.

+

If you are running this notebook on your own computer, you might have to install these libraries yourself.

+

If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.

+

TODO: Add a link to the instructions.

+
+
+
# If we're running on Colab, install libraries
+
+import sys
+IN_COLAB = 'google.colab' in sys.modules
+
+if IN_COLAB:
+    !pip install astroquery astro-gala pyia python-wget
+
+
+
+
+
+
+

Reload the data

+

The following cell downloads the photometry data we created in the previous notebook.

+
+
+
import os
+from wget import download
+
+filename = 'gd1_photo.fits'
+filepath = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'
+
+if not os.path.exists(filename):
+    print(download(filepath+filename))
+
+
+
+
+

Now we can read the data back into an Astropy Table.

+
+
+
from astropy.table import Table
+
+photo_table = Table.read(filename)
+
+
+
+
+
+
+

Plotting photometry data

+

Now that we have photometry data from Pan-STARRS, we can replicate the color-magnitude diagram from the original paper:

+ +

The y-axis shows the apparent magnitude of each source with the g filter.

+

The x-axis shows the difference in apparent magnitude between the g and i filters, which indicates color.

+

Stars with lower values of (g-i) are brighter in g-band than in i-band, compared to other stars, which means they are bluer.

+

Stars in the lower-left quadrant of this diagram are less bright and less metallic than the others, which means they are likely to be older.

+

Since we expect the stars in GD-1 to be older than the background stars, the stars in the lower-left are more likely to be in GD-1.

+
+
+
import matplotlib.pyplot as plt
+
+def plot_cmd(table):
+    """Plot a color magnitude diagram.
+    
+    table: Table or DataFrame with photometry data
+    """
+    y = table['g_mean_psf_mag']
+    x = table['g_mean_psf_mag'] - table['i_mean_psf_mag']
+
+    plt.plot(x, y, 'ko', markersize=0.3, alpha=0.3)
+
+    plt.xlim([0, 1.5])
+    plt.ylim([14, 22])
+    plt.gca().invert_yaxis()
+
+    plt.ylabel('$g_0$')
+    plt.xlabel('$(g-i)_0$')
+
+
+
+
+

plot_cmd uses a new function, invert_yaxis, to invert the y axis, which is conventional when plotting magnitudes, since lower magnitude indicates higher brightness.

+

invert_yaxis is a little different from the other functions we’ve used. You can’t call it like this:

+
plt.invert_yaxis()          # doesn't work
+
+
+

You have to call it like this:

+
plt.gca().invert_yaxis()          # works
+
+
+

gca stands for “get current axis”. It returns an object that represents the axes of the current figure, and that object provides invert_yaxis.

+

In case anyone asks: The most likely reason for this inconsistency in the interface is that invert_yaxis is a lesser-used function, so it’s not made available at the top level of the interface.

+

Here’s what the results look like.

+
+
+
plot_cmd(photo_table)
+
+
+
+
+_images/06_photo_12_0.png +
+
+

Our figure does not look exactly like the one in the paper because we are working with a smaller region of the sky, so we don’t have as many stars. But we can see an overdense region in the lower left that contains stars with the photometry we expect for GD-1.

+

The authors of the original paper derive a detailed polygon that defines a boundary between stars that are likely to be in GD-1 or not.

+

As a simplification, we’ll choose a boundary by eye that seems to contain the overdense region.

+
+
+

Drawing a polygon

+

Matplotlib provides a function called ginput that lets us click on the figure and make a list of coordinates.

+

It’s a little tricky to use ginput in a Jupyter notebook.
+Before calling plt.ginput we have to tell Matplotlib to use TkAgg to draw the figure in a new window.

+

When you run the following cell, a figure should appear in a new window. Click on it 10 times to draw a polygon around the overdense area. A red cross should appear where you click.

+
+
+
import matplotlib as mpl
+
+if IN_COLAB:
+    coords = None
+else:
+    mpl.use('TkAgg')
+    plot_cmd(photo_table)
+    coords = plt.ginput(10)
+    mpl.use('agg')
+
+
+
+
+

The argument to ginput is the number of times the user has to click on the figure.

+

The result from ginput is a list of coordinate pairs.

+
+
+
coords
+
+
+
+
+
[(0.2150537634408602, 17.548197203826344),
+ (0.3897849462365591, 18.94628403237675),
+ (0.5376344086021505, 19.902869757174393),
+ (0.7034050179211468, 20.601913171449596),
+ (0.8288530465949819, 21.300956585724798),
+ (0.6630824372759856, 21.52170713760118),
+ (0.4301075268817204, 20.785871964679913),
+ (0.27329749103942647, 19.71891096394408),
+ (0.17473118279569888, 18.688741721854306),
+ (0.17473118279569888, 17.95290654893304)]
+
+
+
+
+

If ginput doesn’t work for you, you could use the following coordinates.

+
+
+
if coords is None:
+    coords = [(0.2, 17.5), 
+              (0.2, 19.5), 
+              (0.65, 22),
+              (0.75, 21),
+              (0.4, 19),
+              (0.4, 17.5)]
+
+
+
+
+

The next step is to convert the coordinates to a format we can use to plot them, which is a sequence of x coordinates and a sequence of y coordinates. The NumPy function transpose does what we want.

+
+
+
import numpy as np
+
+xs, ys = np.transpose(coords)
+xs, ys
+
+
+
+
+
(array([0.21505376, 0.38978495, 0.53763441, 0.70340502, 0.82885305,
+        0.66308244, 0.43010753, 0.27329749, 0.17473118, 0.17473118]),
+ array([17.5481972 , 18.94628403, 19.90286976, 20.60191317, 21.30095659,
+        21.52170714, 20.78587196, 19.71891096, 18.68874172, 17.95290655]))
+
+
+
+
+

To display the polygon, we’ll draw the figure again and use plt.plot to draw the polygon.

+
+
+
plot_cmd(photo_table)
+plt.plot(xs, ys);
+
+
+
+
+_images/06_photo_23_0.png +
+
+

If it looks like your polygon does a good job surrounding the overdense area, go on to the next section. Otherwise you can try again.

+

If you want a polygon with more points (or fewer), you can change the argument to ginput.

+

The polygon does not have to be “closed”. When we use this polygon in the next section, the last and first points will be connected by a straight line.

+
+
+

Which points are in the polygon?

+

Matplotlib provides a Path object that we can use to check which points fall in the polygon we selected.

+

Here’s how we make a Path using a list of coordinates.

+
+
+
from matplotlib.path import Path
+
+path = Path(coords)
+path
+
+
+
+
+
Path(array([[ 0.21505376, 17.5481972 ],
+       [ 0.38978495, 18.94628403],
+       [ 0.53763441, 19.90286976],
+       [ 0.70340502, 20.60191317],
+       [ 0.82885305, 21.30095659],
+       [ 0.66308244, 21.52170714],
+       [ 0.43010753, 20.78587196],
+       [ 0.27329749, 19.71891096],
+       [ 0.17473118, 18.68874172],
+       [ 0.17473118, 17.95290655]]), None)
+
+
+
+
+

Path provides contains_points, which figures out which points are inside the polygon.

+

To test it, we’ll create a list with two points, one inside the polygon and one outside.

+
+
+
points = [(0.4, 20), 
+          (0.4, 30)]
+
+
+
+
+

Now we can make sure contains_points does what we expect.

+
+
+
inside = path.contains_points(points)
+inside
+
+
+
+
+
array([ True, False])
+
+
+
+
+

The result is an array of Boolean values.

+

We are almost ready to select stars whose photometry data falls in this polygon. But first we need to do some data cleaning.

+
+
+

Reloading the data

+

Now we need to combine the photometry data with the list of candidate stars we identified in a previous notebook. The following cell downloads it:

+
+
+
import os
+from wget import download
+
+filename = 'gd1_candidates.hdf5'
+filepath = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'
+
+if not os.path.exists(filename):
+    print(download(filepath+filename))
+
+
+
+
+
+
+
import pandas as pd
+
+candidate_df = pd.read_hdf(filename, 'candidate_df')
+
+
+
+
+

candidate_df is the Pandas DataFrame that contains the results from Notebook XX, which selects stars likely to be in GD-1 based on proper motion. It also includes position and proper motion transformed to the ICRS frame.

+
+
+

Merging photometry data

+

Before we select stars based on photometry data, we have to solve two problems:

+
    +
  1. We only have Pan-STARRS data for some stars in candidate_df.

  2. +
  3. Even for the stars where we have Pan-STARRS data in photo_table, some photometry data is missing.

  4. +
+

We will solve these problems in two step:

+
    +
  1. We’ll merge the data from candidate_df and photo_table into a single Pandas DataFrame.

  2. +
  3. We’ll use Pandas functions to deal with missing data.

  4. +
+

candidate_df is already a DataFrame, but results is an Astropy Table. Let’s convert it to Pandas:

+
+
+
photo_df = photo_table.to_pandas()
+
+for colname in photo_df.columns:
+    print(colname)
+
+
+
+
+
source_id
+g_mean_psf_mag
+i_mean_psf_mag
+
+
+
+
+

Now we want to combine candidate_df and photo_df into a single table, using source_id to match up the rows.

+

You might recognize this task; it’s the same as the JOIN operation in ADQL/SQL.

+

Pandas provides a function called merge that does what we want. Here’s how we use it.

+
+
+
merged = pd.merge(candidate_df, 
+                  photo_df, 
+                  on='source_id', 
+                  how='left')
+merged.head()
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
source_idradecpmrapmdecparallaxparallax_errorradial_velocityphi1phi2pm_phi1pm_phi2g_mean_psf_magi_mean_psf_mag
0635559124339440000137.58671719.196544-3.770522-12.4904820.7913930.271754NaN-59.630489-1.216485-7.361363-0.592633NaNNaN
1635860218726658176138.51870719.092339-5.941679-11.3464090.3074560.199466NaN-59.247330-2.016078-7.5271261.74877917.897817.517401
2635674126383965568138.84287419.031798-3.897001-12.7027800.7794630.223692NaN-59.133391-2.306901-7.560608-0.74180019.287317.678101
3635535454774983040137.83775218.864007-4.335041-14.4923090.3145140.102775NaN-59.785300-1.594569-9.357536-1.21849216.923816.478100
4635497276810313600138.04451619.009471-7.172931-12.2914990.4254040.337689NaN-59.557744-1.682147-9.0008312.33440719.924218.334000
+
+
+

The first argument is the “left” table, the second argument is the “right” table, and the keyword argument on='source_id' specifies a column to use to match up the rows.

+

The argument how='left' means that the result should have all rows from the left table, even if some of them don’t match up with a row in the right table.

+

If you are interested in the other options for how, you can read the documentation of merge.

+

You can also do different types of join in ADQL/SQL; you can read about that here.

+

The result is a DataFrame that contains the same number of rows as candidate_df.

+
+
+
len(candidate_df), len(photo_df), len(merged)
+
+
+
+
+
(7346, 3724, 7346)
+
+
+
+
+

And all columns from both tables.

+
+
+
for colname in merged.columns:
+    print(colname)
+
+
+
+
+
source_id
+ra
+dec
+pmra
+pmdec
+parallax
+parallax_error
+radial_velocity
+phi1
+phi2
+pm_phi1
+pm_phi2
+g_mean_psf_mag
+i_mean_psf_mag
+
+
+
+
+

Detail You might notice that Pandas also provides a function called join; it does almost the same thing, but the interface is slightly different. We think merge is a little easier to use, so that’s what we chose. It’s also more consistent with JOIN in SQL, so if you learn how to use pd.merge, you are also learning how to use SQL JOIN.

+

Also, someone might ask why we have to use Pandas to do this join; why didn’t we do it in ADQL. The answer is that we could have done that, but since we already have the data we need, we should probably do the computation locally rather than make another round trip to the Gaia server.

+
+
+

Missing data

+

Let’s add columns to the merged table for magnitude and color.

+
+
+
merged['mag'] = merged['g_mean_psf_mag']
+merged['color'] = merged['g_mean_psf_mag'] - merged['i_mean_psf_mag']
+
+
+
+
+

These columns contain the special value NaN where we are missing data.

+

We can use notnull to see which rows contain value data, that is, not null values.

+
+
+
merged['color'].notnull()
+
+
+
+
+
0       False
+1        True
+2        True
+3        True
+4        True
+        ...  
+7341     True
+7342    False
+7343    False
+7344     True
+7345    False
+Name: color, Length: 7346, dtype: bool
+
+
+
+
+

And sum to count the number of valid values.

+
+
+
merged['color'].notnull().sum()
+
+
+
+
+
3724
+
+
+
+
+

For scientific purposes, it’s not obvious what we should do with candidate stars if we don’t have photometry data. Should we give them the benefit of the doubt or leave them out?

+

In part the answer depends on the goal: are we trying to identify more stars that might be in GD-1, or a smaller set of stars that have higher probability?

+

In the next section, we’ll leave them out, but you can experiment with the alternative.

+
+
+

Selecting based on photometry

+

Now let’s see how many of these points are inside the polygon we chose.

+

We can use a list of column names to select color and mag.

+
+
+
points = merged[['color', 'mag']]
+points.head()
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
colormag
0NaNNaN
10.380417.8978
21.609219.2873
30.445716.9238
41.590219.9242
+
+
+

The result is a DataFrame that can be treated as a sequence of coordinates, so we can pass it to contains_points:

+
+
+
inside = path.contains_points(points)
+inside
+
+
+
+
+
array([False, False, False, ..., False, False, False])
+
+
+
+
+

The result is a Boolean array. We can use sum to see how many stars fall in the polygon.

+
+
+
inside.sum()
+
+
+
+
+
496
+
+
+
+
+

Now we can use inside as a mask to select stars that fall inside the polygon.

+
+
+
selected = merged[inside]
+
+
+
+
+

Let’s make a color-magnitude plot one more time, highlighting the selected stars with green x marks.

+
+
+
plot_cmd(photo_table)
+plt.plot(xs, ys)
+
+plt.plot(selected['color'], selected['mag'], 'gx');
+
+
+
+
+_images/06_photo_61_0.png +
+
+

It looks like the selected stars are, in fact, inside the polygon, which means they have photometry data consistent with GD-1.

+

Finally, we can plot the coordinates of the selected stars:

+
+
+
plt.figure(figsize=(10,2.5))
+
+x = selected['phi1']
+y = selected['phi2']
+
+plt.plot(x, y, 'ko', markersize=0.7, alpha=0.9)
+
+plt.xlabel('ra (degree GD1)')
+plt.ylabel('dec (degree GD1)')
+
+plt.axis('equal');
+
+
+
+
+_images/06_photo_63_0.png +
+
+

This example includes two new Matplotlib commands:

+
    +
  • figure creates the figure. In previous examples, we didn’t have to use this function; the figure was created automatically. But when we call it explicitly, we can provide arguments like figsize, which sets the size of the figure.

  • +
  • axis with the parameter equal sets up the axes so a unit is the same size along the x and y axes.

  • +
+

In an example like this, where x and y represent coordinates in space, equal axes ensures that the distance between points is represented accurately.

+
+
+

Write the data

+

Let’s write the merged DataFrame to a file.

+
+
+
filename = 'gd1_merged.hdf5'
+
+merged.to_hdf(filename, 'merged')
+selected.to_hdf(filename, 'selected')
+
+
+
+
+
+
+
!ls -lh gd1_merged.hdf5
+
+
+
+
+
-rw-rw-r-- 1 downey downey 2.0M Oct 19 17:21 gd1_merged.hdf5
+
+
+
+
+

If you are using Windows, ls might not work; in that case, try:

+
!dir gd1_merged.hdf5
+
+
+
+
+

Save the polygon

+

Reproducibile research is “the idea that … the full computational environment used to produce the results in the paper such as the code, data, etc. can be used to reproduce the results and create new work based on the research.”

+

This Jupyter notebook is an example of reproducible research because it contains all of the code needed to reproduce the results, including the database queries that download the data and and analysis.

+

However, when we used ginput to define a polygon by hand, we introduced a non-reproducible element to the analysis. If someone running this notebook chooses a different polygon, they will get different results. So it is important to record the polygon we chose as part of the data analysis pipeline.

+

Since coords is a NumPy array, we can’t use to_hdf to save it in a file. But we can convert it to a Pandas DataFrame and save that.

+

As an alternative, we could use PyTables, which is the library Pandas uses to read and write files. It is a powerful library, but not easy to use directly. So let’s take advantage of Pandas.

+
+
+
coords_df = pd.DataFrame(coords)
+
+
+
+
+
+
+
filename = 'gd1_polygon.hdf5'
+coords_df.to_hdf(filename, 'coords_df')
+
+
+
+
+

We can read it back like this.

+
+
+
coords2_df = pd.read_hdf(filename, 'coords_df')
+coords2 = coords2_df.to_numpy()
+
+
+
+
+

And verify that the data we read back is the same.

+
+
+
np.all(coords2 == coords)
+
+
+
+
+
True
+
+
+
+
+
+
+

Summary

+

In this notebook, we worked with two datasets: the list of candidate stars from Gaia and the photometry data from Pan-STARRS.

+

We drew a color-magnitude diagram and used it to identify stars we think are likely to be in GD-1.

+

Then we used a Pandas merge operation to combine the data into a single DataFrame.

+
+
+

Best practices

+
    +
  • If you want to perform something like a database JOIN operation with data that is in a Pandas DataFrame, you can use the join or merge function. In many cases, merge is easier to use because the arguments are more like SQL.

  • +
  • Use Matplotlib options to control the size and aspect ratio of figures to make them easier to interpret. In this example, we scaled the axes so the size of a degree is equal along both axes.

  • +
  • Matplotlib also provides operations for working with points, polygons, and other geometric entities, so it’s not just for making figures.

  • +
  • Be sure to record every element of the data analysis pipeline that would be needed to replicate the results.

  • +
+
+
+ + + + +
+ +
+
+ + +
+ + Chapter 5 + Chapter 7 + +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/07_plot.html b/07_plot.html new file mode 100644 index 0000000..85019e6 --- /dev/null +++ b/07_plot.html @@ -0,0 +1,1070 @@ + + + + + + + + Chapter 7 — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + +
+
+
+ +
+ +
+

Chapter 7

+

This is the seventh in a series of notebooks related to astronomy data.

+

As a continuing example, we will replicate part of the analysis in a recent paper, “Off the beaten path: Gaia reveals GD-1 stars outside of the main stream” by Adrian M. Price-Whelan and Ana Bonaca.

+

In the previous notebook we selected photometry data from Pan-STARRS and used it to identify stars we think are likely to be in GD-1

+

In this notebook, we’ll take the results from previous lessons and use them to make a figure that tells a compelling scientific story.

+
+

Outline

+

Here are the steps in this notebook:

+
    +
  1. Starting with the figure from the previous notebook, we’ll add annotations to present the results more clearly.

  2. +
  3. The we’ll see several ways to customize figures to make them more appealing and effective.

  4. +
  5. Finally, we’ll see how to make a figure with multiple panels or subplots.

  6. +
+

After completing this lesson, you should be able to

+
    +
  • Design a figure that tells a compelling story.

  • +
  • Use Matplotlib features to customize the appearance of figures.

  • +
  • Generate a figure with multiple subplots.

  • +
+
+
+

Installing libraries

+

If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we’ll use.

+

If you are running this notebook on your own computer, you might have to install these libraries yourself.

+

If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.

+

TODO: Add a link to the instructions.

+
+
+
# If we're running on Colab, install libraries
+
+import sys
+IN_COLAB = 'google.colab' in sys.modules
+
+if IN_COLAB:
+    !pip install astroquery astro-gala pyia python-wget
+
+
+
+
+
+
+

Making Figures That Tell a Story

+

So far the figure we’ve made have been “quick and dirty”. Mostly we have used Matplotlib’s default style, although we have adjusted a few parameters, like markersize and alpha, to improve legibility.

+

Now that the analysis is done, it’s time to think more about:

+
    +
  1. Making professional-looking figures that are ready for publication, and

  2. +
  3. Making figures that communicate a scientific result clearly and compellingly.

  4. +
+

Not necessarily in that order.

+

Let’s start by reviewing Figure 1 from the original paper. We’ve seen the individual panels, but now let’s look at the whole thing, along with the caption:

+

Exercise: Think about the following questions:

+
    +
  1. What is the primary scientific result of this work?

  2. +
  3. What story is this figure telling?

  4. +
  5. In the design of this figure, can you identify 1-2 choices the authors made that you think are effective? Think about big-picture elements, like the number of panels and how they are arranged, as well as details like the choice of typeface.

  6. +
  7. Can you identify 1-2 elements that could be improved, or that you might have done differently?

  8. +
+

Some topics that might come up in this discussion:

+
    +
  1. The primary result is that the multiple stages of selection make it possible to separate likely candidates from the background more effectively than in previous work, which makes it possible to see the structure of GD-1 in “unprecedented detail”.

  2. +
  3. The figure documents the selection process as a sequence of steps. Reading right-to-left, top-to-bottom, we see selection based on proper motion, the results of the first selection, selection based on color and magnitude, and the results of the second selection. So this figure documents the methodology and presents the primary result.

  4. +
  5. It’s mostly black and white, with minimal use of color, so it will work well in print. The annotations in the bottom left panel guide the reader to the most important results. It contains enough technical detail for a professional audience, but most of it is also comprehensible to a more general audience. The two left panels have the same dimensions and their axes are aligned.

  6. +
  7. Since the panels represent a sequence, it might be better to arrange them left-to-right. The placement and size of the axis labels could be tweaked. The entire figure could be a little bigger to match the width and proportion of the caption. The top left panel has unnused white space (but that leaves space for the annotations in the bottom left).

  8. +
+
+
+

Plotting GD-1

+

Let’s start with the panel in the lower left. The following cell reloads the data.

+
+
+
import os
+from wget import download
+
+filename = 'gd1_merged.hdf5'
+path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'
+
+if not os.path.exists(filename):
+    print(download(path+filename))
+
+
+
+
+
+
+
import pandas as pd
+
+selected = pd.read_hdf(filename, 'selected')
+
+
+
+
+
+
+
import matplotlib.pyplot as plt
+
+def plot_second_selection(df):
+    x = df['phi1']
+    y = df['phi2']
+
+    plt.plot(x, y, 'ko', markersize=0.7, alpha=0.9)
+
+    plt.xlabel('$\phi_1$ [deg]')
+    plt.ylabel('$\phi_2$ [deg]')
+    plt.title('Proper motion + photometry selection', fontsize='medium')
+
+    plt.axis('equal')
+
+
+
+
+

And here’s what it looks like.

+
+
+
plt.figure(figsize=(10,2.5))
+plot_second_selection(selected)
+
+
+
+
+_images/07_plot_13_0.png +
+
+
+
+

Annotations

+

The figure in the paper uses three other features to present the results more clearly and compellingly:

+
    +
  • A vertical dashed line to distinguish the previously undetected region of GD-1,

  • +
  • A label that identifies the new region, and

  • +
  • Several annotations that combine text and arrows to identify features of GD-1.

  • +
+

As an exercise, choose any or all of these features and add them to the figure:

+
    +
  • To draw vertical lines, see plt.vlines and plt.axvline.

  • +
  • To add text, see plt.text.

  • +
  • To add an annotation with text and an arrow, see plt.annotate.

  • +
+

And here is some additional information about text and arrows.

+
+
+
# Solution
+
+# plt.axvline(-55, ls='--', color='gray', 
+#             alpha=0.4, dashes=(6,4), lw=2)
+# plt.text(-60, 5.5, 'Previously\nundetected', 
+#          fontsize='small', ha='right', va='top');
+
+# arrowprops=dict(color='gray', shrink=0.05, width=1.5, 
+#                 headwidth=6, headlength=8, alpha=0.4)
+
+# plt.annotate('Spur', xy=(-33, 2), xytext=(-35, 5.5),
+#              arrowprops=arrowprops,
+#              fontsize='small')
+
+# plt.annotate('Gap', xy=(-22, -1), xytext=(-25, -5.5),
+#              arrowprops=arrowprops,
+#              fontsize='small')
+
+
+
+
+
+
+

Customization

+

Matplotlib provides a default style that determines things like the colors of lines, the placement of labels and ticks on the axes, and many other properties.

+

There are several ways to override these defaults and customize your figures:

+
    +
  • To customize only the current figure, you can call functions like tick_params, which we’ll demonstrate below.

  • +
  • To customize all figures in a notebook, you use rcParams.

  • +
  • To override more than a few defaults at the same time, you can use a style sheet.

  • +
+

As a simple example, notice that Matplotlib puts ticks on the outside of the figures by default, and only on the left and bottom sides of the axes.

+

To change this behavior, you can use gca() to get the current axes and tick_params to change the settings.

+

Here’s how you can put the ticks on the inside of the figure:

+
plt.gca().tick_params(direction='in')
+
+
+

Exercise: Read the documentation of tick_params and use it to put ticks on the top and right sides of the axes.

+
+
+
# Solution
+
+# plt.gca().tick_params(top=True, right=True)
+
+
+
+
+
+
+

rcParams

+

If you want to make a customization that applies to all figures in a notebook, you can use rcParams.

+

Here’s an example that reads the current font size from rcParams:

+
+
+
plt.rcParams['font.size']
+
+
+
+
+
10.0
+
+
+
+
+

And sets it to a new value:

+
+
+
plt.rcParams['font.size'] = 14
+
+
+
+
+

Exercise: Plot the previous figure again, and see what font sizes have changed. Look up any other element of rcParams, change its value, and check the effect on the figure.

+

If you find yourself making the same customizations in several notebooks, you can put changes to rcParams in a matplotlibrc file, which you can read about here.

+
+
+

Style sheets

+

The matplotlibrc file is read when you import Matplotlib, so it is not easy to switch from one set of options to another.

+

The solution to this problem is style sheets, which you can read about here.

+

Matplotlib provides a set of predefined style sheets, or you can make your own.

+

The following cell displays a list of style sheets installed on your system.

+
+
+
plt.style.available
+
+
+
+
+
['Solarize_Light2',
+ '_classic_test_patch',
+ 'bmh',
+ 'classic',
+ 'dark_background',
+ 'fast',
+ 'fivethirtyeight',
+ 'ggplot',
+ 'grayscale',
+ 'seaborn',
+ 'seaborn-bright',
+ 'seaborn-colorblind',
+ 'seaborn-dark',
+ 'seaborn-dark-palette',
+ 'seaborn-darkgrid',
+ 'seaborn-deep',
+ 'seaborn-muted',
+ 'seaborn-notebook',
+ 'seaborn-paper',
+ 'seaborn-pastel',
+ 'seaborn-poster',
+ 'seaborn-talk',
+ 'seaborn-ticks',
+ 'seaborn-white',
+ 'seaborn-whitegrid',
+ 'tableau-colorblind10']
+
+
+
+
+

Note that seaborn-paper, seaborn-talk and seaborn-poster are particularly intended to prepare versions of a figure with text sizes and other features that work well in papers, talks, and posters.

+

To use any of these style sheets, run plt.style.use like this:

+
plt.style.use('fivethirtyeight')
+
+
+

The style sheet you choose will affect the appearance of all figures you plot after calling use, unless you override any of the options or call use again.

+

Exercise: Choose one of the styles on the list and select it by calling use. Then go back and plot one of the figures above and see what effect it has.

+

If you can’t find a style sheet that’s exactly what you want, you can make your own. This repository includes a style sheet called az-paper-twocol.mplstyle, with customizations chosen by Azalee Bostroem for publication in astronomy journals.

+

The following cell downloads the style sheet.

+
+
+
import os
+
+filename = 'az-paper-twocol.mplstyle'
+path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'
+
+if not os.path.exists(filename):
+    print(download(path+filename))
+
+
+
+
+

You can use it like this:

+
plt.style.use('./az-paper-twocol.mplstyle')
+
+
+

The prefix ./ tells Matplotlib to look for the file in the current directory.

+

As an alternative, you can install a style sheet for your own use by putting it in your configuration directory. To find out where that is, you can run the following command:

+
import matplotlib as mpl
+
+mpl.get_configdir()
+
+
+
+
+

LaTeX fonts

+

When you include mathematical expressions in titles, labels, and annotations, Matplotlib uses mathtext to typeset them. mathtext uses the same syntax as LaTeX, but it provides only a subset of its features.

+

If you need features that are not provided by mathtext, or you prefer the way LaTeX typesets mathematical expressions, you can customize Matplotlib to use LaTeX.

+

In matplotlibrc or in a style sheet, you can add the following line:

+
text.usetex        : true
+
+
+

Or in a notebook you can run the following code.

+
plt.rcParams['text.usetex'] = True
+
+
+
+
+
plt.rcParams['text.usetex'] = True
+
+
+
+
+

If you go back and draw the figure again, you should see the difference.

+

If you get an error message like

+
LaTeX Error: File `type1cm.sty' not found.
+
+
+

You might have to install a package that contains the fonts LaTeX needs. On some systems, the packages texlive-latex-extra or cm-super might be what you need. See here for more help with this.

+

In case you are curious, cm stands for Computer Modern, the font LaTeX uses to typeset math.

+
+
+

Multiple panels

+

So far we’ve been working with one figure at a time, but the figure we are replicating contains multiple panels, also known as “subplots”.

+

Confusingly, Matplotlib provides three functions for making figures like this: subplot, subplots, and subplot2grid.

+
    +
  • subplot is simple and similar to MATLAB, so if you are familiar with that interface, you might like subplot

  • +
  • subplots is more object-oriented, which some people prefer.

  • +
  • subplot2grid is most convenient if you want to control the relative sizes of the subplots.

  • +
+

So we’ll use subplot2grid.

+

All of these functions are easier to use if we put the code that generates each panel in a function.

+
+
+

Upper right

+

To make the panel in the upper right, we have to reload centerline.

+
+
+
import os
+
+filename = 'gd1_dataframe.hdf5'
+path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'
+
+if not os.path.exists(filename):
+    print(download(path+filename))
+
+
+
+
+
+
+
import pandas as pd
+
+centerline = pd.read_hdf(filename, 'centerline')
+
+
+
+
+

And define the coordinates of the rectangle we selected.

+
+
+
pm1_min = -8.9
+pm1_max = -6.9
+pm2_min = -2.2
+pm2_max =  1.0
+
+pm1_rect = [pm1_min, pm1_min, pm1_max, pm1_max]
+pm2_rect = [pm2_min, pm2_max, pm2_max, pm2_min]
+
+
+
+
+

To plot this rectangle, we’ll use a feature we have not seen before: Polygon, which is provided by Matplotlib.

+

To create a Polygon, we have to put the coordinates in an array with x values in the first column and y values in the second column.

+
+
+
import numpy as np
+
+vertices = np.transpose([pm1_rect, pm2_rect])
+vertices
+
+
+
+
+
array([[-8.9, -2.2],
+       [-8.9,  1. ],
+       [-6.9,  1. ],
+       [-6.9, -2.2]])
+
+
+
+
+

The following function takes a DataFrame as a parameter, plots the proper motion for each star, and adds a shaded Polygon to show the region we selected.

+
+
+
from matplotlib.patches import Polygon
+
+def plot_proper_motion(df):
+    pm1 = df['pm_phi1']
+    pm2 = df['pm_phi2']
+
+    plt.plot(pm1, pm2, 'ko', markersize=0.3, alpha=0.3)
+    
+    poly = Polygon(vertices, closed=True, 
+                   facecolor='C1', alpha=0.4)
+    plt.gca().add_patch(poly)
+    
+    plt.xlabel('$\mu_{\phi_1} [\mathrm{mas~yr}^{-1}]$')
+    plt.ylabel('$\mu_{\phi_2} [\mathrm{mas~yr}^{-1}]$')
+
+    plt.xlim(-12, 8)
+    plt.ylim(-10, 10)
+
+
+
+
+

Notice that add_patch is like invert_yaxis; in order to call it, we have to use gca to get the current axes.

+

Here’s what the new version of the figure looks like. We’ve changed the labels on the axes to be consistent with the paper.

+
+
+
plt.rcParams['text.usetex'] = False
+plt.style.use('default')
+
+plot_proper_motion(centerline)
+
+
+
+
+_images/07_plot_50_0.png +
+
+
+
+

Upper left

+

Now let’s work on the panel in the upper left. We have to reload candidates.

+
+
+
import os
+
+filename = 'gd1_candidates.hdf5'
+path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'
+
+if not os.path.exists(filename):
+    print(download(path+filename))
+
+
+
+
+
+
+
import pandas as pd
+
+filename = 'gd1_candidates.hdf5'
+
+candidate_df = pd.read_hdf(filename, 'candidate_df')
+
+
+
+
+

Here’s a function that takes a DataFrame of candidate stars and plots their positions in GD-1 coordindates.

+
+
+
def plot_first_selection(df):
+    x = df['phi1']
+    y = df['phi2']
+
+    plt.plot(x, y, 'ko', markersize=0.3, alpha=0.3)
+
+    plt.xlabel('$\phi_1$ [deg]')
+    plt.ylabel('$\phi_2$ [deg]')
+    plt.title('Proper motion selection', fontsize='medium')
+
+    plt.axis('equal')
+
+
+
+
+

And here’s what it looks like.

+
+
+
plot_first_selection(candidate_df)
+
+
+
+
+_images/07_plot_57_0.png +
+
+
+
+

Lower right

+

For the figure in the lower right, we need to reload the merged DataFrame, which contains data from Gaia and photometry data from Pan-STARRS.

+
+
+
import pandas as pd
+
+filename = 'gd1_merged.hdf5'
+
+merged = pd.read_hdf(filename, 'merged')
+
+
+
+
+

From the previous notebook, here’s the function that plots the color-magnitude diagram.

+
+
+
import matplotlib.pyplot as plt
+
+def plot_cmd(table):
+    """Plot a color magnitude diagram.
+    
+    table: Table or DataFrame with photometry data
+    """
+    y = table['g_mean_psf_mag']
+    x = table['g_mean_psf_mag'] - table['i_mean_psf_mag']
+
+    plt.plot(x, y, 'ko', markersize=0.3, alpha=0.3)
+
+    plt.xlim([0, 1.5])
+    plt.ylim([14, 22])
+    plt.gca().invert_yaxis()
+
+    plt.ylabel('$g_0$')
+    plt.xlabel('$(g-i)_0$')
+
+
+
+
+

And here’s what it looks like.

+
+
+
plot_cmd(merged)
+
+
+
+
+_images/07_plot_63_0.png +
+
+

Exercise: Add a few lines to plot_cmd to show the Polygon we selected as a shaded area.

+

Run these cells to get the polygon coordinates we saved in the previous notebook.

+
+
+
import os
+
+filename = 'gd1_polygon.hdf5'
+path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'
+
+if not os.path.exists(filename):
+    print(download(path+filename))
+
+
+
+
+
+
+
coords_df = pd.read_hdf(filename, 'coords_df')
+coords = coords_df.to_numpy()
+coords
+
+
+
+
+
array([[ 0.21505376, 17.5481972 ],
+       [ 0.38978495, 18.94628403],
+       [ 0.53763441, 19.90286976],
+       [ 0.70340502, 20.60191317],
+       [ 0.82885305, 21.30095659],
+       [ 0.66308244, 21.52170714],
+       [ 0.43010753, 20.78587196],
+       [ 0.27329749, 19.71891096],
+       [ 0.17473118, 18.68874172],
+       [ 0.17473118, 17.95290655]])
+
+
+
+
+
+
+
# Solution
+
+#poly = Polygon(coords, closed=True, 
+#               facecolor='C1', alpha=0.4)
+#plt.gca().add_patch(poly)
+
+
+
+
+
+
+

Subplots

+

Now we’re ready to put it all together. To make a figure with four subplots, we’ll use subplot2grid, which requires two arguments:

+
    +
  • shape, which is a tuple with the number of rows and columns in the grid, and

  • +
  • loc, which is a tuple identifying the location in the grid we’re about to fill.

  • +
+

In this example, shape is (2, 2) to create two rows and two columns.

+

For the first panel, loc is (0, 0), which indicates row 0 and column 0, which is the upper-left panel.

+

Here’s how we use it to draw the four panels.

+
+
+
shape = (2, 2)
+plt.subplot2grid(shape, (0, 0))
+plot_first_selection(candidate_df)
+
+plt.subplot2grid(shape, (0, 1))
+plot_proper_motion(centerline)
+
+plt.subplot2grid(shape, (1, 0))
+plot_second_selection(selected)
+
+plt.subplot2grid(shape, (1, 1))
+plot_cmd(merged)
+poly = Polygon(coords, closed=True, 
+               facecolor='C1', alpha=0.4)
+plt.gca().add_patch(poly)
+
+plt.tight_layout()
+
+
+
+
+_images/07_plot_69_0.png +
+
+

We use plt.tight_layout at the end, which adjusts the sizes of the panels to make sure the titles and axis labels don’t overlap.

+

Exercise: See what happens if you leave out tight_layout.

+
+
+

Adjusting proportions

+

In the previous figure, the panels are all the same size. To get a better view of GD-1, we’d like to stretch the panels on the left and compress the ones on the right.

+

To do that, we’ll use the colspan argument to make a panel that spans multiple columns in the grid.

+

In the following example, shape is (2, 4), which means 2 rows and 4 columns.

+

The panels on the left span three columns, so they are three times wider than the panels on the right.

+

At the same time, we use figsize to adjust the aspect ratio of the whole figure.

+
+
+
plt.figure(figsize=(9, 4.5))
+
+shape = (2, 4)
+plt.subplot2grid(shape, (0, 0), colspan=3)
+plot_first_selection(candidate_df)
+
+plt.subplot2grid(shape, (0, 3))
+plot_proper_motion(centerline)
+
+plt.subplot2grid(shape, (1, 0), colspan=3)
+plot_second_selection(selected)
+
+plt.subplot2grid(shape, (1, 3))
+plot_cmd(merged)
+poly = Polygon(coords, closed=True, 
+               facecolor='C1', alpha=0.4)
+plt.gca().add_patch(poly)
+
+plt.tight_layout()
+
+
+
+
+_images/07_plot_72_0.png +
+
+

This is looking more and more like the figure in the paper.

+

Exercise: In this example, the ratio of the widths of the panels is 3:1. How would you adjust it if you wanted the ratio to be 3:2?

+
+
+

Summary

+

In this notebook, we reverse-engineered the figure we’ve been replicating, identifying elements that seem effective and others that could be improved.

+

We explored features Matplotlib provides for adding annotations to figures – including text, lines, arrows, and polygons – and several ways to customize the appearance of figures. And we learned how to create figures that contain multiple panels.

+
+
+

Best practices

+
    +
  • The most effective figures focus on telling a single story clearly and compellingly.

  • +
  • Consider using annotations to guide the readers attention to the most important elements of a figure.

  • +
  • The default Matplotlib style generates good quality figures, but there are several ways you can override the defaults.

  • +
  • If you find yourself making the same customizations on several projects, you might want to create your own style sheet.

  • +
+
+
+ + + + +
+ +
+
+ + +
+ + Chapter 6 + +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/AstronomicalData/01_query.html b/AstronomicalData/01_query.html new file mode 100644 index 0000000..eadda39 --- /dev/null +++ b/AstronomicalData/01_query.html @@ -0,0 +1,1403 @@ + + + + + + + + Lesson 1 — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + +
+ + + +
+
+
+ +
+ +
+

Lesson 1

+
+

Introduction

+

This workshop is an introduction to tools and practices for working with astronomical data. Topics covered include:

+
    +
  • Writing queries that select and download data from a database.

  • +
  • Using data stored in an Astropy Table or Pandas DataFrame.

  • +
  • Working with coordinates and other quantities with units.

  • +
  • Storing data in various formats.

  • +
  • Performing database join operations that combine data from multiple tables.

  • +
  • Visualizing data and preparing publication-quality figures.

  • +
+

As a running example, we will replicate part of the analysis in a recent paper, “Off the beaten path: Gaia reveals GD-1 stars outside of the main stream” by Adrian M. Price-Whelan and Ana Bonaca.

+

As the abstract explains, “Using data from the Gaia second data release combined with Pan-STARRS photometry, we present a sample of highly-probable members of the longest cold stream in the Milky Way, GD-1.”

+

GD-1 is a stellar stream, which is “an association of stars orbiting a galaxy that was once a globular cluster or dwarf galaxy that has now been torn apart and stretched out along its orbit by tidal forces.”

+

This article in Science magazine explains some of the background, including the process that led to the paper and an discussion of the scientific implications:

+
    +
  • “The streams are particularly useful for … galactic archaeology — rewinding the cosmic clock to reconstruct the assembly of the Milky Way.”

  • +
  • “They also are being used as exquisitely sensitive scales to measure the galaxy’s mass.”

  • +
  • “… the streams are well-positioned to reveal the presence of dark matter … because the streams are so fragile, theorists say, collisions with marauding clumps of dark matter could leave telltale scars, potential clues to its nature.”

  • +
+
+
+

Prerequisites

+

This workshop is meant for people who are familiar with basic Python, but not necessarily the libraries we will use, like Astropy or Pandas. If you are familiar with Python lists and dictionaries, and you know how to write a function that takes parameters and returns a value, you know enough Python for this workshop.

+

We assume that you have some familiarity with operating systems, like the ability to use a command-line interface. But we don’t assume you have any prior experience with databases.

+

We assume that you are familiar with astronomy at the undergraduate level, but we will not assume specialized knowledge of the datasets or analysis methods we’ll use.

+
+
+

Data

+

The datasets we will work with are:

+
    +
  • Gaia, which is “a space observatory of the European Space Agency (ESA), launched in 2013 … designed for astrometry: measuring the positions, distances and motions of stars with unprecedented precision”, and

  • +
  • Pan-STARRS, The Panoramic Survey Telescope and Rapid Response System, which is a survey designed to monitor the sky for transient objects, producing a catalog with accurate astronometry and photometry of detected sources.

  • +
+

Both of these datasets are very large, which can make them challenging to work with. It might not be possible, or practical, to download the entire dataset. +One of the goals of this workshop is to provide tools for working with large datasets.

+
+
+

Lesson 1

+

The first lesson demonstrates the steps for selecting and downloading data from the Gaia Database:

+
    +
  1. First we’ll make a connection to the Gaia server,

  2. +
  3. We will explore information about the database and the tables it contains,

  4. +
  5. We will write a query and send it to the server, and finally

  6. +
  7. We will download the response from the server.

  8. +
+

After completing this lesson, you should be able to

+
    +
  • Compose a basic query in ADQL.

  • +
  • Use queries to explore a database and its tables.

  • +
  • Use queries to download data.

  • +
  • Develop, test, and debug a query incrementally.

  • +
+
+
+

Query Language

+

In order to select data from a database, you have to compose a query, which is like a program written in a “query language”. +The query language we’ll use is ADQL, which stands for “Astronomical Data Query Language”.

+

ADQL is a dialect of SQL (Structured Query Language), which is by far the most commonly used query language. Almost everything you will learn about ADQL also works in SQL.

+

The reference manual for ADQL is here. +But you might find it easier to learn from this ADQL Cookbook.

+
+
+

Installing libraries

+

The library we’ll use to get Gaia data is Astroquery.

+

If you are running this notebook on Colab, you can run the following cell to install Astroquery and the other libraries we’ll use.

+

If you are running this notebook on your own computer, you might have to install these libraries yourself.

+

If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.

+

TODO: Add a link to the instructions.

+
+
+
# If we're running on Colab, install libraries
+
+import sys
+IN_COLAB = 'google.colab' in sys.modules
+
+if IN_COLAB:
+    !pip install astroquery astro-gala pyia
+
+
+
+
+
+
+

Connecting to Gaia

+

Astroquery provides Gaia, which is an object that represents a connection to the Gaia database.

+

We can connect to the Gaia database like this:

+
+
+
from astroquery.gaia import Gaia
+
+
+
+
+
Created TAP+ (v1.2.1) - Connection:
+	Host: gea.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+Created TAP+ (v1.2.1) - Connection:
+	Host: geadata.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+
+
+
+
+
+

Optional detail

+
+

Running this import statement has the effect of creating a TAP+ connection; TAP stands for “Table Access Protocol”. It is a network protocol for sending queries to the database and getting back the results. We’re not sure why it seems to create two connections.

+
+
+
+
+

Databases and Tables

+

What is a database, anyway? Most generally, it can be any collection of data, but when we are talking about ADQL or SQL:

+
    +
  • A database is a collection of one or more named tables.

  • +
  • Each table is a 2-D array with one or more named columns of data.

  • +
+

We can use Gaia.load_tables to get the names of the tables in the Gaia database. With the option only_names=True, it loads information about the tables, called the “metadata”, not the data itself.

+
+
+
tables = Gaia.load_tables(only_names=True)
+
+
+
+
+
INFO: Retrieving tables... [astroquery.utils.tap.core]
+INFO: Parsing tables... [astroquery.utils.tap.core]
+INFO: Done. [astroquery.utils.tap.core]
+
+
+
+
+
+
+
for table in (tables):
+    print(table.get_qualified_name())
+
+
+
+
+
external.external.apassdr9
+external.external.gaiadr2_geometric_distance
+external.external.galex_ais
+external.external.ravedr5_com
+external.external.ravedr5_dr5
+external.external.ravedr5_gra
+external.external.ravedr5_on
+external.external.sdssdr13_photoprimary
+external.external.skymapperdr1_master
+external.external.tmass_xsc
+public.public.hipparcos
+public.public.hipparcos_newreduction
+public.public.hubble_sc
+public.public.igsl_source
+public.public.igsl_source_catalog_ids
+public.public.tycho2
+public.public.dual
+tap_config.tap_config.coord_sys
+tap_config.tap_config.properties
+tap_schema.tap_schema.columns
+tap_schema.tap_schema.key_columns
+tap_schema.tap_schema.keys
+tap_schema.tap_schema.schemas
+tap_schema.tap_schema.tables
+gaiadr1.gaiadr1.aux_qso_icrf2_match
+gaiadr1.gaiadr1.ext_phot_zero_point
+gaiadr1.gaiadr1.allwise_best_neighbour
+gaiadr1.gaiadr1.allwise_neighbourhood
+gaiadr1.gaiadr1.gsc23_best_neighbour
+gaiadr1.gaiadr1.gsc23_neighbourhood
+gaiadr1.gaiadr1.ppmxl_best_neighbour
+gaiadr1.gaiadr1.ppmxl_neighbourhood
+gaiadr1.gaiadr1.sdss_dr9_best_neighbour
+gaiadr1.gaiadr1.sdss_dr9_neighbourhood
+gaiadr1.gaiadr1.tmass_best_neighbour
+gaiadr1.gaiadr1.tmass_neighbourhood
+gaiadr1.gaiadr1.ucac4_best_neighbour
+gaiadr1.gaiadr1.ucac4_neighbourhood
+gaiadr1.gaiadr1.urat1_best_neighbour
+gaiadr1.gaiadr1.urat1_neighbourhood
+gaiadr1.gaiadr1.cepheid
+gaiadr1.gaiadr1.phot_variable_time_series_gfov
+gaiadr1.gaiadr1.phot_variable_time_series_gfov_statistical_parameters
+gaiadr1.gaiadr1.rrlyrae
+gaiadr1.gaiadr1.variable_summary
+gaiadr1.gaiadr1.allwise_original_valid
+gaiadr1.gaiadr1.gsc23_original_valid
+gaiadr1.gaiadr1.ppmxl_original_valid
+gaiadr1.gaiadr1.sdssdr9_original_valid
+gaiadr1.gaiadr1.tmass_original_valid
+gaiadr1.gaiadr1.ucac4_original_valid
+gaiadr1.gaiadr1.urat1_original_valid
+gaiadr1.gaiadr1.gaia_source
+gaiadr1.gaiadr1.tgas_source
+gaiadr2.gaiadr2.aux_allwise_agn_gdr2_cross_id
+gaiadr2.gaiadr2.aux_iers_gdr2_cross_id
+gaiadr2.gaiadr2.aux_sso_orbit_residuals
+gaiadr2.gaiadr2.aux_sso_orbits
+gaiadr2.gaiadr2.dr1_neighbourhood
+gaiadr2.gaiadr2.allwise_best_neighbour
+gaiadr2.gaiadr2.allwise_neighbourhood
+gaiadr2.gaiadr2.apassdr9_best_neighbour
+gaiadr2.gaiadr2.apassdr9_neighbourhood
+gaiadr2.gaiadr2.gsc23_best_neighbour
+gaiadr2.gaiadr2.gsc23_neighbourhood
+gaiadr2.gaiadr2.hipparcos2_best_neighbour
+gaiadr2.gaiadr2.hipparcos2_neighbourhood
+gaiadr2.gaiadr2.panstarrs1_best_neighbour
+gaiadr2.gaiadr2.panstarrs1_neighbourhood
+gaiadr2.gaiadr2.ppmxl_best_neighbour
+gaiadr2.gaiadr2.ppmxl_neighbourhood
+gaiadr2.gaiadr2.ravedr5_best_neighbour
+gaiadr2.gaiadr2.ravedr5_neighbourhood
+gaiadr2.gaiadr2.sdssdr9_best_neighbour
+gaiadr2.gaiadr2.sdssdr9_neighbourhood
+gaiadr2.gaiadr2.tmass_best_neighbour
+gaiadr2.gaiadr2.tmass_neighbourhood
+gaiadr2.gaiadr2.tycho2_best_neighbour
+gaiadr2.gaiadr2.tycho2_neighbourhood
+gaiadr2.gaiadr2.urat1_best_neighbour
+gaiadr2.gaiadr2.urat1_neighbourhood
+gaiadr2.gaiadr2.sso_observation
+gaiadr2.gaiadr2.sso_source
+gaiadr2.gaiadr2.vari_cepheid
+gaiadr2.gaiadr2.vari_classifier_class_definition
+gaiadr2.gaiadr2.vari_classifier_definition
+gaiadr2.gaiadr2.vari_classifier_result
+gaiadr2.gaiadr2.vari_long_period_variable
+gaiadr2.gaiadr2.vari_rotation_modulation
+gaiadr2.gaiadr2.vari_rrlyrae
+gaiadr2.gaiadr2.vari_short_timescale
+gaiadr2.gaiadr2.vari_time_series_statistics
+gaiadr2.gaiadr2.panstarrs1_original_valid
+gaiadr2.gaiadr2.gaia_source
+gaiadr2.gaiadr2.ruwe
+
+
+
+
+

So that’s a lot of tables. The ones we’ll use are:

+
    +
  • gaiadr2.gaia_source, which contains Gaia data from data release 2,

  • +
  • gaiadr2.panstarrs1_original_valid, which contains the photometry data we’ll use from PanSTARRS, and

  • +
  • gaiadr2.panstarrs1_best_neighbour, which we’ll use to cross-match each star observed by Gaia with the same star observed by PanSTARRS.

  • +
+

We can use load_table (not load_tables) to get the metadata for a single table. The name of this function is misleading, because it only downloads metadata.

+
+
+
meta = Gaia.load_table('gaiadr2.gaia_source')
+meta
+
+
+
+
+
Retrieving table 'gaiadr2.gaia_source'
+Parsing table 'gaiadr2.gaia_source'...
+Done.
+
+
+
<astroquery.utils.tap.model.taptable.TapTableMeta at 0x7f922376e0a0>
+
+
+
+
+

Jupyter shows that the result is an object of type TapTableMeta, but it does not display the contents.

+

To see the metadata, we have to print the object.

+
+
+
print(meta)
+
+
+
+
+
TAP Table name: gaiadr2.gaiadr2.gaia_source
+Description: This table has an entry for every Gaia observed source as listed in the
+Main Database accumulating catalogue version from which the catalogue
+release has been generated. It contains the basic source parameters,
+that is only final data (no epoch data) and no spectra (neither final
+nor epoch).
+Num. columns: 96
+
+
+
+
+

Notice one gotcha: in the list of table names, this table appears as gaiadr2.gaiadr2.gaia_source, but when we load the metadata, we refer to it as gaiadr2.gaia_source.

+

Exercise: Go back and try

+
meta = Gaia.load_table('gaiadr2.gaiadr2.gaia_source')
+
+
+

What happens? Is the error message helpful? If you had not made this error deliberately, would you have been able to figure it out?

+
+
+

Columns

+

The following loop prints the names of the columns in the table.

+
+
+
for column in meta.columns:
+    print(column.name)
+
+
+
+
+
solution_id
+designation
+source_id
+random_index
+ref_epoch
+ra
+ra_error
+dec
+dec_error
+parallax
+parallax_error
+parallax_over_error
+pmra
+pmra_error
+pmdec
+pmdec_error
+ra_dec_corr
+ra_parallax_corr
+ra_pmra_corr
+ra_pmdec_corr
+dec_parallax_corr
+dec_pmra_corr
+dec_pmdec_corr
+parallax_pmra_corr
+parallax_pmdec_corr
+pmra_pmdec_corr
+astrometric_n_obs_al
+astrometric_n_obs_ac
+astrometric_n_good_obs_al
+astrometric_n_bad_obs_al
+astrometric_gof_al
+astrometric_chi2_al
+astrometric_excess_noise
+astrometric_excess_noise_sig
+astrometric_params_solved
+astrometric_primary_flag
+astrometric_weight_al
+astrometric_pseudo_colour
+astrometric_pseudo_colour_error
+mean_varpi_factor_al
+astrometric_matched_observations
+visibility_periods_used
+astrometric_sigma5d_max
+frame_rotator_object_type
+matched_observations
+duplicated_source
+phot_g_n_obs
+phot_g_mean_flux
+phot_g_mean_flux_error
+phot_g_mean_flux_over_error
+phot_g_mean_mag
+phot_bp_n_obs
+phot_bp_mean_flux
+phot_bp_mean_flux_error
+phot_bp_mean_flux_over_error
+phot_bp_mean_mag
+phot_rp_n_obs
+phot_rp_mean_flux
+phot_rp_mean_flux_error
+phot_rp_mean_flux_over_error
+phot_rp_mean_mag
+phot_bp_rp_excess_factor
+phot_proc_mode
+bp_rp
+bp_g
+g_rp
+radial_velocity
+radial_velocity_error
+rv_nb_transits
+rv_template_teff
+rv_template_logg
+rv_template_fe_h
+phot_variable_flag
+l
+b
+ecl_lon
+ecl_lat
+priam_flags
+teff_val
+teff_percentile_lower
+teff_percentile_upper
+a_g_val
+a_g_percentile_lower
+a_g_percentile_upper
+e_bp_min_rp_val
+e_bp_min_rp_percentile_lower
+e_bp_min_rp_percentile_upper
+flame_flags
+radius_val
+radius_percentile_lower
+radius_percentile_upper
+lum_val
+lum_percentile_lower
+lum_percentile_upper
+datalink_url
+epoch_photometry_url
+
+
+
+
+

You can probably guess what many of these columns are by looking at the names, but you should resist the temptation to guess. +To find out what the columns mean, read the documentation.

+

If you want to know what can go wrong when you don’t read the documentation, you might like this article.

+

Exercise: One of the other tables we’ll use is gaiadr2.gaiadr2.panstarrs1_original_valid. Use load_table to get the metadata for this table. How many columns are there and what are their names?

+

Hint: Remember the gotcha we mentioned earlier.

+
+
+
# Solution
+
+meta2 = Gaia.load_table('gaiadr2.panstarrs1_original_valid')
+print(meta2)
+
+
+
+
+
Retrieving table 'gaiadr2.panstarrs1_original_valid'
+Parsing table 'gaiadr2.panstarrs1_original_valid'...
+Done.
+TAP Table name: gaiadr2.gaiadr2.panstarrs1_original_valid
+Description: The Panoramic Survey Telescope and Rapid Response System (Pan-STARRS) is
+a system for wide-field astronomical imaging developed and operated by
+the Institute for Astronomy at the University of Hawaii. Pan-STARRS1
+(PS1) is the first part of Pan-STARRS to be completed and is the basis
+for Data Release 1 (DR1). The PS1 survey used a 1.8 meter telescope and
+its 1.4 Gigapixel camera to image the sky in five broadband filters (g,
+r, i, z, y).
+
+The current table contains a filtered subsample of the 10 723 304 629
+entries listed in the original ObjectThin table.
+We used only ObjectThin and MeanObject tables to extract
+panstarrs1OriginalValid table, this means that objects detected only in
+stack images are not included here. The main reason for us to avoid the
+use of objects detected in stack images is that their astrometry is not
+as good as the mean objects astrometry: “The stack positions (raStack,
+decStack) have considerably larger systematic astrometric errors than
+the mean epoch positions (raMean, decMean).” The astrometry for the
+MeanObject positions uses Gaia DR1 as a reference catalog, while the
+stack positions use 2MASS as a reference catalog.
+
+In details, we filtered out all objects where:
+
+-   nDetections = 1
+
+-   no good quality data in Pan-STARRS, objInfoFlag 33554432 not set
+
+-   mean astrometry could not be measured, objInfoFlag 524288 set
+
+-   stack position used for mean astrometry, objInfoFlag 1048576 set
+
+-   error on all magnitudes equal to 0 or to -999;
+
+-   all magnitudes set to -999;
+
+-   error on RA or DEC greater than 1 arcsec.
+
+The number of objects in panstarrs1OriginalValid is 2 264 263 282.
+
+The panstarrs1OriginalValid table contains only a subset of the columns
+available in the combined ObjectThin and MeanObject tables. A
+description of the original ObjectThin and MeanObjects tables can be
+found at:
+https://outerspace.stsci.edu/display/PANSTARRS/PS1+Database+object+and+detection+tables
+
+Download:
+http://mastweb.stsci.edu/ps1casjobs/home.aspx
+Documentation:
+https://outerspace.stsci.edu/display/PANSTARRS
+http://pswww.ifa.hawaii.edu/pswww/
+References:
+The Pan-STARRS1 Surveys, Chambers, K.C., et al. 2016, arXiv:1612.05560
+Pan-STARRS Data Processing System, Magnier, E. A., et al. 2016,
+arXiv:1612.05240
+Pan-STARRS Pixel Processing: Detrending, Warping, Stacking, Waters, C.
+Z., et al. 2016, arXiv:1612.05245
+Pan-STARRS Pixel Analysis: Source Detection and Characterization,
+Magnier, E. A., et al. 2016, arXiv:1612.05244
+Pan-STARRS Photometric and Astrometric Calibration, Magnier, E. A., et
+al. 2016, arXiv:1612.05242
+The Pan-STARRS1 Database and Data Products, Flewelling, H. A., et al.
+2016, arXiv:1612.05243
+
+Catalogue curator:
+SSDC - ASI Space Science Data Center
+https://www.ssdc.asi.it/
+Num. columns: 26
+
+
+
+
+
+
+
# Solution
+
+for column in meta2.columns:
+    print(column.name)
+
+
+
+
+
obj_name
+obj_id
+ra
+dec
+ra_error
+dec_error
+epoch_mean
+g_mean_psf_mag
+g_mean_psf_mag_error
+g_flags
+r_mean_psf_mag
+r_mean_psf_mag_error
+r_flags
+i_mean_psf_mag
+i_mean_psf_mag_error
+i_flags
+z_mean_psf_mag
+z_mean_psf_mag_error
+z_flags
+y_mean_psf_mag
+y_mean_psf_mag_error
+y_flags
+n_detections
+zone_id
+obj_info_flag
+quality_flag
+
+
+
+
+
+
+

Writing queries

+

By now you might be wondering how we actually download the data. With tables this big, you generally don’t. Instead, you use queries to select only the data you want.

+

A query is a string written in a query language like SQL; for the Gaia database, the query language is a dialect of SQL called ADQL.

+

Here’s an example of an ADQL query.

+
+
+
query1 = """SELECT 
+TOP 10
+source_id, ref_epoch, ra, dec, parallax 
+FROM gaiadr2.gaia_source"""
+
+
+
+
+

Python note: We use a triple-quoted string here so we can include line breaks in the query, which makes it easier to read.

+

The words in uppercase are ADQL keywords:

+
    +
  • SELECT indicates that we are selecting data (as opposed to adding or modifying data).

  • +
  • TOP indicates that we only want the first 10 rows of the table, which is useful for testing a query before asking for all of the data.

  • +
  • FROM specifies which table we want data from.

  • +
+

The third line is a list of column names, indicating which columns we want.

+

In this example, the keywords are capitalized and the column names are lowercase. This is a common style, but it is not required. ADQL and SQL are not case-sensitive.

+

To run this query, we use the Gaia object, which represents our connection to the Gaia database, and invoke launch_job:

+
+
+
job1 = Gaia.launch_job(query1)
+job1
+
+
+
+
+
<astroquery.utils.tap.model.job.Job at 0x7f9222e9cb20>
+
+
+
+
+

The result is an object that represents the job running on a Gaia server.

+

If you print it, it displays metadata for the forthcoming table.

+
+
+
print(job1)
+
+
+
+
+
<Table length=10>
+   name    dtype  unit                            description                            
+--------- ------- ---- ------------------------------------------------------------------
+source_id   int64      Unique source identifier (unique within a particular Data Release)
+ref_epoch float64   yr                                                    Reference epoch
+       ra float64  deg                                                    Right ascension
+      dec float64  deg                                                        Declination
+ parallax float64  mas                                                           Parallax
+Jobid: None
+Phase: COMPLETED
+Owner: None
+Output file: sync_20201005090721.xml.gz
+Results: None
+
+
+
+
+

Don’t worry about Results: None. That does not actually mean there are no results.

+

However, Phase: COMPLETED indicates that the job is complete, so we can get the results like this:

+
+
+
results1 = job1.get_results()
+type(results1)
+
+
+
+
+
astropy.table.table.Table
+
+
+
+
+

Optional detail: Why is table repeated three times? The first is the name of the module, the second is the name of the submodule, and the third is the name of the class. Most of the time we only care about the last one. It’s like the Linnean name for gorilla, which is Gorilla Gorilla Gorilla.

+

The result is an Astropy Table, which is similar to a table in an SQL database except:

+
    +
  • SQL databases are stored on disk drives, so they are persistent; that is, they “survive” even if you turn off the computer. An Astropy Table is stored in memory; it disappears when you turn off the computer (or shut down this Jupyter notebook).

  • +
  • SQL databases are designed to process queries. An Astropy Table can perform some query-like operations, like selecting columns and rows. But these operations use Python syntax, not SQL.

  • +
+

Jupyter knows how to display the contents of a Table.

+
+
+
results1
+
+
+
+
+
Table length=10 + + + + + + + + + + + + + + +
source_idref_epochradecparallax
yrdegdegmas
int64float64float64float64float64
45307383617937696002015.5281.5672536244872520.406821174303780.9785380604519425
45307526511350812162015.5281.086156535525720.5233504963518460.2674800612552977
45307433439514055682015.5281.3711441829917720.474147574053124-0.43911323550176806
45307550606271623682015.5281.267623626829920.5585239223461581.1422630184554958
45307468443413159682015.5281.137043174954120.3778523888981841.0092247424630945
45307684566150264322015.5281.872092143634720.31829694530366-0.06900136127674149
45307635131191372802015.5281.921180886411620.209568295785240.1266016679823622
45307363646185392642015.5281.491347561327420.3465790413276930.3894019486060072
45307359523051777282015.5281.408554916570420.3110309037199280.2041189982608354
45307512810560226562015.5281.058532837763820.4603095562147530.10294642821734962
+
+

Each column has a name, units, and a data type.

+

For example, the units of ra and dec are degrees, and their data type is float64, which is a 64-bit floating-point number, used to store measurements with a fraction part.

+

This information comes from the Gaia database, and has been stored in the Astropy Table by Astroquery.

+

Exercise: Read the documentation of this table and choose a column that looks interesting to you. Add the column name to the query and run it again. What are the units of the column you selected? What is its data type?

+
+
+

Asynchronous queries

+

launch_job asks the server to run the job “synchronously”, which normally means it runs immediately. But synchronous jobs are limited to 2000 rows. For queries that return more rows, you should run “asynchronously”, which mean they might take longer to get started.

+

If you are not sure how many rows a query will return, you can use the SQL command COUNT to find out how many rows are in the result without actually returning them. We’ll see an example of this later.

+

The results of an asynchronous query are stored in a file on the server, so you can start a query and come back later to get the results.

+

For anonymous users, files are kept for three days.

+

As an example, let’s try a query that’s similar to query1, with two changes:

+
    +
  • It selects the first 3000 rows, so it is bigger than we should run synchronously.

  • +
  • It uses a new keyword, WHERE.

  • +
+
+
+
query2 = """SELECT TOP 3000
+source_id, ref_epoch, ra, dec, parallax
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+"""
+
+
+
+
+

A WHERE clause indicates which rows we want; in this case, the query selects only rows “where” parallax is less than 1. This has the effect of selecting stars with relatively low parallax, which are farther away. We’ll use this clause to exclude nearby stars that are unlikely to be part of GD-1.

+

WHERE is one of the most common clauses in ADQL/SQL, and one of the most useful, because it allows us to select only the rows we need from the database.

+

We use launch_job_async to submit an asynchronous query.

+
+
+
job2 = Gaia.launch_job_async(query2)
+print(job2)
+
+
+
+
+
INFO: Query finished. [astroquery.utils.tap.core]
+<Table length=3000>
+   name    dtype  unit                            description                            
+--------- ------- ---- ------------------------------------------------------------------
+source_id   int64      Unique source identifier (unique within a particular Data Release)
+ref_epoch float64   yr                                                    Reference epoch
+       ra float64  deg                                                    Right ascension
+      dec float64  deg                                                        Declination
+ parallax float64  mas                                                           Parallax
+Jobid: 1601903242219O
+Phase: COMPLETED
+Owner: None
+Output file: async_20201005090722.vot
+Results: None
+
+
+
+
+

And here are the results.

+
+
+
results2 = job2.get_results()
+results2
+
+
+
+
+
Table length=3000 + + + + + + + + + + + + + + + + + + + + + + + + +
source_idref_epochradecparallax
yrdegdegmas
int64float64float64float64float64
45307383617937696002015.5281.5672536244872520.406821174303780.9785380604519425
45307526511350812162015.5281.086156535525720.5233504963518460.2674800612552977
45307433439514055682015.5281.3711441829917720.474147574053124-0.43911323550176806
45307684566150264322015.5281.872092143634720.31829694530366-0.06900136127674149
45307635131191372802015.5281.921180886411620.209568295785240.1266016679823622
45307363646185392642015.5281.491347561327420.3465790413276930.3894019486060072
45307359523051777282015.5281.408554916570420.3110309037199280.2041189982608354
45307512810560226562015.5281.058532837763820.4603095562147530.10294642821734962
45307409387744093442015.5281.376256953641620.4361400589412060.9242670062090182
...............
44677109150118026242015.5269.96809693073471.14290850381608820.42361471245557913
44677065513286795522015.5270.0331645898811.05657473236899270.922888231734588
44677122550373000962015.5270.77247179230470.6581664892880896-2.669179465293931
44677350011817617922015.5270.36286062483080.89470793235991240.6117399163086398
44677371014219166722015.5270.51108346614440.9806225910160181-0.39818224846127004
44677075477573274882015.5269.887462805949271.02127599401369620.7741412301054209
44677327720945730562015.5270.559971827601260.9037072088489417-1.7920417800164183
44677323554910877442015.5270.67307907024910.9197224705139885-0.3464446494840354
44677170997669445122015.5270.576671731208250.7262776590095680.05443955111134051
44677190582657812482015.5270.72480529715140.82055519217827850.3733943917490343
+
+

You might notice that some values of parallax are negative. As this FAQ explains, “Negative parallaxes are caused by errors in the observations.” Negative parallaxes have “no physical meaning,” but they can be a “useful diagnostic on the quality of the astrometric solution.”

+

Later we will see an example where we use parallax and parallax_error to identify stars where the distance estimate is likely to be inaccurate.

+

Exercise: The clauses in a query have to be in the right order. Go back and change the order of the clauses in query2 and run it again.

+

The query should fail, but notice that you don’t get much useful debugging information.

+

For this reason, developing and debugging ADQL queries can be really hard. A few suggestions that might help:

+
    +
  • Whenever possible, start with a working query, either an example you find online or a query you have used in the past.

  • +
  • Make small changes and test each change before you continue.

  • +
  • While you are debugging, use TOP to limit the number of rows in the result. That will make each attempt run faster, which reduces your testing time.

  • +
  • Launching test queries synchronously might make them start faster, too.

  • +
+
+
+

Operators

+

In a WHERE clause, you can use any of the SQL comparison operators; here are the most common ones:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Symbol

Operation

>

greater than

<

less than

>=

greater than or equal

<=

less than or equal

=

equal

!= or <>

not equal

+

Most of these are the same as Python, but some are not. In particular, notice that the equality operator is =, not ==. +Be careful to keep your Python out of your ADQL!

+

You can combine comparisons using the logical operators:

+
    +
  • AND: true if both comparisons are true

  • +
  • OR: true if either or both comparisons are true

  • +
+

Finally, you can use NOT to invert the result of a comparison.

+

Exercise: Read about SQL operators here and then modify the previous query to select rows where bp_rp is between -0.75 and 2.

+

You can read about this variable here.

+
+
+
# Solution
+
+# This is what most people will probably do
+
+query = """SELECT TOP 10
+source_id, ref_epoch, ra, dec, parallax
+FROM gaiadr2.gaia_source
+WHERE parallax < 1 
+  AND bp_rp > -0.75 AND bp_rp < 2
+"""
+
+
+
+
+
+
+
# Solution
+
+# But if someone notices the BETWEEN operator, 
+# they might do this
+
+query = """SELECT TOP 10
+source_id, ref_epoch, ra, dec, parallax
+FROM gaiadr2.gaia_source
+WHERE parallax < 1 
+  AND bp_rp BETWEEN -0.75 AND 2
+"""
+
+
+
+
+

This Hertzsprung-Russell diagram shows the BP-RP color and luminosity of stars in the Gaia catalog.

+

Selecting stars with bp-rp less than 2 excludes many class M dwarf stars, which are low temperature, low luminosity. A star like that at GD-1’s distance would be hard to detect, so if it is detected, it it more likely to be in the foreground.

+
+
+

Cleaning up

+

Asynchronous jobs have a jobid.

+
+
+
job1.jobid, job2.jobid
+
+
+
+
+
(None, '1601903242219O')
+
+
+
+
+

Which you can use to remove the job from the server.

+
+
+
Gaia.remove_jobs([job2.jobid])
+
+
+
+
+
Removed jobs: '['1601903242219O']'.
+
+
+
+
+

If you don’t remove it job from the server, it will be removed eventually, so don’t feel too bad if you don’t clean up after yourself.

+
+
+

Formatting queries

+

So far the queries have been string “literals”, meaning that the entire string is part of the program. +But writing queries yourself can be slow, repetitive, and error-prone.

+

It is often a good idea to write Python code that assembles a query for you. One useful tool for that is the string format method.

+

As an example, we’ll divide the previous query into two parts; a list of column names and a “base” for the query that contains everything except the column names.

+

Here’s the list of columns we’ll select.

+
+
+
columns = 'source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity'
+
+
+
+
+

And here’s the base; it’s a string that contains at least one format specifier in curly brackets (braces).

+
+
+
query3_base = """SELECT TOP 10 
+{columns}
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2
+"""
+
+
+
+
+

This base query contains one format specifier, {columns}, which is a placeholder for the list of column names we will provide.

+

To assemble the query, we invoke format on the base string and provide a keyword argument that assigns a value to columns.

+
+
+
query3 = query3_base.format(columns=columns)
+
+
+
+
+

The result is a string with line breaks. If you display it, the line breaks appear as \n.

+
+
+
query3
+
+
+
+
+
'SELECT TOP 10 \nsource_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\nFROM gaiadr2.gaia_source\nWHERE parallax < 1\n  AND bp_rp BETWEEN -0.75 AND 2\n'
+
+
+
+
+

But if you print it, the line breaks appear as… line breaks.

+
+
+
print(query3)
+
+
+
+
+
SELECT TOP 10 
+source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2
+
+
+
+
+

Notice that the format specifier has been replaced with the value of columns.

+

Let’s run it and see if it works:

+
+
+
job3 = Gaia.launch_job(query3)
+print(job3)
+
+
+
+
+
<Table length=10>
+      name       dtype    unit                              description                             n_bad
+--------------- ------- -------- ------------------------------------------------------------------ -----
+      source_id   int64          Unique source identifier (unique within a particular Data Release)     0
+             ra float64      deg                                                    Right ascension     0
+            dec float64      deg                                                        Declination     0
+           pmra float64 mas / yr                         Proper motion in right ascension direction     0
+          pmdec float64 mas / yr                             Proper motion in declination direction     0
+       parallax float64      mas                                                           Parallax     0
+ parallax_error float64      mas                                         Standard error of parallax     0
+radial_velocity float64   km / s                                                    Radial velocity    10
+Jobid: None
+Phase: COMPLETED
+Owner: None
+Output file: sync_20201005090726.xml.gz
+Results: None
+
+
+
+
+
+
+
results3 = job3.get_results()
+results3
+
+
+
+
+
Table length=10 + + + + + + + + + + + + + + +
source_idradecpmrapmdecparallaxparallax_errorradial_velocity
degdegmas / yrmas / yrmasmaskm / s
int64float64float64float64float64float64float64float64
4467710915011802624269.96809693073471.14290850381608822.0233280236600626-2.56924278755102660.423614712455579130.470352406647465--
4467706551328679552270.0331645898811.0565747323689927-3.414829591355289-3.84372158574957370.9228882317345880.927008559859825--
4467712255037300096270.77247179230470.6581664892880896-3.5620173752896025-6.595792323153987-2.6691794652939310.9719742773203504--
4467735001181761792270.36286062483080.89470793235991242.13070799264892050.88267277109107120.61173991630863980.509812721702093--
4467737101421916672270.51108346614440.98062259101601810.17532366511560785-5.113270239706202-0.398182248461270040.7549581886719651--
4467707547757327488269.887462805949271.0212759940136962-2.6382230817672987-3.7077765320492870.77414123010542090.3022057897812064--
4467732355491087744270.67307907024910.9197224705139885-2.2735991502653037-11.864952855984358-0.34644464948403540.4937921513912002--
4467717099766944512270.576671731208250.726277659009568-3.4598362614808367-4.6014268933659210.054439551111340510.8867339293525688--
4467719058265781248270.72480529715140.8205551921782785-3.255079498426542-9.2492850691110850.37339439174903430.390952370410666--
4467722326741572352270.874312918885040.85955659758691580.106963983518598261.2035993780158853-0.118509434328643730.1660452431882023--
+
+

Good so far.

+

Exercise: This query always selects sources with parallax less than 1. But suppose you want to take that upper bound as an input.

+

Modify query3_base to replace 1 with a format specifier like {max_parallax}. Now, when you call format, add a keyword argument that assigns a value to max_parallax, and confirm that the format specifier gets replaced with the value you provide.

+
+
+
# Solution
+
+query4_base = """SELECT TOP 10
+{columns}
+FROM gaiadr2.gaia_source
+WHERE parallax < {max_parallax} AND 
+bp_rp BETWEEN -0.75 AND 2
+"""
+
+
+
+
+
+
+
# Solution
+
+query4 = query4_base.format(columns=columns,
+                          max_parallax=0.5)
+print(query)
+
+
+
+
+
SELECT TOP 10
+source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity
+FROM gaiadr2.gaia_source
+WHERE parallax < 0.5 AND 
+bp_rp BETWEEN -0.75 AND 2
+
+
+
+
+

Style note: You might notice that the variable names in this notebook are numbered, like query1, query2, etc.

+

The advantage of this style is that it isolates each section of the notebook from the others, so if you go back and run the cells out of order, it’s less likely that you will get unexpected interactions.

+

A drawback of this style is that it can be a nuisance to update the notebook if you add, remove, or reorder a section.

+

What do you think of this choice? Are there alternatives you prefer?

+
+
+

Summary

+

This notebook demonstrates the following steps:

+
    +
  1. Making a connection to the Gaia server,

  2. +
  3. Exploring information about the database and the tables it contains,

  4. +
  5. Writing a query and sending it to the server, and finally

  6. +
  7. Downloading the response from the server as an Astropy Table.

  8. +
+
+
+

Best practices

+
    +
  • If you can’t download an entire dataset (or it’s not practical) use queries to select the data you need.

  • +
  • Read the metadata and the documentation to make sure you understand the tables, their columns, and what they mean.

  • +
  • Develop queries incrementally: start with something simple, test it, and add a little bit at a time.

  • +
  • Use ADQL features like TOP and COUNT to test before you run a query that might return a lot of data.

  • +
  • If you know your query will return fewer than 3000 rows, you can run it synchronously, which might complete faster (but it doesn’t seem to make much difference). If it might return more than 3000 rows, you should run it asynchronously.

  • +
  • ADQL and SQL are not case-sensitive, so you don’t have to capitalize the keywords, but you should.

  • +
  • ADQL and SQL don’t require you to break a query into multiple lines, but you should.

  • +
+

Jupyter notebooks can be good for developing and testing code, but they have some drawbacks. In particular, if you run the cells out of order, you might find that variables don’t have the values you expect.

+

There are a few things you can do to mitigate these problems:

+
    +
  • Make each section of the notebook self-contained. Try not to use the same variable name in more than one section.

  • +
  • Keep notebooks short. Look for places where you can break your analysis into phases with one notebook per phase.

  • +
+
+
+ + + + +
+ +
+
+ + +
+ + +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/AstronomicalData/02_coords.html b/AstronomicalData/02_coords.html new file mode 100644 index 0000000..81a0755 --- /dev/null +++ b/AstronomicalData/02_coords.html @@ -0,0 +1,1824 @@ + + + + + + + + Lesson 2 — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + +
+ + + +
+
+
+ +
+ +
+

Lesson 2

+

This is the second in a series of lessons related to astronomy data.

+

As a running example, we are replicating parts of the analysis in a recent paper, “Off the beaten path: Gaia reveals GD-1 stars outside of the main stream” by Adrian M. Price-Whelan and Ana Bonaca.

+

In the first notebook, we wrote ADQL queries and used them to select and download data from the Gaia server.

+

In this notebook, we’ll pick up where we left off and write a query to select stars from the region of the sky where we expect GD-1 to be.

+

We’ll start with an example that does a “cone search”; that is, it selects stars that appear in a circular region of the sky.

+

Then, to select stars in the vicinity of GD-1, we’ll:

+
    +
  • Use Quantity objects to represent measurements with units.

  • +
  • Use the Gala library to convert coordinates from one frame to another.

  • +
  • Use the ADQL keywords POLYGON, CONTAINS, and POINT to select stars that fall within a polygonal region.

  • +
  • Submit a query and download the results.

  • +
  • Store the results in a FITS file.

  • +
+

After completing this lesson, you should be able to

+
    +
  • Use Python string formatting to compose more complex ADQL queries.

  • +
  • Work with coordinates and other quantities that have units.

  • +
  • Download the results of a query and store them in a file.

  • +
+
+

Installing libraries

+

If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we’ll use.

+

If you are running this notebook on your own computer, you might have to install these libraries yourself.

+

If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.

+

TODO: Add a link to the instructions.

+
+
+
# If we're running on Colab, install libraries
+
+import sys
+IN_COLAB = 'google.colab' in sys.modules
+
+if IN_COLAB:
+    !pip install astroquery astro-gala pyia
+
+
+
+
+
+
+

Selecting a region

+

One of the most common ways to restrict a query is to select stars in a particular region of the sky.

+

For example, here’s a query from the Gaia archive documentation that selects “all the objects … in a circular region centered at (266.41683, -29.00781) with a search radius of 5 arcmin (0.08333 deg).”

+
+
+
query = """
+SELECT 
+TOP 10 source_id
+FROM gaiadr2.gaia_source
+WHERE 1=CONTAINS(
+  POINT(ra, dec),
+  CIRCLE(266.41683, -29.00781, 0.08333333))
+"""
+
+
+
+
+

This query uses three keywords that are specific to ADQL (not SQL):

+
    +
  • POINT: a location in ICRS coordinates, specified in degrees of right ascension and declination.

  • +
  • CIRCLE: a circle where the first two values are the coordinates of the center and the third is the radius in degrees.

  • +
  • CONTAINS: a function that returns 1 if a POINT is contained in a shape and 0 otherwise.

  • +
+

Here is the documentation of CONTAINS.

+

A query like this is called a cone search because it selects stars in a cone.

+

Here’s how we run it.

+
+
+
from astroquery.gaia import Gaia
+
+job = Gaia.launch_job(query)
+result = job.get_results()
+result
+
+
+
+
+
Created TAP+ (v1.2.1) - Connection:
+	Host: gea.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+Created TAP+ (v1.2.1) - Connection:
+	Host: geadata.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+
+
+
Table length=10 + + + + + + + + + + + + + +
source_id
int64
4057468321929794432
4057468287575835392
4057482027171038976
4057470349160630656
4057470039924301696
4057469868125641984
4057468351995073024
4057469661959554560
4057470520960672640
4057470555320409600
+
+

Exercise: When you are debugging queries like this, you can use TOP to limit the size of the results, but then you still don’t know how big the results will be.

+

An alternative is to use COUNT, which asks for the number of rows that would be selected, but it does not return them.

+

In the previous query, replace TOP 10 source_id with COUNT(source_id) and run the query again. How many stars has Gaia identified in the cone we searched?

+
+
+

Getting GD-1 Data

+

From the Price-Whelan and Bonaca paper, we will try to reproduce Figure 1, which includes this representation of stars likely to belong to GD-1:

+

Along the axis of right ascension (\(\phi_1\)) the figure extends from -100 to 20 degrees.

+

Along the axis of declination (\(\phi_2\)) the figure extends from about -8 to 4 degrees.

+

Ideally, we would select all stars from this rectangle, but there are more than 10 million of them, so

+
    +
  • That would be difficult to work with,

  • +
  • As anonymous users, we are limited to 3 million rows in a single query, and

  • +
  • While we are developing and testing code, it will be faster to work with a smaller dataset.

  • +
+

So we’ll start by selecting stars in a smaller rectangle, from -55 to -45 degrees right ascension and -8 to 4 degrees of declination.

+

But first we let’s see how to represent quantities with units like degrees.

+
+
+

Working with coordinates

+

Coordinates are physical quantities, which means that they have two parts, a value and a unit.

+

For example, the coordinate \(30^{\circ}\) has value 30 and its units are degrees.

+

Until recently, most scientific computation was done with values only; units were left out of the program altogether, often with disastrous results.

+

Astropy provides tools for including units explicitly in computations, which makes it possible to detect errors before they cause disasters.

+

To use Astropy units, we import them like this:

+
+
+
import astropy.units as u
+
+u
+
+
+
+
+
<module 'astropy.units' from '/home/downey/anaconda3/envs/AstronomicalData/lib/python3.8/site-packages/astropy/units/__init__.py'>
+
+
+
+
+

u is an object that contains most common units and all SI units.

+

You can use dir to list them, but you should also read the documentation.

+
+
+
dir(u)
+
+
+
+
+
['A',
+ 'AA',
+ 'AB',
+ 'ABflux',
+ 'ABmag',
+ 'AU',
+ 'Angstrom',
+ 'B',
+ 'Ba',
+ 'Barye',
+ 'Bi',
+ 'Biot',
+ 'Bol',
+ 'Bq',
+ 'C',
+ 'Celsius',
+ 'Ci',
+ 'CompositeUnit',
+ 'D',
+ 'Da',
+ 'Dalton',
+ 'Debye',
+ 'Decibel',
+ 'DecibelUnit',
+ 'Dex',
+ 'DexUnit',
+ 'EA',
+ 'EAU',
+ 'EB',
+ 'EBa',
+ 'EC',
+ 'ED',
+ 'EF',
+ 'EG',
+ 'EGal',
+ 'EH',
+ 'EHz',
+ 'EJ',
+ 'EJy',
+ 'EK',
+ 'EL',
+ 'EN',
+ 'EOhm',
+ 'EP',
+ 'EPa',
+ 'ER',
+ 'ERy',
+ 'ES',
+ 'ESt',
+ 'ET',
+ 'EV',
+ 'EW',
+ 'EWb',
+ 'Ea',
+ 'Eadu',
+ 'Earcmin',
+ 'Earcsec',
+ 'Eau',
+ 'Eb',
+ 'Ebarn',
+ 'Ebeam',
+ 'Ebin',
+ 'Ebit',
+ 'Ebyte',
+ 'Ecd',
+ 'Echan',
+ 'Ecount',
+ 'Ect',
+ 'Ed',
+ 'Edeg',
+ 'Edyn',
+ 'EeV',
+ 'Eerg',
+ 'Eg',
+ 'Eh',
+ 'EiB',
+ 'Eib',
+ 'Eibit',
+ 'Eibyte',
+ 'Ek',
+ 'El',
+ 'Elm',
+ 'Elx',
+ 'Elyr',
+ 'Em',
+ 'Emag',
+ 'Emin',
+ 'Emol',
+ 'Eohm',
+ 'Epc',
+ 'Eph',
+ 'Ephoton',
+ 'Epix',
+ 'Epixel',
+ 'Erad',
+ 'Es',
+ 'Esr',
+ 'Eu',
+ 'Evox',
+ 'Evoxel',
+ 'Eyr',
+ 'F',
+ 'Farad',
+ 'Fr',
+ 'Franklin',
+ 'FunctionQuantity',
+ 'FunctionUnitBase',
+ 'G',
+ 'GA',
+ 'GAU',
+ 'GB',
+ 'GBa',
+ 'GC',
+ 'GD',
+ 'GF',
+ 'GG',
+ 'GGal',
+ 'GH',
+ 'GHz',
+ 'GJ',
+ 'GJy',
+ 'GK',
+ 'GL',
+ 'GN',
+ 'GOhm',
+ 'GP',
+ 'GPa',
+ 'GR',
+ 'GRy',
+ 'GS',
+ 'GSt',
+ 'GT',
+ 'GV',
+ 'GW',
+ 'GWb',
+ 'Ga',
+ 'Gadu',
+ 'Gal',
+ 'Garcmin',
+ 'Garcsec',
+ 'Gau',
+ 'Gauss',
+ 'Gb',
+ 'Gbarn',
+ 'Gbeam',
+ 'Gbin',
+ 'Gbit',
+ 'Gbyte',
+ 'Gcd',
+ 'Gchan',
+ 'Gcount',
+ 'Gct',
+ 'Gd',
+ 'Gdeg',
+ 'Gdyn',
+ 'GeV',
+ 'Gerg',
+ 'Gg',
+ 'Gh',
+ 'GiB',
+ 'Gib',
+ 'Gibit',
+ 'Gibyte',
+ 'Gk',
+ 'Gl',
+ 'Glm',
+ 'Glx',
+ 'Glyr',
+ 'Gm',
+ 'Gmag',
+ 'Gmin',
+ 'Gmol',
+ 'Gohm',
+ 'Gpc',
+ 'Gph',
+ 'Gphoton',
+ 'Gpix',
+ 'Gpixel',
+ 'Grad',
+ 'Gs',
+ 'Gsr',
+ 'Gu',
+ 'Gvox',
+ 'Gvoxel',
+ 'Gyr',
+ 'H',
+ 'Henry',
+ 'Hertz',
+ 'Hz',
+ 'IrreducibleUnit',
+ 'J',
+ 'Jansky',
+ 'Joule',
+ 'Jy',
+ 'K',
+ 'Kayser',
+ 'Kelvin',
+ 'KiB',
+ 'Kib',
+ 'Kibit',
+ 'Kibyte',
+ 'L',
+ 'L_bol',
+ 'L_sun',
+ 'LogQuantity',
+ 'LogUnit',
+ 'Lsun',
+ 'MA',
+ 'MAU',
+ 'MB',
+ 'MBa',
+ 'MC',
+ 'MD',
+ 'MF',
+ 'MG',
+ 'MGal',
+ 'MH',
+ 'MHz',
+ 'MJ',
+ 'MJy',
+ 'MK',
+ 'ML',
+ 'MN',
+ 'MOhm',
+ 'MP',
+ 'MPa',
+ 'MR',
+ 'MRy',
+ 'MS',
+ 'MSt',
+ 'MT',
+ 'MV',
+ 'MW',
+ 'MWb',
+ 'M_bol',
+ 'M_e',
+ 'M_earth',
+ 'M_jup',
+ 'M_jupiter',
+ 'M_p',
+ 'M_sun',
+ 'Ma',
+ 'Madu',
+ 'MagUnit',
+ 'Magnitude',
+ 'Marcmin',
+ 'Marcsec',
+ 'Mau',
+ 'Mb',
+ 'Mbarn',
+ 'Mbeam',
+ 'Mbin',
+ 'Mbit',
+ 'Mbyte',
+ 'Mcd',
+ 'Mchan',
+ 'Mcount',
+ 'Mct',
+ 'Md',
+ 'Mdeg',
+ 'Mdyn',
+ 'MeV',
+ 'Mearth',
+ 'Merg',
+ 'Mg',
+ 'Mh',
+ 'MiB',
+ 'Mib',
+ 'Mibit',
+ 'Mibyte',
+ 'Mjup',
+ 'Mjupiter',
+ 'Mk',
+ 'Ml',
+ 'Mlm',
+ 'Mlx',
+ 'Mlyr',
+ 'Mm',
+ 'Mmag',
+ 'Mmin',
+ 'Mmol',
+ 'Mohm',
+ 'Mpc',
+ 'Mph',
+ 'Mphoton',
+ 'Mpix',
+ 'Mpixel',
+ 'Mrad',
+ 'Ms',
+ 'Msr',
+ 'Msun',
+ 'Mu',
+ 'Mvox',
+ 'Mvoxel',
+ 'Myr',
+ 'N',
+ 'NamedUnit',
+ 'Newton',
+ 'Ohm',
+ 'P',
+ 'PA',
+ 'PAU',
+ 'PB',
+ 'PBa',
+ 'PC',
+ 'PD',
+ 'PF',
+ 'PG',
+ 'PGal',
+ 'PH',
+ 'PHz',
+ 'PJ',
+ 'PJy',
+ 'PK',
+ 'PL',
+ 'PN',
+ 'POhm',
+ 'PP',
+ 'PPa',
+ 'PR',
+ 'PRy',
+ 'PS',
+ 'PSt',
+ 'PT',
+ 'PV',
+ 'PW',
+ 'PWb',
+ 'Pa',
+ 'Padu',
+ 'Parcmin',
+ 'Parcsec',
+ 'Pascal',
+ 'Pau',
+ 'Pb',
+ 'Pbarn',
+ 'Pbeam',
+ 'Pbin',
+ 'Pbit',
+ 'Pbyte',
+ 'Pcd',
+ 'Pchan',
+ 'Pcount',
+ 'Pct',
+ 'Pd',
+ 'Pdeg',
+ 'Pdyn',
+ 'PeV',
+ 'Perg',
+ 'Pg',
+ 'Ph',
+ 'PiB',
+ 'Pib',
+ 'Pibit',
+ 'Pibyte',
+ 'Pk',
+ 'Pl',
+ 'Plm',
+ 'Plx',
+ 'Plyr',
+ 'Pm',
+ 'Pmag',
+ 'Pmin',
+ 'Pmol',
+ 'Pohm',
+ 'Ppc',
+ 'Pph',
+ 'Pphoton',
+ 'Ppix',
+ 'Ppixel',
+ 'Prad',
+ 'PrefixUnit',
+ 'Ps',
+ 'Psr',
+ 'Pu',
+ 'Pvox',
+ 'Pvoxel',
+ 'Pyr',
+ 'Quantity',
+ 'QuantityInfo',
+ 'QuantityInfoBase',
+ 'R',
+ 'R_earth',
+ 'R_jup',
+ 'R_jupiter',
+ 'R_sun',
+ 'Rayleigh',
+ 'Rearth',
+ 'Rjup',
+ 'Rjupiter',
+ 'Rsun',
+ 'Ry',
+ 'S',
+ 'ST',
+ 'STflux',
+ 'STmag',
+ 'Siemens',
+ 'SpecificTypeQuantity',
+ 'St',
+ 'Sun',
+ 'T',
+ 'TA',
+ 'TAU',
+ 'TB',
+ 'TBa',
+ 'TC',
+ 'TD',
+ 'TF',
+ 'TG',
+ 'TGal',
+ 'TH',
+ 'THz',
+ 'TJ',
+ 'TJy',
+ 'TK',
+ 'TL',
+ 'TN',
+ 'TOhm',
+ 'TP',
+ 'TPa',
+ 'TR',
+ 'TRy',
+ 'TS',
+ 'TSt',
+ 'TT',
+ 'TV',
+ 'TW',
+ 'TWb',
+ 'Ta',
+ 'Tadu',
+ 'Tarcmin',
+ 'Tarcsec',
+ 'Tau',
+ 'Tb',
+ 'Tbarn',
+ 'Tbeam',
+ 'Tbin',
+ 'Tbit',
+ 'Tbyte',
+ 'Tcd',
+ 'Tchan',
+ 'Tcount',
+ 'Tct',
+ 'Td',
+ 'Tdeg',
+ 'Tdyn',
+ 'TeV',
+ 'Terg',
+ 'Tesla',
+ 'Tg',
+ 'Th',
+ 'TiB',
+ 'Tib',
+ 'Tibit',
+ 'Tibyte',
+ 'Tk',
+ 'Tl',
+ 'Tlm',
+ 'Tlx',
+ 'Tlyr',
+ 'Tm',
+ 'Tmag',
+ 'Tmin',
+ 'Tmol',
+ 'Tohm',
+ 'Tpc',
+ 'Tph',
+ 'Tphoton',
+ 'Tpix',
+ 'Tpixel',
+ 'Trad',
+ 'Ts',
+ 'Tsr',
+ 'Tu',
+ 'Tvox',
+ 'Tvoxel',
+ 'Tyr',
+ 'Unit',
+ 'UnitBase',
+ 'UnitConversionError',
+ 'UnitTypeError',
+ 'UnitsError',
+ 'UnitsWarning',
+ 'UnrecognizedUnit',
+ 'V',
+ 'Volt',
+ 'W',
+ 'Watt',
+ 'Wb',
+ 'Weber',
+ 'YA',
+ 'YAU',
+ 'YB',
+ 'YBa',
+ 'YC',
+ 'YD',
+ 'YF',
+ 'YG',
+ 'YGal',
+ 'YH',
+ 'YHz',
+ 'YJ',
+ 'YJy',
+ 'YK',
+ 'YL',
+ 'YN',
+ 'YOhm',
+ 'YP',
+ 'YPa',
+ 'YR',
+ 'YRy',
+ 'YS',
+ 'YSt',
+ 'YT',
+ 'YV',
+ 'YW',
+ 'YWb',
+ 'Ya',
+ 'Yadu',
+ 'Yarcmin',
+ 'Yarcsec',
+ 'Yau',
+ 'Yb',
+ 'Ybarn',
+ 'Ybeam',
+ 'Ybin',
+ 'Ybit',
+ 'Ybyte',
+ 'Ycd',
+ 'Ychan',
+ 'Ycount',
+ 'Yct',
+ 'Yd',
+ 'Ydeg',
+ 'Ydyn',
+ 'YeV',
+ 'Yerg',
+ 'Yg',
+ 'Yh',
+ 'Yk',
+ 'Yl',
+ 'Ylm',
+ 'Ylx',
+ 'Ylyr',
+ 'Ym',
+ 'Ymag',
+ 'Ymin',
+ 'Ymol',
+ 'Yohm',
+ 'Ypc',
+ 'Yph',
+ 'Yphoton',
+ 'Ypix',
+ 'Ypixel',
+ 'Yrad',
+ 'Ys',
+ 'Ysr',
+ 'Yu',
+ 'Yvox',
+ 'Yvoxel',
+ 'Yyr',
+ 'ZA',
+ 'ZAU',
+ 'ZB',
+ 'ZBa',
+ 'ZC',
+ 'ZD',
+ 'ZF',
+ 'ZG',
+ 'ZGal',
+ 'ZH',
+ 'ZHz',
+ 'ZJ',
+ 'ZJy',
+ 'ZK',
+ 'ZL',
+ 'ZN',
+ 'ZOhm',
+ 'ZP',
+ 'ZPa',
+ 'ZR',
+ 'ZRy',
+ 'ZS',
+ 'ZSt',
+ 'ZT',
+ 'ZV',
+ 'ZW',
+ 'ZWb',
+ 'Za',
+ 'Zadu',
+ 'Zarcmin',
+ 'Zarcsec',
+ 'Zau',
+ 'Zb',
+ 'Zbarn',
+ 'Zbeam',
+ 'Zbin',
+ 'Zbit',
+ 'Zbyte',
+ 'Zcd',
+ 'Zchan',
+ 'Zcount',
+ 'Zct',
+ 'Zd',
+ 'Zdeg',
+ 'Zdyn',
+ 'ZeV',
+ 'Zerg',
+ 'Zg',
+ 'Zh',
+ 'Zk',
+ 'Zl',
+ 'Zlm',
+ 'Zlx',
+ 'Zlyr',
+ 'Zm',
+ 'Zmag',
+ 'Zmin',
+ 'Zmol',
+ 'Zohm',
+ 'Zpc',
+ 'Zph',
+ 'Zphoton',
+ 'Zpix',
+ 'Zpixel',
+ 'Zrad',
+ 'Zs',
+ 'Zsr',
+ 'Zu',
+ 'Zvox',
+ 'Zvoxel',
+ 'Zyr',
+ '__builtins__',
+ '__cached__',
+ '__doc__',
+ '__file__',
+ '__loader__',
+ '__name__',
+ '__package__',
+ '__path__',
+ '__spec__',
+ 'a',
+ 'aA',
+ 'aAU',
+ 'aB',
+ 'aBa',
+ 'aC',
+ 'aD',
+ 'aF',
+ 'aG',
+ 'aGal',
+ 'aH',
+ 'aHz',
+ 'aJ',
+ 'aJy',
+ 'aK',
+ 'aL',
+ 'aN',
+ 'aOhm',
+ 'aP',
+ 'aPa',
+ 'aR',
+ 'aRy',
+ 'aS',
+ 'aSt',
+ 'aT',
+ 'aV',
+ 'aW',
+ 'aWb',
+ 'aa',
+ 'aadu',
+ 'aarcmin',
+ 'aarcsec',
+ 'aau',
+ 'ab',
+ 'abA',
+ 'abC',
+ 'abampere',
+ 'abarn',
+ 'abcoulomb',
+ 'abeam',
+ 'abin',
+ 'abit',
+ 'abyte',
+ 'acd',
+ 'achan',
+ 'acount',
+ 'act',
+ 'ad',
+ 'add_enabled_equivalencies',
+ 'add_enabled_units',
+ 'adeg',
+ 'adu',
+ 'adyn',
+ 'aeV',
+ 'aerg',
+ 'ag',
+ 'ah',
+ 'ak',
+ 'al',
+ 'allclose',
+ 'alm',
+ 'alx',
+ 'alyr',
+ 'am',
+ 'amag',
+ 'amin',
+ 'amol',
+ 'amp',
+ 'ampere',
+ 'angstrom',
+ 'annum',
+ 'aohm',
+ 'apc',
+ 'aph',
+ 'aphoton',
+ 'apix',
+ 'apixel',
+ 'arad',
+ 'arcmin',
+ 'arcminute',
+ 'arcsec',
+ 'arcsecond',
+ 'asr',
+ 'astronomical_unit',
+ 'astrophys',
+ 'attoBarye',
+ 'attoDa',
+ 'attoDalton',
+ 'attoDebye',
+ 'attoFarad',
+ 'attoGauss',
+ 'attoHenry',
+ 'attoHertz',
+ 'attoJansky',
+ 'attoJoule',
+ 'attoKayser',
+ 'attoKelvin',
+ 'attoNewton',
+ 'attoOhm',
+ 'attoPascal',
+ 'attoRayleigh',
+ 'attoSiemens',
+ 'attoTesla',
+ 'attoVolt',
+ 'attoWatt',
+ 'attoWeber',
+ 'attoamp',
+ 'attoampere',
+ 'attoannum',
+ 'attoarcminute',
+ 'attoarcsecond',
+ 'attoastronomical_unit',
+ 'attobarn',
+ 'attobarye',
+ 'attobit',
+ 'attobyte',
+ 'attocandela',
+ 'attocoulomb',
+ 'attocount',
+ 'attoday',
+ 'attodebye',
+ 'attodegree',
+ 'attodyne',
+ 'attoelectronvolt',
+ 'attofarad',
+ 'attogal',
+ 'attogauss',
+ 'attogram',
+ 'attohenry',
+ 'attohertz',
+ 'attohour',
+ 'attohr',
+ 'attojansky',
+ 'attojoule',
+ 'attokayser',
+ 'attolightyear',
+ 'attoliter',
+ 'attolumen',
+ 'attolux',
+ 'attometer',
+ 'attominute',
+ 'attomole',
+ 'attonewton',
+ 'attoparsec',
+ 'attopascal',
+ 'attophoton',
+ 'attopixel',
+ 'attopoise',
+ 'attoradian',
+ 'attorayleigh',
+ 'attorydberg',
+ 'attosecond',
+ 'attosiemens',
+ 'attosteradian',
+ 'attostokes',
+ 'attotesla',
+ 'attovolt',
+ 'attovoxel',
+ 'attowatt',
+ 'attoweber',
+ 'attoyear',
+ 'au',
+ 'avox',
+ 'avoxel',
+ 'ayr',
+ 'b',
+ 'bar',
+ 'barn',
+ 'barye',
+ 'beam',
+ 'beam_angular_area',
+ 'becquerel',
+ 'bin',
+ 'binary_prefixes',
+ 'bit',
+ 'bol',
+ 'brightness_temperature',
+ 'byte',
+ 'cA',
+ 'cAU',
+ 'cB',
+ 'cBa',
+ 'cC',
+ 'cD',
+ 'cF',
+ 'cG',
+ 'cGal',
+ 'cH',
+ 'cHz',
+ 'cJ',
+ 'cJy',
+ 'cK',
+ 'cL',
+ 'cN',
+ 'cOhm',
+ 'cP',
+ 'cPa',
+ 'cR',
+ 'cRy',
+ 'cS',
+ 'cSt',
+ 'cT',
+ 'cV',
+ 'cW',
+ 'cWb',
+ 'ca',
+ 'cadu',
+ 'candela',
+ 'carcmin',
+ 'carcsec',
+ 'cau',
+ 'cb',
+ 'cbarn',
+ 'cbeam',
+ 'cbin',
+ 'cbit',
+ 'cbyte',
+ 'ccd',
+ 'cchan',
+ 'ccount',
+ 'cct',
+ 'cd',
+ 'cdeg',
+ 'cdyn',
+ 'ceV',
+ 'centiBarye',
+ 'centiDa',
+ 'centiDalton',
+ 'centiDebye',
+ 'centiFarad',
+ 'centiGauss',
+ 'centiHenry',
+ 'centiHertz',
+ 'centiJansky',
+ 'centiJoule',
+ 'centiKayser',
+ 'centiKelvin',
+ 'centiNewton',
+ 'centiOhm',
+ 'centiPascal',
+ 'centiRayleigh',
+ 'centiSiemens',
+ 'centiTesla',
+ 'centiVolt',
+ 'centiWatt',
+ 'centiWeber',
+ 'centiamp',
+ 'centiampere',
+ 'centiannum',
+ 'centiarcminute',
+ 'centiarcsecond',
+ 'centiastronomical_unit',
+ 'centibarn',
+ 'centibarye',
+ 'centibit',
+ 'centibyte',
+ 'centicandela',
+ 'centicoulomb',
+ 'centicount',
+ 'centiday',
+ 'centidebye',
+ 'centidegree',
+ 'centidyne',
+ 'centielectronvolt',
+ 'centifarad',
+ 'centigal',
+ 'centigauss',
+ 'centigram',
+ 'centihenry',
+ 'centihertz',
+ 'centihour',
+ 'centihr',
+ 'centijansky',
+ 'centijoule',
+ 'centikayser',
+ 'centilightyear',
+ 'centiliter',
+ 'centilumen',
+ 'centilux',
+ 'centimeter',
+ 'centiminute',
+ 'centimole',
+ 'centinewton',
+ 'centiparsec',
+ 'centipascal',
+ 'centiphoton',
+ 'centipixel',
+ 'centipoise',
+ 'centiradian',
+ 'centirayleigh',
+ 'centirydberg',
+ 'centisecond',
+ 'centisiemens',
+ 'centisteradian',
+ 'centistokes',
+ 'centitesla',
+ 'centivolt',
+ 'centivoxel',
+ 'centiwatt',
+ 'centiweber',
+ 'centiyear',
+ 'cerg',
+ 'cg',
+ 'cgs',
+ 'ch',
+ 'chan',
+ 'ck',
+ 'cl',
+ 'clm',
+ 'clx',
+ 'clyr',
+ 'cm',
+ 'cmag',
+ 'cmin',
+ 'cmol',
+ 'cohm',
+ 'core',
+ 'coulomb',
+ 'count',
+ 'cpc',
+ 'cph',
+ 'cphoton',
+ 'cpix',
+ 'cpixel',
+ 'crad',
+ 'cs',
+ 'csr',
+ 'ct',
+ 'cu',
+ 'curie',
+ 'cvox',
+ 'cvoxel',
+ 'cy',
+ 'cycle',
+ 'cyr',
+ 'd',
+ 'dA',
+ 'dAU',
+ 'dB',
+ 'dBa',
+ 'dC',
+ 'dD',
+ 'dF',
+ 'dG',
+ 'dGal',
+ 'dH',
+ 'dHz',
+ 'dJ',
+ 'dJy',
+ 'dK',
+ 'dL',
+ 'dN',
+ 'dOhm',
+ 'dP',
+ 'dPa',
+ 'dR',
+ 'dRy',
+ 'dS',
+ 'dSt',
+ 'dT',
+ ...]
+
+
+
+
+

To create a quantity, we multiply a value by a unit.

+
+
+
coord = 30 * u.deg
+type(coord)
+
+
+
+
+
astropy.units.quantity.Quantity
+
+
+
+
+

The result is a Quantity object.

+

Jupyter knows how to display Quantities like this:

+
+
+
coord
+
+
+
+
+
+\[30 \; \mathrm{{}^{\circ}}\]
+
+
+
+
+

Selecting a rectangle

+

Now we’ll select a rectangle from -55 to -45 degrees right ascension and -8 to 4 degrees of declination.

+

We’ll define variables to contain these limits.

+
+
+
phi1_min = -55
+phi1_max = -45
+phi2_min = -8
+phi2_max = 4
+
+
+
+
+

To represent a rectangle, we’ll use two lists of coordinates and multiply by their units.

+
+
+
phi1_rect = [phi1_min, phi1_min, phi1_max, phi1_max] * u.deg
+phi2_rect = [phi2_min, phi2_max, phi2_max, phi2_min] * u.deg
+
+
+
+
+

phi1_rect and phi2_rect represent the coordinates of the corners of a rectangle.

+

But they are in “a Heliocentric spherical coordinate system defined by the orbit of the GD1 stream

+

In order to use them in a Gaia query, we have to convert them to International Celestial Reference System (ICRS) coordinates. We can do that by storing the coordinates in a GD1Koposov10 object provided by Gala.

+
+
+
import gala.coordinates as gc
+
+corners = gc.GD1Koposov10(phi1=phi1_rect, phi2=phi2_rect)
+type(corners)
+
+
+
+
+
gala.coordinates.gd1.GD1Koposov10
+
+
+
+
+

We can display the result like this:

+
+
+
corners
+
+
+
+
+
<GD1Koposov10 Coordinate: (phi1, phi2) in deg
+    [(-55., -8.), (-55.,  4.), (-45.,  4.), (-45., -8.)]>
+
+
+
+
+

Now we can use transform_to to convert to ICRS coordinates.

+
+
+
import astropy.coordinates as coord
+
+corners_icrs = corners.transform_to(coord.ICRS)
+type(corners_icrs)
+
+
+
+
+
astropy.coordinates.builtin_frames.icrs.ICRS
+
+
+
+
+

The result is an ICRS object.

+
+
+
corners_icrs
+
+
+
+
+
<ICRS Coordinate: (ra, dec) in deg
+    [(146.27533314, 19.26190982), (135.42163944, 25.87738723),
+     (141.60264825, 34.3048303 ), (152.81671045, 27.13611254)]>
+
+
+
+
+

Notice that a rectangle in one coordinate system is not necessarily a rectangle in another. In this example, the result is a polygon.

+
+
+

Selecting a polygon

+

In order to use this polygon as part of an ADQL query, we have to convert it to a string with a comma-separated list of coordinates, as in this example:

+
"""
+POLYGON(143.65, 20.98, 
+        134.46, 26.39, 
+        140.58, 34.85, 
+        150.16, 29.01)
+"""
+
+
+

corners_icrs behaves like a list, so we can use a for loop to iterate through the points.

+
+
+
for point in corners_icrs:
+    print(point)
+
+
+
+
+
<ICRS Coordinate: (ra, dec) in deg
+    (146.27533314, 19.26190982)>
+<ICRS Coordinate: (ra, dec) in deg
+    (135.42163944, 25.87738723)>
+<ICRS Coordinate: (ra, dec) in deg
+    (141.60264825, 34.3048303)>
+<ICRS Coordinate: (ra, dec) in deg
+    (152.81671045, 27.13611254)>
+
+
+
+
+

From that, we can select the coordinates ra and dec:

+
+
+
for point in corners_icrs:
+    print(point.ra, point.dec)
+
+
+
+
+
146d16m31.1993s 19d15m42.8754s
+135d25m17.902s 25d52m38.594s
+141d36m09.5337s 34d18m17.3891s
+152d49m00.1576s 27d08m10.0051s
+
+
+
+
+

The results are quantities with units, but if we select the value part, we get a dimensionless floating-point number.

+
+
+
for point in corners_icrs:
+    print(point.ra.value, point.dec.value)
+
+
+
+
+
146.27533313607782 19.261909820533692
+135.42163944306296 25.87738722767213
+141.60264825107333 34.304830296257144
+152.81671044675923 27.136112541397996
+
+
+
+
+

We can use string format to convert these numbers to strings.

+
+
+
point_base = "{point.ra.value}, {point.dec.value}"
+
+t = [point_base.format(point=point)
+     for point in corners_icrs]
+t
+
+
+
+
+
['146.27533313607782, 19.261909820533692',
+ '135.42163944306296, 25.87738722767213',
+ '141.60264825107333, 34.304830296257144',
+ '152.81671044675923, 27.136112541397996']
+
+
+
+
+

The result is a list of strings, which we can join into a single string using join.

+
+
+
point_list = ', '.join(t)
+point_list
+
+
+
+
+
'146.27533313607782, 19.261909820533692, 135.42163944306296, 25.87738722767213, 141.60264825107333, 34.304830296257144, 152.81671044675923, 27.136112541397996'
+
+
+
+
+

Notice that we invoke join on a string and pass the list as an argument.

+

Before we can assemble the query, we need columns again (as we saw in the previous notebook).

+
+
+
columns = 'source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity'
+
+
+
+
+

Here’s the base for the query, with format specifiers for columns and point_list.

+
+
+
query_base = """SELECT {columns}
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2 
+  AND 1 = CONTAINS(POINT(ra, dec), 
+                   POLYGON({point_list}))
+"""
+
+
+
+
+

And here’s the result:

+
+
+
query = query_base.format(columns=columns, 
+                          point_list=point_list)
+print(query)
+
+
+
+
+
SELECT source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2 
+  AND 1 = CONTAINS(POINT(ra, dec), 
+                   POLYGON(146.27533313607782, 19.261909820533692, 135.42163944306296, 25.87738722767213, 141.60264825107333, 34.304830296257144, 152.81671044675923, 27.136112541397996))
+
+
+
+
+

As always, we should take a minute to proof-read the query before we launch it.

+

The result will be bigger than our previous queries, so it will take a little longer.

+
+
+
job = Gaia.launch_job_async(query)
+print(job)
+
+
+
+
+
INFO: Query finished. [astroquery.utils.tap.core]
+<Table length=140340>
+      name       dtype    unit                              description                             n_bad 
+--------------- ------- -------- ------------------------------------------------------------------ ------
+      source_id   int64          Unique source identifier (unique within a particular Data Release)      0
+             ra float64      deg                                                    Right ascension      0
+            dec float64      deg                                                        Declination      0
+           pmra float64 mas / yr                         Proper motion in right ascension direction      0
+          pmdec float64 mas / yr                             Proper motion in declination direction      0
+       parallax float64      mas                                                           Parallax      0
+ parallax_error float64      mas                                         Standard error of parallax      0
+radial_velocity float64   km / s                                                    Radial velocity 139374
+Jobid: 1603114980658O
+Phase: COMPLETED
+Owner: None
+Output file: async_20201019094300.vot
+Results: None
+
+
+
+
+

Here are the results.

+
+
+
results = job.get_results()
+len(results)
+
+
+
+
+
140340
+
+
+
+
+

There are more than 100,000 stars in this polygon, but that’s a manageable size to work with.

+
+
+

Saving results

+

This is the set of stars we’ll work with in the next step. But since we have a substantial dataset now, this is a good time to save it.

+

Storing the data in a file means we can shut down this notebook and pick up where we left off without running the previous query again.

+

Astropy Table objects provide write, which writes the table to disk.

+
+
+
filename = 'gd1_results.fits'
+results.write(filename, overwrite=True)
+
+
+
+
+

Because the filename ends with fits, the table is written in the FITS format, which preserves the metadata associated with the table.

+

If the file already exists, the overwrite argument causes it to be overwritten.

+

To see how big the file is, we can use ls with the -lh option, which prints information about the file including its size in human-readable form.

+
+
+
!ls -lh gd1_results.fits
+
+
+
+
+
-rw-rw-r-- 1 downey downey 8.6M Oct 19 09:43 gd1_results.fits
+
+
+
+
+

The file is about 8.6 MB. If you are using Windows, ls might not work; in that case, try:

+
!dir gd1_results.fits
+
+
+
+
+

Summary

+

In this notebook, we composed more complex queries to select stars within a polygonal region of the sky. Then we downloaded the results and saved them in a FITS file.

+

In the next notebook, we’ll reload the data from this file and replicate the next step in the analysis, using proper motion to identify stars likely to be in GD-1.

+
+
+

Best practices

+
    +
  • For measurements with units, use Quantity objects that represent units explicitly and check for errors.

  • +
  • Use the format function to compose queries; it is often faster and less error-prone.

  • +
  • Develop queries incrementally: start with something simple, test it, and add a little bit at a time.

  • +
  • Once you have a query working, save the data in a local file. If you shut down the notebook and come back to it later, you can reload the file; you don’t have to run the query again.

  • +
+
+
+ + + + +
+ +
+
+ + +
+ + +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/AstronomicalData/README.html b/AstronomicalData/README.html new file mode 100644 index 0000000..3e73f5d --- /dev/null +++ b/AstronomicalData/README.html @@ -0,0 +1,337 @@ + + + + + + + + Astronomical Data in Python — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + +
+ + +
+ +
+
+
+
+ +
+ +
+

Astronomical Data in Python

+

Astronomical Data in Python is an introduction to tools and practices for working with astronomical data. Topics covered include:

+
    +
  • Writing queries that select and download data from a database.

  • +
  • Using data stored in an Astropy Table or Pandas DataFrame.

  • +
  • Working with coordinates and other quantities with units.

  • +
  • Storing data in various formats.

  • +
  • Performing database join operations that combine data from multiple tables.

  • +
  • Visualizing data and preparing publication-quality figures.

  • +
+

As a running example, we will replicate part of the analysis in a recent paper, “Off the beaten path: Gaia reveals GD-1 stars outside of the main stream” by Adrian M. Price-Whelan and Ana Bonaca.

+

This material was developed in collaboration with The Carpentries and the Astronomy Curriculum Development Committee, and supported by funding from the American Institute of Physics through the American Astronomical Society.

+

I am grateful for contributions from the members of the committee – Azalee Bostroem, Rodolfo Montez, and Phil Rosenfield – and from Erin Becker, Brett Morris and Adrian Price-Whelan.

+

The original format of this material is a series of Jupyter notebooks. Using the +links below, you can read the notebooks on NBViewer or run them on Colab. If you +want to run the notebooks in your own environment, you can download them from +this repository and follow the instructions below to set up your environment.

+

This material is also available in the form of Carpentries lessons, but you should be +aware that these versions might diverge in the future.

+

Prerequisites

+

This material should be accessible to people familiar with basic Python, but not necessarily the libraries we will use, like Astropy or Pandas. If you are familiar with Python lists and dictionaries, and you know how to write a function that takes parameters and returns a value, that should be enough.

+

We assume that you are familiar with astronomy at the undergraduate level, but we will not assume specialized knowledge of the datasets or analysis methods we’ll use.

+

Notebook 1

+

This notebook demonstrates the following steps:

+
    +
  1. Making a connection to the Gaia server,

  2. +
  3. Exploring information about the database and the tables it contains,

  4. +
  5. Writing a query and sending it to the server, and finally

  6. +
  7. Downloading the response from the server as an Astropy Table.

  8. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+

Notebook 2

+

This notebook starts with an example that does a “cone search”; that is, it selects stars that appear in a circular region of the sky.

+

Then, to select stars in the vicinity of GD-1, we:

+
    +
  • Use Quantity objects to represent measurements with units.

  • +
  • Use the Gala library to convert coordinates from one frame to another.

  • +
  • Use the ADQL keywords POLYGON, CONTAINS, and POINT to select stars that fall within a polygonal region.

  • +
  • Submit a query and download the results.

  • +
  • Store the results in a FITS file.

  • +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+

Notebook 3

+

Here are the steps in this notebook:

+
    +
  1. We’ll read back the results from the previous notebook, which we saved in a FITS file.

  2. +
  3. Then we’ll transform the coordinates and proper motion data from ICRS back to the coordinate frame of GD-1.

  4. +
  5. We’ll put those results into a Pandas DataFrame, which we’ll use to select stars near the centerline of GD-1.

  6. +
  7. Plotting the proper motion of those stars, we’ll identify a region of proper motion for stars that are likely to be in GD-1.

  8. +
  9. Finally, we’ll select and plot the stars whose proper motion is in that region.

  10. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+

Notebook 4

+

Here are the steps in this notebook:

+
    +
  1. Using data from the previous notebook, we’ll identify the values of proper motion for stars likely to be in GD-1.

  2. +
  3. Then we’ll compose an ADQL query that selects stars based on proper motion, so we can download only the data we need.

  4. +
  5. We’ll also see how to write the results to a CSV file.

  6. +
+

That will make it possible to search a bigger region of the sky in a single query.

+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+

Notebook 5

+

Here are the steps in this notebook:

+
    +
  1. We’ll reload the candidate stars we identified in the previous notebook.

  2. +
  3. Then we’ll run a query on the Gaia server that uploads the table of candidates and uses a JOIN operation to select photometry data for the candidate stars.

  4. +
  5. We’ll write the results to a file for use in the next notebook.

  6. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+

Notebook 6

+

Here are the steps in this notebook:

+
    +
  1. We’ll reload the data from the previous notebook and make a color-magnitude diagram.

  2. +
  3. Then we’ll specify a polygon in the diagram that contains stars with the photometry we expect.

  4. +
  5. Then we’ll merge the photometry data with the list of candidate stars, storing the result in a Pandas DataFrame.

  6. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+

Notebook 7

+

Here are the steps in this notebook:

+
    +
  1. Starting with the figure from the previous notebook, we’ll add annotations to present the results more clearly.

  2. +
  3. The we’ll see several ways to customize figures to make them more appealing and effective.

  4. +
  5. Finally, we’ll see how to make a figure with multiple panels or subplots.

  6. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+

Installation instructions

+

Coming soon.

+
+ + + + +
+ +
+
+ + +
+ + +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/AstronomicalData/_build/html/_static/vendor/lato_latin-ext/1.44.1/LICENSE.html b/AstronomicalData/_build/html/_static/vendor/lato_latin-ext/1.44.1/LICENSE.html new file mode 100644 index 0000000..b59ee64 --- /dev/null +++ b/AstronomicalData/_build/html/_static/vendor/lato_latin-ext/1.44.1/LICENSE.html @@ -0,0 +1,260 @@ + + + + + + + + <no title> — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + +
+ + +
+ +
+ Contents +
+ + +
+
+
+
+ +
+ +

Copyright (c) 2019 Jan Bednar

+

Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +“Software”), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions:

+

The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ + + + +
+ +
+
+ + +
+ + +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/AstronomicalData/_build/html/_static/vendor/open-sans_all/1.44.1/LICENSE.html b/AstronomicalData/_build/html/_static/vendor/open-sans_all/1.44.1/LICENSE.html new file mode 100644 index 0000000..2b73475 --- /dev/null +++ b/AstronomicalData/_build/html/_static/vendor/open-sans_all/1.44.1/LICENSE.html @@ -0,0 +1,260 @@ + + + + + + + + <no title> — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + +
+ + +
+ +
+ Contents +
+ + +
+
+
+
+ +
+ +

Copyright (c) 2019 Jan Bednar

+

Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +“Software”), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions:

+

The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ + + + +
+ +
+
+ + +
+ + +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/AstronomicalData/_build/jupyter_execute/01_query.html b/AstronomicalData/_build/jupyter_execute/01_query.html new file mode 100644 index 0000000..752cca2 --- /dev/null +++ b/AstronomicalData/_build/jupyter_execute/01_query.html @@ -0,0 +1,1384 @@ + + + + + + + + Lesson 1 — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + +
+ + + +
+
+
+ +
+ +
+

Lesson 1

+
+

Introduction

+

This workshop is an introduction to tools and practices for working with astronomical data. Topics covered include:

+
    +
  • Writing queries that select and download data from a database.

  • +
  • Using data stored in an Astropy Table or Pandas DataFrame.

  • +
  • Working with coordinates and other quantities with units.

  • +
  • Storing data in various formats.

  • +
  • Performing database join operations that combine data from multiple tables.

  • +
  • Visualizing data and preparing publication-quality figures.

  • +
+

As a running example, we will replicate part of the analysis in a recent paper, “Off the beaten path: Gaia reveals GD-1 stars outside of the main stream” by Adrian M. Price-Whelan and Ana Bonaca.

+

As the abstract explains, “Using data from the Gaia second data release combined with Pan-STARRS photometry, we present a sample of highly-probable members of the longest cold stream in the Milky Way, GD-1.”

+

GD-1 is a stellar stream, which is “an association of stars orbiting a galaxy that was once a globular cluster or dwarf galaxy that has now been torn apart and stretched out along its orbit by tidal forces.”

+

This article in Science magazine explains some of the background, including the process that led to the paper and an discussion of the scientific implications:

+
    +
  • “The streams are particularly useful for … galactic archaeology — rewinding the cosmic clock to reconstruct the assembly of the Milky Way.”

  • +
  • “They also are being used as exquisitely sensitive scales to measure the galaxy’s mass.”

  • +
  • “… the streams are well-positioned to reveal the presence of dark matter … because the streams are so fragile, theorists say, collisions with marauding clumps of dark matter could leave telltale scars, potential clues to its nature.”

  • +
+
+
+

Prerequisites

+

This workshop is meant for people who are familiar with basic Python, but not necessarily the libraries we will use, like Astropy or Pandas. If you are familiar with Python lists and dictionaries, and you know how to write a function that takes parameters and returns a value, you know enough Python for this workshop.

+

We assume that you have some familiarity with operating systems, like the ability to use a command-line interface. But we don’t assume you have any prior experience with databases.

+

We assume that you are familiar with astronomy at the undergraduate level, but we will not assume specialized knowledge of the datasets or analysis methods we’ll use.

+
+
+

Data

+

The datasets we will work with are:

+
    +
  • Gaia, which is “a space observatory of the European Space Agency (ESA), launched in 2013 … designed for astrometry: measuring the positions, distances and motions of stars with unprecedented precision”, and

  • +
  • Pan-STARRS, The Panoramic Survey Telescope and Rapid Response System, which is a survey designed to monitor the sky for transient objects, producing a catalog with accurate astronometry and photometry of detected sources.

  • +
+

Both of these datasets are very large, which can make them challenging to work with. It might not be possible, or practical, to download the entire dataset. +One of the goals of this workshop is to provide tools for working with large datasets.

+
+
+

Lesson 1

+

The first lesson demonstrates the steps for selecting and downloading data from the Gaia Database:

+
    +
  1. First we’ll make a connection to the Gaia server,

  2. +
  3. We will explore information about the database and the tables it contains,

  4. +
  5. We will write a query and send it to the server, and finally

  6. +
  7. We will download the response from the server.

  8. +
+

After completing this lesson, you should be able to

+
    +
  • Compose a basic query in ADQL.

  • +
  • Use queries to explore a database and its tables.

  • +
  • Use queries to download data.

  • +
  • Develop, test, and debug a query incrementally.

  • +
+
+
+

Query Language

+

In order to select data from a database, you have to compose a query, which is like a program written in a “query language”. +The query language we’ll use is ADQL, which stands for “Astronomical Data Query Language”.

+

ADQL is a dialect of SQL (Structured Query Language), which is by far the most commonly used query language. Almost everything you will learn about ADQL also works in SQL.

+

The reference manual for ADQL is here. +But you might find it easier to learn from this ADQL Cookbook.

+
+
+

Installing libraries

+

The library we’ll use to get Gaia data is Astroquery.

+

If you are running this notebook on Colab, you can run the following cell to install Astroquery and the other libraries we’ll use.

+

If you are running this notebook on your own computer, you might have to install these libraries yourself.

+

If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.

+

TODO: Add a link to the instructions.

+
+
+
# If we're running on Colab, install libraries
+
+import sys
+IN_COLAB = 'google.colab' in sys.modules
+
+if IN_COLAB:
+    !pip install astroquery astro-gala pyia
+
+
+
+
+
+
+

Connecting to Gaia

+

Astroquery provides Gaia, which is an object that represents a connection to the Gaia database.

+

We can connect to the Gaia database like this:

+
+
+
from astroquery.gaia import Gaia
+
+
+
+
+
Created TAP+ (v1.2.1) - Connection:
+	Host: gea.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+Created TAP+ (v1.2.1) - Connection:
+	Host: geadata.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+
+
+
+
+
+

Optional detail

+
+

Running this import statement has the effect of creating a TAP+ connection; TAP stands for “Table Access Protocol”. It is a network protocol for sending queries to the database and getting back the results. We’re not sure why it seems to create two connections.

+
+
+
+
+

Databases and Tables

+

What is a database, anyway? Most generally, it can be any collection of data, but when we are talking about ADQL or SQL:

+
    +
  • A database is a collection of one or more named tables.

  • +
  • Each table is a 2-D array with one or more named columns of data.

  • +
+

We can use Gaia.load_tables to get the names of the tables in the Gaia database. With the option only_names=True, it loads information about the tables, called the “metadata”, not the data itself.

+
+
+
tables = Gaia.load_tables(only_names=True)
+
+
+
+
+
INFO: Retrieving tables... [astroquery.utils.tap.core]
+INFO: Parsing tables... [astroquery.utils.tap.core]
+INFO: Done. [astroquery.utils.tap.core]
+
+
+
+
+
+
+
for table in (tables):
+    print(table.get_qualified_name())
+
+
+
+
+
external.external.apassdr9
+external.external.gaiadr2_geometric_distance
+external.external.galex_ais
+external.external.ravedr5_com
+external.external.ravedr5_dr5
+external.external.ravedr5_gra
+external.external.ravedr5_on
+external.external.sdssdr13_photoprimary
+external.external.skymapperdr1_master
+external.external.tmass_xsc
+public.public.hipparcos
+public.public.hipparcos_newreduction
+public.public.hubble_sc
+public.public.igsl_source
+public.public.igsl_source_catalog_ids
+public.public.tycho2
+public.public.dual
+tap_config.tap_config.coord_sys
+tap_config.tap_config.properties
+tap_schema.tap_schema.columns
+tap_schema.tap_schema.key_columns
+tap_schema.tap_schema.keys
+tap_schema.tap_schema.schemas
+tap_schema.tap_schema.tables
+gaiadr1.gaiadr1.aux_qso_icrf2_match
+gaiadr1.gaiadr1.ext_phot_zero_point
+gaiadr1.gaiadr1.allwise_best_neighbour
+gaiadr1.gaiadr1.allwise_neighbourhood
+gaiadr1.gaiadr1.gsc23_best_neighbour
+gaiadr1.gaiadr1.gsc23_neighbourhood
+gaiadr1.gaiadr1.ppmxl_best_neighbour
+gaiadr1.gaiadr1.ppmxl_neighbourhood
+gaiadr1.gaiadr1.sdss_dr9_best_neighbour
+gaiadr1.gaiadr1.sdss_dr9_neighbourhood
+gaiadr1.gaiadr1.tmass_best_neighbour
+gaiadr1.gaiadr1.tmass_neighbourhood
+gaiadr1.gaiadr1.ucac4_best_neighbour
+gaiadr1.gaiadr1.ucac4_neighbourhood
+gaiadr1.gaiadr1.urat1_best_neighbour
+gaiadr1.gaiadr1.urat1_neighbourhood
+gaiadr1.gaiadr1.cepheid
+gaiadr1.gaiadr1.phot_variable_time_series_gfov
+gaiadr1.gaiadr1.phot_variable_time_series_gfov_statistical_parameters
+gaiadr1.gaiadr1.rrlyrae
+gaiadr1.gaiadr1.variable_summary
+gaiadr1.gaiadr1.allwise_original_valid
+gaiadr1.gaiadr1.gsc23_original_valid
+gaiadr1.gaiadr1.ppmxl_original_valid
+gaiadr1.gaiadr1.sdssdr9_original_valid
+gaiadr1.gaiadr1.tmass_original_valid
+gaiadr1.gaiadr1.ucac4_original_valid
+gaiadr1.gaiadr1.urat1_original_valid
+gaiadr1.gaiadr1.gaia_source
+gaiadr1.gaiadr1.tgas_source
+gaiadr2.gaiadr2.aux_allwise_agn_gdr2_cross_id
+gaiadr2.gaiadr2.aux_iers_gdr2_cross_id
+gaiadr2.gaiadr2.aux_sso_orbit_residuals
+gaiadr2.gaiadr2.aux_sso_orbits
+gaiadr2.gaiadr2.dr1_neighbourhood
+gaiadr2.gaiadr2.allwise_best_neighbour
+gaiadr2.gaiadr2.allwise_neighbourhood
+gaiadr2.gaiadr2.apassdr9_best_neighbour
+gaiadr2.gaiadr2.apassdr9_neighbourhood
+gaiadr2.gaiadr2.gsc23_best_neighbour
+gaiadr2.gaiadr2.gsc23_neighbourhood
+gaiadr2.gaiadr2.hipparcos2_best_neighbour
+gaiadr2.gaiadr2.hipparcos2_neighbourhood
+gaiadr2.gaiadr2.panstarrs1_best_neighbour
+gaiadr2.gaiadr2.panstarrs1_neighbourhood
+gaiadr2.gaiadr2.ppmxl_best_neighbour
+gaiadr2.gaiadr2.ppmxl_neighbourhood
+gaiadr2.gaiadr2.ravedr5_best_neighbour
+gaiadr2.gaiadr2.ravedr5_neighbourhood
+gaiadr2.gaiadr2.sdssdr9_best_neighbour
+gaiadr2.gaiadr2.sdssdr9_neighbourhood
+gaiadr2.gaiadr2.tmass_best_neighbour
+gaiadr2.gaiadr2.tmass_neighbourhood
+gaiadr2.gaiadr2.tycho2_best_neighbour
+gaiadr2.gaiadr2.tycho2_neighbourhood
+gaiadr2.gaiadr2.urat1_best_neighbour
+gaiadr2.gaiadr2.urat1_neighbourhood
+gaiadr2.gaiadr2.sso_observation
+gaiadr2.gaiadr2.sso_source
+gaiadr2.gaiadr2.vari_cepheid
+gaiadr2.gaiadr2.vari_classifier_class_definition
+gaiadr2.gaiadr2.vari_classifier_definition
+gaiadr2.gaiadr2.vari_classifier_result
+gaiadr2.gaiadr2.vari_long_period_variable
+gaiadr2.gaiadr2.vari_rotation_modulation
+gaiadr2.gaiadr2.vari_rrlyrae
+gaiadr2.gaiadr2.vari_short_timescale
+gaiadr2.gaiadr2.vari_time_series_statistics
+gaiadr2.gaiadr2.panstarrs1_original_valid
+gaiadr2.gaiadr2.gaia_source
+gaiadr2.gaiadr2.ruwe
+
+
+
+
+

So that’s a lot of tables. The ones we’ll use are:

+
    +
  • gaiadr2.gaia_source, which contains Gaia data from data release 2,

  • +
  • gaiadr2.panstarrs1_original_valid, which contains the photometry data we’ll use from PanSTARRS, and

  • +
  • gaiadr2.panstarrs1_best_neighbour, which we’ll use to cross-match each star observed by Gaia with the same star observed by PanSTARRS.

  • +
+

We can use load_table (not load_tables) to get the metadata for a single table. The name of this function is misleading, because it only downloads metadata.

+
+
+
meta = Gaia.load_table('gaiadr2.gaia_source')
+meta
+
+
+
+
+
Retrieving table 'gaiadr2.gaia_source'
+Parsing table 'gaiadr2.gaia_source'...
+Done.
+
+
+
<astroquery.utils.tap.model.taptable.TapTableMeta at 0x7f922376e0a0>
+
+
+
+
+

Jupyter shows that the result is an object of type TapTableMeta, but it does not display the contents.

+

To see the metadata, we have to print the object.

+
+
+
print(meta)
+
+
+
+
+
TAP Table name: gaiadr2.gaiadr2.gaia_source
+Description: This table has an entry for every Gaia observed source as listed in the
+Main Database accumulating catalogue version from which the catalogue
+release has been generated. It contains the basic source parameters,
+that is only final data (no epoch data) and no spectra (neither final
+nor epoch).
+Num. columns: 96
+
+
+
+
+

Notice one gotcha: in the list of table names, this table appears as gaiadr2.gaiadr2.gaia_source, but when we load the metadata, we refer to it as gaiadr2.gaia_source.

+

Exercise: Go back and try

+
meta = Gaia.load_table('gaiadr2.gaiadr2.gaia_source')
+
+
+

What happens? Is the error message helpful? If you had not made this error deliberately, would you have been able to figure it out?

+
+
+

Columns

+

The following loop prints the names of the columns in the table.

+
+
+
for column in meta.columns:
+    print(column.name)
+
+
+
+
+
solution_id
+designation
+source_id
+random_index
+ref_epoch
+ra
+ra_error
+dec
+dec_error
+parallax
+parallax_error
+parallax_over_error
+pmra
+pmra_error
+pmdec
+pmdec_error
+ra_dec_corr
+ra_parallax_corr
+ra_pmra_corr
+ra_pmdec_corr
+dec_parallax_corr
+dec_pmra_corr
+dec_pmdec_corr
+parallax_pmra_corr
+parallax_pmdec_corr
+pmra_pmdec_corr
+astrometric_n_obs_al
+astrometric_n_obs_ac
+astrometric_n_good_obs_al
+astrometric_n_bad_obs_al
+astrometric_gof_al
+astrometric_chi2_al
+astrometric_excess_noise
+astrometric_excess_noise_sig
+astrometric_params_solved
+astrometric_primary_flag
+astrometric_weight_al
+astrometric_pseudo_colour
+astrometric_pseudo_colour_error
+mean_varpi_factor_al
+astrometric_matched_observations
+visibility_periods_used
+astrometric_sigma5d_max
+frame_rotator_object_type
+matched_observations
+duplicated_source
+phot_g_n_obs
+phot_g_mean_flux
+phot_g_mean_flux_error
+phot_g_mean_flux_over_error
+phot_g_mean_mag
+phot_bp_n_obs
+phot_bp_mean_flux
+phot_bp_mean_flux_error
+phot_bp_mean_flux_over_error
+phot_bp_mean_mag
+phot_rp_n_obs
+phot_rp_mean_flux
+phot_rp_mean_flux_error
+phot_rp_mean_flux_over_error
+phot_rp_mean_mag
+phot_bp_rp_excess_factor
+phot_proc_mode
+bp_rp
+bp_g
+g_rp
+radial_velocity
+radial_velocity_error
+rv_nb_transits
+rv_template_teff
+rv_template_logg
+rv_template_fe_h
+phot_variable_flag
+l
+b
+ecl_lon
+ecl_lat
+priam_flags
+teff_val
+teff_percentile_lower
+teff_percentile_upper
+a_g_val
+a_g_percentile_lower
+a_g_percentile_upper
+e_bp_min_rp_val
+e_bp_min_rp_percentile_lower
+e_bp_min_rp_percentile_upper
+flame_flags
+radius_val
+radius_percentile_lower
+radius_percentile_upper
+lum_val
+lum_percentile_lower
+lum_percentile_upper
+datalink_url
+epoch_photometry_url
+
+
+
+
+

You can probably guess what many of these columns are by looking at the names, but you should resist the temptation to guess. +To find out what the columns mean, read the documentation.

+

If you want to know what can go wrong when you don’t read the documentation, you might like this article.

+

Exercise: One of the other tables we’ll use is gaiadr2.gaiadr2.panstarrs1_original_valid. Use load_table to get the metadata for this table. How many columns are there and what are their names?

+

Hint: Remember the gotcha we mentioned earlier.

+
+
+
# Solution
+
+meta2 = Gaia.load_table('gaiadr2.panstarrs1_original_valid')
+print(meta2)
+
+
+
+
+
Retrieving table 'gaiadr2.panstarrs1_original_valid'
+Parsing table 'gaiadr2.panstarrs1_original_valid'...
+Done.
+TAP Table name: gaiadr2.gaiadr2.panstarrs1_original_valid
+Description: The Panoramic Survey Telescope and Rapid Response System (Pan-STARRS) is
+a system for wide-field astronomical imaging developed and operated by
+the Institute for Astronomy at the University of Hawaii. Pan-STARRS1
+(PS1) is the first part of Pan-STARRS to be completed and is the basis
+for Data Release 1 (DR1). The PS1 survey used a 1.8 meter telescope and
+its 1.4 Gigapixel camera to image the sky in five broadband filters (g,
+r, i, z, y).
+
+The current table contains a filtered subsample of the 10 723 304 629
+entries listed in the original ObjectThin table.
+We used only ObjectThin and MeanObject tables to extract
+panstarrs1OriginalValid table, this means that objects detected only in
+stack images are not included here. The main reason for us to avoid the
+use of objects detected in stack images is that their astrometry is not
+as good as the mean objects astrometry: “The stack positions (raStack,
+decStack) have considerably larger systematic astrometric errors than
+the mean epoch positions (raMean, decMean).” The astrometry for the
+MeanObject positions uses Gaia DR1 as a reference catalog, while the
+stack positions use 2MASS as a reference catalog.
+
+In details, we filtered out all objects where:
+
+-   nDetections = 1
+
+-   no good quality data in Pan-STARRS, objInfoFlag 33554432 not set
+
+-   mean astrometry could not be measured, objInfoFlag 524288 set
+
+-   stack position used for mean astrometry, objInfoFlag 1048576 set
+
+-   error on all magnitudes equal to 0 or to -999;
+
+-   all magnitudes set to -999;
+
+-   error on RA or DEC greater than 1 arcsec.
+
+The number of objects in panstarrs1OriginalValid is 2 264 263 282.
+
+The panstarrs1OriginalValid table contains only a subset of the columns
+available in the combined ObjectThin and MeanObject tables. A
+description of the original ObjectThin and MeanObjects tables can be
+found at:
+https://outerspace.stsci.edu/display/PANSTARRS/PS1+Database+object+and+detection+tables
+
+Download:
+http://mastweb.stsci.edu/ps1casjobs/home.aspx
+Documentation:
+https://outerspace.stsci.edu/display/PANSTARRS
+http://pswww.ifa.hawaii.edu/pswww/
+References:
+The Pan-STARRS1 Surveys, Chambers, K.C., et al. 2016, arXiv:1612.05560
+Pan-STARRS Data Processing System, Magnier, E. A., et al. 2016,
+arXiv:1612.05240
+Pan-STARRS Pixel Processing: Detrending, Warping, Stacking, Waters, C.
+Z., et al. 2016, arXiv:1612.05245
+Pan-STARRS Pixel Analysis: Source Detection and Characterization,
+Magnier, E. A., et al. 2016, arXiv:1612.05244
+Pan-STARRS Photometric and Astrometric Calibration, Magnier, E. A., et
+al. 2016, arXiv:1612.05242
+The Pan-STARRS1 Database and Data Products, Flewelling, H. A., et al.
+2016, arXiv:1612.05243
+
+Catalogue curator:
+SSDC - ASI Space Science Data Center
+https://www.ssdc.asi.it/
+Num. columns: 26
+
+
+
+
+
+
+
# Solution
+
+for column in meta2.columns:
+    print(column.name)
+
+
+
+
+
obj_name
+obj_id
+ra
+dec
+ra_error
+dec_error
+epoch_mean
+g_mean_psf_mag
+g_mean_psf_mag_error
+g_flags
+r_mean_psf_mag
+r_mean_psf_mag_error
+r_flags
+i_mean_psf_mag
+i_mean_psf_mag_error
+i_flags
+z_mean_psf_mag
+z_mean_psf_mag_error
+z_flags
+y_mean_psf_mag
+y_mean_psf_mag_error
+y_flags
+n_detections
+zone_id
+obj_info_flag
+quality_flag
+
+
+
+
+
+
+

Writing queries

+

By now you might be wondering how we actually download the data. With tables this big, you generally don’t. Instead, you use queries to select only the data you want.

+

A query is a string written in a query language like SQL; for the Gaia database, the query language is a dialect of SQL called ADQL.

+

Here’s an example of an ADQL query.

+
+
+
query1 = """SELECT 
+TOP 10
+source_id, ref_epoch, ra, dec, parallax 
+FROM gaiadr2.gaia_source"""
+
+
+
+
+

Python note: We use a triple-quoted string here so we can include line breaks in the query, which makes it easier to read.

+

The words in uppercase are ADQL keywords:

+
    +
  • SELECT indicates that we are selecting data (as opposed to adding or modifying data).

  • +
  • TOP indicates that we only want the first 10 rows of the table, which is useful for testing a query before asking for all of the data.

  • +
  • FROM specifies which table we want data from.

  • +
+

The third line is a list of column names, indicating which columns we want.

+

In this example, the keywords are capitalized and the column names are lowercase. This is a common style, but it is not required. ADQL and SQL are not case-sensitive.

+

To run this query, we use the Gaia object, which represents our connection to the Gaia database, and invoke launch_job:

+
+
+
job1 = Gaia.launch_job(query1)
+job1
+
+
+
+
+
<astroquery.utils.tap.model.job.Job at 0x7f9222e9cb20>
+
+
+
+
+

The result is an object that represents the job running on a Gaia server.

+

If you print it, it displays metadata for the forthcoming table.

+
+
+
print(job1)
+
+
+
+
+
<Table length=10>
+   name    dtype  unit                            description                            
+--------- ------- ---- ------------------------------------------------------------------
+source_id   int64      Unique source identifier (unique within a particular Data Release)
+ref_epoch float64   yr                                                    Reference epoch
+       ra float64  deg                                                    Right ascension
+      dec float64  deg                                                        Declination
+ parallax float64  mas                                                           Parallax
+Jobid: None
+Phase: COMPLETED
+Owner: None
+Output file: sync_20201005090721.xml.gz
+Results: None
+
+
+
+
+

Don’t worry about Results: None. That does not actually mean there are no results.

+

However, Phase: COMPLETED indicates that the job is complete, so we can get the results like this:

+
+
+
results1 = job1.get_results()
+type(results1)
+
+
+
+
+
astropy.table.table.Table
+
+
+
+
+

Optional detail: Why is table repeated three times? The first is the name of the module, the second is the name of the submodule, and the third is the name of the class. Most of the time we only care about the last one. It’s like the Linnean name for gorilla, which is Gorilla Gorilla Gorilla.

+

The result is an Astropy Table, which is similar to a table in an SQL database except:

+
    +
  • SQL databases are stored on disk drives, so they are persistent; that is, they “survive” even if you turn off the computer. An Astropy Table is stored in memory; it disappears when you turn off the computer (or shut down this Jupyter notebook).

  • +
  • SQL databases are designed to process queries. An Astropy Table can perform some query-like operations, like selecting columns and rows. But these operations use Python syntax, not SQL.

  • +
+

Jupyter knows how to display the contents of a Table.

+
+
+
results1
+
+
+
+
+
Table length=10 + + + + + + + + + + + + + + +
source_idref_epochradecparallax
yrdegdegmas
int64float64float64float64float64
45307383617937696002015.5281.5672536244872520.406821174303780.9785380604519425
45307526511350812162015.5281.086156535525720.5233504963518460.2674800612552977
45307433439514055682015.5281.3711441829917720.474147574053124-0.43911323550176806
45307550606271623682015.5281.267623626829920.5585239223461581.1422630184554958
45307468443413159682015.5281.137043174954120.3778523888981841.0092247424630945
45307684566150264322015.5281.872092143634720.31829694530366-0.06900136127674149
45307635131191372802015.5281.921180886411620.209568295785240.1266016679823622
45307363646185392642015.5281.491347561327420.3465790413276930.3894019486060072
45307359523051777282015.5281.408554916570420.3110309037199280.2041189982608354
45307512810560226562015.5281.058532837763820.4603095562147530.10294642821734962
+
+

Each column has a name, units, and a data type.

+

For example, the units of ra and dec are degrees, and their data type is float64, which is a 64-bit floating-point number, used to store measurements with a fraction part.

+

This information comes from the Gaia database, and has been stored in the Astropy Table by Astroquery.

+

Exercise: Read the documentation of this table and choose a column that looks interesting to you. Add the column name to the query and run it again. What are the units of the column you selected? What is its data type?

+
+
+

Asynchronous queries

+

launch_job asks the server to run the job “synchronously”, which normally means it runs immediately. But synchronous jobs are limited to 2000 rows. For queries that return more rows, you should run “asynchronously”, which mean they might take longer to get started.

+

If you are not sure how many rows a query will return, you can use the SQL command COUNT to find out how many rows are in the result without actually returning them. We’ll see an example of this later.

+

The results of an asynchronous query are stored in a file on the server, so you can start a query and come back later to get the results.

+

For anonymous users, files are kept for three days.

+

As an example, let’s try a query that’s similar to query1, with two changes:

+
    +
  • It selects the first 3000 rows, so it is bigger than we should run synchronously.

  • +
  • It uses a new keyword, WHERE.

  • +
+
+
+
query2 = """SELECT TOP 3000
+source_id, ref_epoch, ra, dec, parallax
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+"""
+
+
+
+
+

A WHERE clause indicates which rows we want; in this case, the query selects only rows “where” parallax is less than 1. This has the effect of selecting stars with relatively low parallax, which are farther away. We’ll use this clause to exclude nearby stars that are unlikely to be part of GD-1.

+

WHERE is one of the most common clauses in ADQL/SQL, and one of the most useful, because it allows us to select only the rows we need from the database.

+

We use launch_job_async to submit an asynchronous query.

+
+
+
job2 = Gaia.launch_job_async(query2)
+print(job2)
+
+
+
+
+
INFO: Query finished. [astroquery.utils.tap.core]
+<Table length=3000>
+   name    dtype  unit                            description                            
+--------- ------- ---- ------------------------------------------------------------------
+source_id   int64      Unique source identifier (unique within a particular Data Release)
+ref_epoch float64   yr                                                    Reference epoch
+       ra float64  deg                                                    Right ascension
+      dec float64  deg                                                        Declination
+ parallax float64  mas                                                           Parallax
+Jobid: 1601903242219O
+Phase: COMPLETED
+Owner: None
+Output file: async_20201005090722.vot
+Results: None
+
+
+
+
+

And here are the results.

+
+
+
results2 = job2.get_results()
+results2
+
+
+
+
+
Table length=3000 + + + + + + + + + + + + + + + + + + + + + + + + +
source_idref_epochradecparallax
yrdegdegmas
int64float64float64float64float64
45307383617937696002015.5281.5672536244872520.406821174303780.9785380604519425
45307526511350812162015.5281.086156535525720.5233504963518460.2674800612552977
45307433439514055682015.5281.3711441829917720.474147574053124-0.43911323550176806
45307684566150264322015.5281.872092143634720.31829694530366-0.06900136127674149
45307635131191372802015.5281.921180886411620.209568295785240.1266016679823622
45307363646185392642015.5281.491347561327420.3465790413276930.3894019486060072
45307359523051777282015.5281.408554916570420.3110309037199280.2041189982608354
45307512810560226562015.5281.058532837763820.4603095562147530.10294642821734962
45307409387744093442015.5281.376256953641620.4361400589412060.9242670062090182
...............
44677109150118026242015.5269.96809693073471.14290850381608820.42361471245557913
44677065513286795522015.5270.0331645898811.05657473236899270.922888231734588
44677122550373000962015.5270.77247179230470.6581664892880896-2.669179465293931
44677350011817617922015.5270.36286062483080.89470793235991240.6117399163086398
44677371014219166722015.5270.51108346614440.9806225910160181-0.39818224846127004
44677075477573274882015.5269.887462805949271.02127599401369620.7741412301054209
44677327720945730562015.5270.559971827601260.9037072088489417-1.7920417800164183
44677323554910877442015.5270.67307907024910.9197224705139885-0.3464446494840354
44677170997669445122015.5270.576671731208250.7262776590095680.05443955111134051
44677190582657812482015.5270.72480529715140.82055519217827850.3733943917490343
+
+

You might notice that some values of parallax are negative. As this FAQ explains, “Negative parallaxes are caused by errors in the observations.” Negative parallaxes have “no physical meaning,” but they can be a “useful diagnostic on the quality of the astrometric solution.”

+

Later we will see an example where we use parallax and parallax_error to identify stars where the distance estimate is likely to be inaccurate.

+

Exercise: The clauses in a query have to be in the right order. Go back and change the order of the clauses in query2 and run it again.

+

The query should fail, but notice that you don’t get much useful debugging information.

+

For this reason, developing and debugging ADQL queries can be really hard. A few suggestions that might help:

+
    +
  • Whenever possible, start with a working query, either an example you find online or a query you have used in the past.

  • +
  • Make small changes and test each change before you continue.

  • +
  • While you are debugging, use TOP to limit the number of rows in the result. That will make each attempt run faster, which reduces your testing time.

  • +
  • Launching test queries synchronously might make them start faster, too.

  • +
+
+
+

Operators

+

In a WHERE clause, you can use any of the SQL comparison operators:

+
    +
  • >: greater than

  • +
  • <: less than

  • +
  • >=: greater than or equal

  • +
  • <=: less than or equal

  • +
  • =: equal

  • +
  • != or <>: not equal

  • +
+

Most of these are the same as Python, but some are not. In particular, notice that the equality operator is =, not ==. +Be careful to keep your Python out of your ADQL!

+

You can combine comparisons using the logical operators:

+
    +
  • AND: true if both comparisons are true

  • +
  • OR: true if either or both comparisons are true

  • +
+

Finally, you can use NOT to invert the result of a comparison.

+

Exercise: Read about SQL operators here and then modify the previous query to select rows where bp_rp is between -0.75 and 2.

+

You can read about this variable here.

+
+
+
# Solution
+
+# This is what most people will probably do
+
+query = """SELECT TOP 10
+source_id, ref_epoch, ra, dec, parallax
+FROM gaiadr2.gaia_source
+WHERE parallax < 1 
+  AND bp_rp > -0.75 AND bp_rp < 2
+"""
+
+
+
+
+
+
+
# Solution
+
+# But if someone notices the BETWEEN operator, 
+# they might do this
+
+query = """SELECT TOP 10
+source_id, ref_epoch, ra, dec, parallax
+FROM gaiadr2.gaia_source
+WHERE parallax < 1 
+  AND bp_rp BETWEEN -0.75 AND 2
+"""
+
+
+
+
+

This Hertzsprung-Russell diagram shows the BP-RP color and luminosity of stars in the Gaia catalog.

+

Selecting stars with bp-rp less than 2 excludes many class M dwarf stars, which are low temperature, low luminosity. A star like that at GD-1’s distance would be hard to detect, so if it is detected, it it more likely to be in the foreground.

+
+
+

Cleaning up

+

Asynchronous jobs have a jobid.

+
+
+
job1.jobid, job2.jobid
+
+
+
+
+
(None, '1601903242219O')
+
+
+
+
+

Which you can use to remove the job from the server.

+
+
+
Gaia.remove_jobs([job2.jobid])
+
+
+
+
+
Removed jobs: '['1601903242219O']'.
+
+
+
+
+

If you don’t remove it job from the server, it will be removed eventually, so don’t feel too bad if you don’t clean up after yourself.

+
+
+

Formatting queries

+

So far the queries have been string “literals”, meaning that the entire string is part of the program. +But writing queries yourself can be slow, repetitive, and error-prone.

+

It is often a good idea to write Python code that assembles a query for you. One useful tool for that is the string format method.

+

As an example, we’ll divide the previous query into two parts; a list of column names and a “base” for the query that contains everything except the column names.

+

Here’s the list of columns we’ll select.

+
+
+
columns = 'source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity'
+
+
+
+
+

And here’s the base; it’s a string that contains at least one format specifier in curly brackets (braces).

+
+
+
query3_base = """SELECT TOP 10 
+{columns}
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2
+"""
+
+
+
+
+

This base query contains one format specifier, {columns}, which is a placeholder for the list of column names we will provide.

+

To assemble the query, we invoke format on the base string and provide a keyword argument that assigns a value to columns.

+
+
+
query3 = query3_base.format(columns=columns)
+
+
+
+
+

The result is a string with line breaks. If you display it, the line breaks appear as \n.

+
+
+
query3
+
+
+
+
+
'SELECT TOP 10 \nsource_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\nFROM gaiadr2.gaia_source\nWHERE parallax < 1\n  AND bp_rp BETWEEN -0.75 AND 2\n'
+
+
+
+
+

But if you print it, the line breaks appear as… line breaks.

+
+
+
print(query3)
+
+
+
+
+
SELECT TOP 10 
+source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2
+
+
+
+
+

Notice that the format specifier has been replaced with the value of columns.

+

Let’s run it and see if it works:

+
+
+
job3 = Gaia.launch_job(query3)
+print(job3)
+
+
+
+
+
<Table length=10>
+      name       dtype    unit                              description                             n_bad
+--------------- ------- -------- ------------------------------------------------------------------ -----
+      source_id   int64          Unique source identifier (unique within a particular Data Release)     0
+             ra float64      deg                                                    Right ascension     0
+            dec float64      deg                                                        Declination     0
+           pmra float64 mas / yr                         Proper motion in right ascension direction     0
+          pmdec float64 mas / yr                             Proper motion in declination direction     0
+       parallax float64      mas                                                           Parallax     0
+ parallax_error float64      mas                                         Standard error of parallax     0
+radial_velocity float64   km / s                                                    Radial velocity    10
+Jobid: None
+Phase: COMPLETED
+Owner: None
+Output file: sync_20201005090726.xml.gz
+Results: None
+
+
+
+
+
+
+
results3 = job3.get_results()
+results3
+
+
+
+
+
Table length=10 + + + + + + + + + + + + + + +
source_idradecpmrapmdecparallaxparallax_errorradial_velocity
degdegmas / yrmas / yrmasmaskm / s
int64float64float64float64float64float64float64float64
4467710915011802624269.96809693073471.14290850381608822.0233280236600626-2.56924278755102660.423614712455579130.470352406647465--
4467706551328679552270.0331645898811.0565747323689927-3.414829591355289-3.84372158574957370.9228882317345880.927008559859825--
4467712255037300096270.77247179230470.6581664892880896-3.5620173752896025-6.595792323153987-2.6691794652939310.9719742773203504--
4467735001181761792270.36286062483080.89470793235991242.13070799264892050.88267277109107120.61173991630863980.509812721702093--
4467737101421916672270.51108346614440.98062259101601810.17532366511560785-5.113270239706202-0.398182248461270040.7549581886719651--
4467707547757327488269.887462805949271.0212759940136962-2.6382230817672987-3.7077765320492870.77414123010542090.3022057897812064--
4467732355491087744270.67307907024910.9197224705139885-2.2735991502653037-11.864952855984358-0.34644464948403540.4937921513912002--
4467717099766944512270.576671731208250.726277659009568-3.4598362614808367-4.6014268933659210.054439551111340510.8867339293525688--
4467719058265781248270.72480529715140.8205551921782785-3.255079498426542-9.2492850691110850.37339439174903430.390952370410666--
4467722326741572352270.874312918885040.85955659758691580.106963983518598261.2035993780158853-0.118509434328643730.1660452431882023--
+
+

Good so far.

+

Exercise: This query always selects sources with parallax less than 1. But suppose you want to take that upper bound as an input.

+

Modify query3_base to replace 1 with a format specifier like {max_parallax}. Now, when you call format, add a keyword argument that assigns a value to max_parallax, and confirm that the format specifier gets replaced with the value you provide.

+
+
+
# Solution
+
+query4_base = """SELECT TOP 10
+{columns}
+FROM gaiadr2.gaia_source
+WHERE parallax < {max_parallax} AND 
+bp_rp BETWEEN -0.75 AND 2
+"""
+
+
+
+
+
+
+
# Solution
+
+query4 = query4_base.format(columns=columns,
+                          max_parallax=0.5)
+print(query)
+
+
+
+
+
SELECT TOP 10
+source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity
+FROM gaiadr2.gaia_source
+WHERE parallax < 0.5 AND 
+bp_rp BETWEEN -0.75 AND 2
+
+
+
+
+

Style note: You might notice that the variable names in this notebook are numbered, like query1, query2, etc.

+

The advantage of this style is that it isolates each section of the notebook from the others, so if you go back and run the cells out of order, it’s less likely that you will get unexpected interactions.

+

A drawback of this style is that it can be a nuisance to update the notebook if you add, remove, or reorder a section.

+

What do you think of this choice? Are there alternatives you prefer?

+
+
+

Summary

+

This notebook demonstrates the following steps:

+
    +
  1. Making a connection to the Gaia server,

  2. +
  3. Exploring information about the database and the tables it contains,

  4. +
  5. Writing a query and sending it to the server, and finally

  6. +
  7. Downloading the response from the server as an Astropy Table.

  8. +
+
+
+

Best practices

+
    +
  • If you can’t download an entire dataset (or it’s not practical) use queries to select the data you need.

  • +
  • Read the metadata and the documentation to make sure you understand the tables, their columns, and what they mean.

  • +
  • Develop queries incrementally: start with something simple, test it, and add a little bit at a time.

  • +
  • Use ADQL features like TOP and COUNT to test before you run a query that might return a lot of data.

  • +
  • If you know your query will return fewer than 3000 rows, you can run it synchronously, which might complete faster (but it doesn’t seem to make much difference). If it might return more than 3000 rows, you should run it asynchronously.

  • +
  • ADQL and SQL are not case-sensitive, so you don’t have to capitalize the keywords, but you should.

  • +
  • ADQL and SQL don’t require you to break a query into multiple lines, but you should.

  • +
+

Jupyter notebooks can be good for developing and testing code, but they have some drawbacks. In particular, if you run the cells out of order, you might find that variables don’t have the values you expect.

+

There are a few things you can do to mitigate these problems:

+
    +
  • Make each section of the notebook self-contained. Try not to use the same variable name in more than one section.

  • +
  • Keep notebooks short. Look for places where you can break your analysis into phases with one notebook per phase.

  • +
+
+
+ + + + +
+ +
+
+ + +
+ + +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/AstronomicalData/_build/jupyter_execute/02_coords.html b/AstronomicalData/_build/jupyter_execute/02_coords.html new file mode 100644 index 0000000..50db850 --- /dev/null +++ b/AstronomicalData/_build/jupyter_execute/02_coords.html @@ -0,0 +1,1821 @@ + + + + + + + + Lesson 2 — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + +
+ + + +
+
+
+ +
+ +
+

Lesson 2

+

This is the second in a series of lessons related to astronomy data.

+

As a running example, we are replicating parts of the analysis in a recent paper, “Off the beaten path: Gaia reveals GD-1 stars outside of the main stream” by Adrian M. Price-Whelan and Ana Bonaca.

+

In the first notebook, we wrote ADQL queries and used them to select and download data from the Gaia server.

+

In this notebook, we’ll pick up where we left off and write a query to select stars from the region of the sky where we expect GD-1 to be.

+

We’ll start with an example that does a “cone search”; that is, it selects stars that appear in a circular region of the sky.

+

Then, to select stars in the vicinity of GD-1, we’ll:

+
    +
  • Use Quantity objects to represent measurements with units.

  • +
  • Use the Gala library to convert coordinates from one frame to another.

  • +
  • Use the ADQL keywords POLYGON, CONTAINS, and POINT to select stars that fall within a polygonal region.

  • +
  • Submit a query and download the results.

  • +
  • Store the results in a FITS file.

  • +
+

After completing this lesson, you should be able to

+
    +
  • Use Python string formatting to compose more complex ADQL queries.

  • +
  • Work with coordinates and other quantities that have units.

  • +
  • Download the results of a query and store them in a file.

  • +
+
+

Installing libraries

+

If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we’ll use.

+

If you are running this notebook on your own computer, you might have to install these libraries yourself.

+

If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.

+

TODO: Add a link to the instructions.

+
+
+
# If we're running on Colab, install libraries
+
+import sys
+IN_COLAB = 'google.colab' in sys.modules
+
+if IN_COLAB:
+    !pip install astroquery astro-gala pyia
+
+
+
+
+
+
+

Selecting a region

+

One of the most common ways to restrict a query is to select stars in a particular region of the sky.

+

For example, here’s a query from the Gaia archive documentation that selects “all the objects … in a circular region centered at (266.41683, -29.00781) with a search radius of 5 arcmin (0.08333 deg).”

+
+
+
query = """
+SELECT 
+TOP 10 source_id
+FROM gaiadr2.gaia_source
+WHERE 1=CONTAINS(
+  POINT(ra, dec),
+  CIRCLE(266.41683, -29.00781, 0.08333333))
+"""
+
+
+
+
+

This query uses three keywords that are specific to ADQL (not SQL):

+
    +
  • POINT: a location in ICRS coordinates, specified in degrees of right ascension and declination.

  • +
  • CIRCLE: a circle where the first two values are the coordinates of the center and the third is the radius in degrees.

  • +
  • CONTAINS: a function that returns 1 if a POINT is contained in a shape and 0 otherwise.

  • +
+

Here is the documentation of CONTAINS.

+

A query like this is called a cone search because it selects stars in a cone.

+

Here’s how we run it.

+
+
+
from astroquery.gaia import Gaia
+
+job = Gaia.launch_job(query)
+result = job.get_results()
+result
+
+
+
+
+
Created TAP+ (v1.2.1) - Connection:
+	Host: gea.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+Created TAP+ (v1.2.1) - Connection:
+	Host: geadata.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+
+
+
Table length=10 + + + + + + + + + + + + + +
source_id
int64
4057468321929794432
4057468287575835392
4057482027171038976
4057470349160630656
4057470039924301696
4057469868125641984
4057468351995073024
4057469661959554560
4057470520960672640
4057470555320409600
+
+

Exercise: When you are debugging queries like this, you can use TOP to limit the size of the results, but then you still don’t know how big the results will be.

+

An alternative is to use COUNT, which asks for the number of rows that would be selected, but it does not return them.

+

In the previous query, replace TOP 10 source_id with COUNT(source_id) and run the query again. How many stars has Gaia identified in the cone we searched?

+
+
+

Getting GD-1 Data

+

From the Price-Whelan and Bonaca paper, we will try to reproduce Figure 1, which includes this representation of stars likely to belong to GD-1:

+

Along the axis of right ascension (\(\phi_1\)) the figure extends from -100 to 20 degrees.

+

Along the axis of declination (\(\phi_2\)) the figure extends from about -8 to 4 degrees.

+

Ideally, we would select all stars from this rectangle, but there are more than 10 million of them, so

+
    +
  • That would be difficult to work with,

  • +
  • As anonymous users, we are limited to 3 million rows in a single query, and

  • +
  • While we are developing and testing code, it will be faster to work with a smaller dataset.

  • +
+

So we’ll start by selecting stars in a smaller rectangle, from -55 to -45 degrees right ascension and -8 to 4 degrees of declination.

+

But first we let’s see how to represent quantities with units like degrees.

+
+
+

Working with coordinates

+

Coordinates are physical quantities, which means that they have two parts, a value and a unit.

+

For example, the coordinate \(30^{\circ}\) has value 30 and its units are degrees.

+

Until recently, most scientific computation was done with values only; units were left out of the program altogether, often with disastrous results.

+

Astropy provides tools for including units explicitly in computations, which makes it possible to detect errors before they cause disasters.

+

To use Astropy units, we import them like this:

+
+
+
import astropy.units as u
+
+u
+
+
+
+
+
<module 'astropy.units' from '/home/downey/anaconda3/envs/AstronomicalData/lib/python3.8/site-packages/astropy/units/__init__.py'>
+
+
+
+
+

u is an object that contains most common units and all SI units.

+

You can use dir to list them, but you should also read the documentation.

+
+
+
dir(u)
+
+
+
+
+
['A',
+ 'AA',
+ 'AB',
+ 'ABflux',
+ 'ABmag',
+ 'AU',
+ 'Angstrom',
+ 'B',
+ 'Ba',
+ 'Barye',
+ 'Bi',
+ 'Biot',
+ 'Bol',
+ 'Bq',
+ 'C',
+ 'Celsius',
+ 'Ci',
+ 'CompositeUnit',
+ 'D',
+ 'Da',
+ 'Dalton',
+ 'Debye',
+ 'Decibel',
+ 'DecibelUnit',
+ 'Dex',
+ 'DexUnit',
+ 'EA',
+ 'EAU',
+ 'EB',
+ 'EBa',
+ 'EC',
+ 'ED',
+ 'EF',
+ 'EG',
+ 'EGal',
+ 'EH',
+ 'EHz',
+ 'EJ',
+ 'EJy',
+ 'EK',
+ 'EL',
+ 'EN',
+ 'EOhm',
+ 'EP',
+ 'EPa',
+ 'ER',
+ 'ERy',
+ 'ES',
+ 'ESt',
+ 'ET',
+ 'EV',
+ 'EW',
+ 'EWb',
+ 'Ea',
+ 'Eadu',
+ 'Earcmin',
+ 'Earcsec',
+ 'Eau',
+ 'Eb',
+ 'Ebarn',
+ 'Ebeam',
+ 'Ebin',
+ 'Ebit',
+ 'Ebyte',
+ 'Ecd',
+ 'Echan',
+ 'Ecount',
+ 'Ect',
+ 'Ed',
+ 'Edeg',
+ 'Edyn',
+ 'EeV',
+ 'Eerg',
+ 'Eg',
+ 'Eh',
+ 'EiB',
+ 'Eib',
+ 'Eibit',
+ 'Eibyte',
+ 'Ek',
+ 'El',
+ 'Elm',
+ 'Elx',
+ 'Elyr',
+ 'Em',
+ 'Emag',
+ 'Emin',
+ 'Emol',
+ 'Eohm',
+ 'Epc',
+ 'Eph',
+ 'Ephoton',
+ 'Epix',
+ 'Epixel',
+ 'Erad',
+ 'Es',
+ 'Esr',
+ 'Eu',
+ 'Evox',
+ 'Evoxel',
+ 'Eyr',
+ 'F',
+ 'Farad',
+ 'Fr',
+ 'Franklin',
+ 'FunctionQuantity',
+ 'FunctionUnitBase',
+ 'G',
+ 'GA',
+ 'GAU',
+ 'GB',
+ 'GBa',
+ 'GC',
+ 'GD',
+ 'GF',
+ 'GG',
+ 'GGal',
+ 'GH',
+ 'GHz',
+ 'GJ',
+ 'GJy',
+ 'GK',
+ 'GL',
+ 'GN',
+ 'GOhm',
+ 'GP',
+ 'GPa',
+ 'GR',
+ 'GRy',
+ 'GS',
+ 'GSt',
+ 'GT',
+ 'GV',
+ 'GW',
+ 'GWb',
+ 'Ga',
+ 'Gadu',
+ 'Gal',
+ 'Garcmin',
+ 'Garcsec',
+ 'Gau',
+ 'Gauss',
+ 'Gb',
+ 'Gbarn',
+ 'Gbeam',
+ 'Gbin',
+ 'Gbit',
+ 'Gbyte',
+ 'Gcd',
+ 'Gchan',
+ 'Gcount',
+ 'Gct',
+ 'Gd',
+ 'Gdeg',
+ 'Gdyn',
+ 'GeV',
+ 'Gerg',
+ 'Gg',
+ 'Gh',
+ 'GiB',
+ 'Gib',
+ 'Gibit',
+ 'Gibyte',
+ 'Gk',
+ 'Gl',
+ 'Glm',
+ 'Glx',
+ 'Glyr',
+ 'Gm',
+ 'Gmag',
+ 'Gmin',
+ 'Gmol',
+ 'Gohm',
+ 'Gpc',
+ 'Gph',
+ 'Gphoton',
+ 'Gpix',
+ 'Gpixel',
+ 'Grad',
+ 'Gs',
+ 'Gsr',
+ 'Gu',
+ 'Gvox',
+ 'Gvoxel',
+ 'Gyr',
+ 'H',
+ 'Henry',
+ 'Hertz',
+ 'Hz',
+ 'IrreducibleUnit',
+ 'J',
+ 'Jansky',
+ 'Joule',
+ 'Jy',
+ 'K',
+ 'Kayser',
+ 'Kelvin',
+ 'KiB',
+ 'Kib',
+ 'Kibit',
+ 'Kibyte',
+ 'L',
+ 'L_bol',
+ 'L_sun',
+ 'LogQuantity',
+ 'LogUnit',
+ 'Lsun',
+ 'MA',
+ 'MAU',
+ 'MB',
+ 'MBa',
+ 'MC',
+ 'MD',
+ 'MF',
+ 'MG',
+ 'MGal',
+ 'MH',
+ 'MHz',
+ 'MJ',
+ 'MJy',
+ 'MK',
+ 'ML',
+ 'MN',
+ 'MOhm',
+ 'MP',
+ 'MPa',
+ 'MR',
+ 'MRy',
+ 'MS',
+ 'MSt',
+ 'MT',
+ 'MV',
+ 'MW',
+ 'MWb',
+ 'M_bol',
+ 'M_e',
+ 'M_earth',
+ 'M_jup',
+ 'M_jupiter',
+ 'M_p',
+ 'M_sun',
+ 'Ma',
+ 'Madu',
+ 'MagUnit',
+ 'Magnitude',
+ 'Marcmin',
+ 'Marcsec',
+ 'Mau',
+ 'Mb',
+ 'Mbarn',
+ 'Mbeam',
+ 'Mbin',
+ 'Mbit',
+ 'Mbyte',
+ 'Mcd',
+ 'Mchan',
+ 'Mcount',
+ 'Mct',
+ 'Md',
+ 'Mdeg',
+ 'Mdyn',
+ 'MeV',
+ 'Mearth',
+ 'Merg',
+ 'Mg',
+ 'Mh',
+ 'MiB',
+ 'Mib',
+ 'Mibit',
+ 'Mibyte',
+ 'Mjup',
+ 'Mjupiter',
+ 'Mk',
+ 'Ml',
+ 'Mlm',
+ 'Mlx',
+ 'Mlyr',
+ 'Mm',
+ 'Mmag',
+ 'Mmin',
+ 'Mmol',
+ 'Mohm',
+ 'Mpc',
+ 'Mph',
+ 'Mphoton',
+ 'Mpix',
+ 'Mpixel',
+ 'Mrad',
+ 'Ms',
+ 'Msr',
+ 'Msun',
+ 'Mu',
+ 'Mvox',
+ 'Mvoxel',
+ 'Myr',
+ 'N',
+ 'NamedUnit',
+ 'Newton',
+ 'Ohm',
+ 'P',
+ 'PA',
+ 'PAU',
+ 'PB',
+ 'PBa',
+ 'PC',
+ 'PD',
+ 'PF',
+ 'PG',
+ 'PGal',
+ 'PH',
+ 'PHz',
+ 'PJ',
+ 'PJy',
+ 'PK',
+ 'PL',
+ 'PN',
+ 'POhm',
+ 'PP',
+ 'PPa',
+ 'PR',
+ 'PRy',
+ 'PS',
+ 'PSt',
+ 'PT',
+ 'PV',
+ 'PW',
+ 'PWb',
+ 'Pa',
+ 'Padu',
+ 'Parcmin',
+ 'Parcsec',
+ 'Pascal',
+ 'Pau',
+ 'Pb',
+ 'Pbarn',
+ 'Pbeam',
+ 'Pbin',
+ 'Pbit',
+ 'Pbyte',
+ 'Pcd',
+ 'Pchan',
+ 'Pcount',
+ 'Pct',
+ 'Pd',
+ 'Pdeg',
+ 'Pdyn',
+ 'PeV',
+ 'Perg',
+ 'Pg',
+ 'Ph',
+ 'PiB',
+ 'Pib',
+ 'Pibit',
+ 'Pibyte',
+ 'Pk',
+ 'Pl',
+ 'Plm',
+ 'Plx',
+ 'Plyr',
+ 'Pm',
+ 'Pmag',
+ 'Pmin',
+ 'Pmol',
+ 'Pohm',
+ 'Ppc',
+ 'Pph',
+ 'Pphoton',
+ 'Ppix',
+ 'Ppixel',
+ 'Prad',
+ 'PrefixUnit',
+ 'Ps',
+ 'Psr',
+ 'Pu',
+ 'Pvox',
+ 'Pvoxel',
+ 'Pyr',
+ 'Quantity',
+ 'QuantityInfo',
+ 'QuantityInfoBase',
+ 'R',
+ 'R_earth',
+ 'R_jup',
+ 'R_jupiter',
+ 'R_sun',
+ 'Rayleigh',
+ 'Rearth',
+ 'Rjup',
+ 'Rjupiter',
+ 'Rsun',
+ 'Ry',
+ 'S',
+ 'ST',
+ 'STflux',
+ 'STmag',
+ 'Siemens',
+ 'SpecificTypeQuantity',
+ 'St',
+ 'Sun',
+ 'T',
+ 'TA',
+ 'TAU',
+ 'TB',
+ 'TBa',
+ 'TC',
+ 'TD',
+ 'TF',
+ 'TG',
+ 'TGal',
+ 'TH',
+ 'THz',
+ 'TJ',
+ 'TJy',
+ 'TK',
+ 'TL',
+ 'TN',
+ 'TOhm',
+ 'TP',
+ 'TPa',
+ 'TR',
+ 'TRy',
+ 'TS',
+ 'TSt',
+ 'TT',
+ 'TV',
+ 'TW',
+ 'TWb',
+ 'Ta',
+ 'Tadu',
+ 'Tarcmin',
+ 'Tarcsec',
+ 'Tau',
+ 'Tb',
+ 'Tbarn',
+ 'Tbeam',
+ 'Tbin',
+ 'Tbit',
+ 'Tbyte',
+ 'Tcd',
+ 'Tchan',
+ 'Tcount',
+ 'Tct',
+ 'Td',
+ 'Tdeg',
+ 'Tdyn',
+ 'TeV',
+ 'Terg',
+ 'Tesla',
+ 'Tg',
+ 'Th',
+ 'TiB',
+ 'Tib',
+ 'Tibit',
+ 'Tibyte',
+ 'Tk',
+ 'Tl',
+ 'Tlm',
+ 'Tlx',
+ 'Tlyr',
+ 'Tm',
+ 'Tmag',
+ 'Tmin',
+ 'Tmol',
+ 'Tohm',
+ 'Tpc',
+ 'Tph',
+ 'Tphoton',
+ 'Tpix',
+ 'Tpixel',
+ 'Trad',
+ 'Ts',
+ 'Tsr',
+ 'Tu',
+ 'Tvox',
+ 'Tvoxel',
+ 'Tyr',
+ 'Unit',
+ 'UnitBase',
+ 'UnitConversionError',
+ 'UnitTypeError',
+ 'UnitsError',
+ 'UnitsWarning',
+ 'UnrecognizedUnit',
+ 'V',
+ 'Volt',
+ 'W',
+ 'Watt',
+ 'Wb',
+ 'Weber',
+ 'YA',
+ 'YAU',
+ 'YB',
+ 'YBa',
+ 'YC',
+ 'YD',
+ 'YF',
+ 'YG',
+ 'YGal',
+ 'YH',
+ 'YHz',
+ 'YJ',
+ 'YJy',
+ 'YK',
+ 'YL',
+ 'YN',
+ 'YOhm',
+ 'YP',
+ 'YPa',
+ 'YR',
+ 'YRy',
+ 'YS',
+ 'YSt',
+ 'YT',
+ 'YV',
+ 'YW',
+ 'YWb',
+ 'Ya',
+ 'Yadu',
+ 'Yarcmin',
+ 'Yarcsec',
+ 'Yau',
+ 'Yb',
+ 'Ybarn',
+ 'Ybeam',
+ 'Ybin',
+ 'Ybit',
+ 'Ybyte',
+ 'Ycd',
+ 'Ychan',
+ 'Ycount',
+ 'Yct',
+ 'Yd',
+ 'Ydeg',
+ 'Ydyn',
+ 'YeV',
+ 'Yerg',
+ 'Yg',
+ 'Yh',
+ 'Yk',
+ 'Yl',
+ 'Ylm',
+ 'Ylx',
+ 'Ylyr',
+ 'Ym',
+ 'Ymag',
+ 'Ymin',
+ 'Ymol',
+ 'Yohm',
+ 'Ypc',
+ 'Yph',
+ 'Yphoton',
+ 'Ypix',
+ 'Ypixel',
+ 'Yrad',
+ 'Ys',
+ 'Ysr',
+ 'Yu',
+ 'Yvox',
+ 'Yvoxel',
+ 'Yyr',
+ 'ZA',
+ 'ZAU',
+ 'ZB',
+ 'ZBa',
+ 'ZC',
+ 'ZD',
+ 'ZF',
+ 'ZG',
+ 'ZGal',
+ 'ZH',
+ 'ZHz',
+ 'ZJ',
+ 'ZJy',
+ 'ZK',
+ 'ZL',
+ 'ZN',
+ 'ZOhm',
+ 'ZP',
+ 'ZPa',
+ 'ZR',
+ 'ZRy',
+ 'ZS',
+ 'ZSt',
+ 'ZT',
+ 'ZV',
+ 'ZW',
+ 'ZWb',
+ 'Za',
+ 'Zadu',
+ 'Zarcmin',
+ 'Zarcsec',
+ 'Zau',
+ 'Zb',
+ 'Zbarn',
+ 'Zbeam',
+ 'Zbin',
+ 'Zbit',
+ 'Zbyte',
+ 'Zcd',
+ 'Zchan',
+ 'Zcount',
+ 'Zct',
+ 'Zd',
+ 'Zdeg',
+ 'Zdyn',
+ 'ZeV',
+ 'Zerg',
+ 'Zg',
+ 'Zh',
+ 'Zk',
+ 'Zl',
+ 'Zlm',
+ 'Zlx',
+ 'Zlyr',
+ 'Zm',
+ 'Zmag',
+ 'Zmin',
+ 'Zmol',
+ 'Zohm',
+ 'Zpc',
+ 'Zph',
+ 'Zphoton',
+ 'Zpix',
+ 'Zpixel',
+ 'Zrad',
+ 'Zs',
+ 'Zsr',
+ 'Zu',
+ 'Zvox',
+ 'Zvoxel',
+ 'Zyr',
+ '__builtins__',
+ '__cached__',
+ '__doc__',
+ '__file__',
+ '__loader__',
+ '__name__',
+ '__package__',
+ '__path__',
+ '__spec__',
+ 'a',
+ 'aA',
+ 'aAU',
+ 'aB',
+ 'aBa',
+ 'aC',
+ 'aD',
+ 'aF',
+ 'aG',
+ 'aGal',
+ 'aH',
+ 'aHz',
+ 'aJ',
+ 'aJy',
+ 'aK',
+ 'aL',
+ 'aN',
+ 'aOhm',
+ 'aP',
+ 'aPa',
+ 'aR',
+ 'aRy',
+ 'aS',
+ 'aSt',
+ 'aT',
+ 'aV',
+ 'aW',
+ 'aWb',
+ 'aa',
+ 'aadu',
+ 'aarcmin',
+ 'aarcsec',
+ 'aau',
+ 'ab',
+ 'abA',
+ 'abC',
+ 'abampere',
+ 'abarn',
+ 'abcoulomb',
+ 'abeam',
+ 'abin',
+ 'abit',
+ 'abyte',
+ 'acd',
+ 'achan',
+ 'acount',
+ 'act',
+ 'ad',
+ 'add_enabled_equivalencies',
+ 'add_enabled_units',
+ 'adeg',
+ 'adu',
+ 'adyn',
+ 'aeV',
+ 'aerg',
+ 'ag',
+ 'ah',
+ 'ak',
+ 'al',
+ 'allclose',
+ 'alm',
+ 'alx',
+ 'alyr',
+ 'am',
+ 'amag',
+ 'amin',
+ 'amol',
+ 'amp',
+ 'ampere',
+ 'angstrom',
+ 'annum',
+ 'aohm',
+ 'apc',
+ 'aph',
+ 'aphoton',
+ 'apix',
+ 'apixel',
+ 'arad',
+ 'arcmin',
+ 'arcminute',
+ 'arcsec',
+ 'arcsecond',
+ 'asr',
+ 'astronomical_unit',
+ 'astrophys',
+ 'attoBarye',
+ 'attoDa',
+ 'attoDalton',
+ 'attoDebye',
+ 'attoFarad',
+ 'attoGauss',
+ 'attoHenry',
+ 'attoHertz',
+ 'attoJansky',
+ 'attoJoule',
+ 'attoKayser',
+ 'attoKelvin',
+ 'attoNewton',
+ 'attoOhm',
+ 'attoPascal',
+ 'attoRayleigh',
+ 'attoSiemens',
+ 'attoTesla',
+ 'attoVolt',
+ 'attoWatt',
+ 'attoWeber',
+ 'attoamp',
+ 'attoampere',
+ 'attoannum',
+ 'attoarcminute',
+ 'attoarcsecond',
+ 'attoastronomical_unit',
+ 'attobarn',
+ 'attobarye',
+ 'attobit',
+ 'attobyte',
+ 'attocandela',
+ 'attocoulomb',
+ 'attocount',
+ 'attoday',
+ 'attodebye',
+ 'attodegree',
+ 'attodyne',
+ 'attoelectronvolt',
+ 'attofarad',
+ 'attogal',
+ 'attogauss',
+ 'attogram',
+ 'attohenry',
+ 'attohertz',
+ 'attohour',
+ 'attohr',
+ 'attojansky',
+ 'attojoule',
+ 'attokayser',
+ 'attolightyear',
+ 'attoliter',
+ 'attolumen',
+ 'attolux',
+ 'attometer',
+ 'attominute',
+ 'attomole',
+ 'attonewton',
+ 'attoparsec',
+ 'attopascal',
+ 'attophoton',
+ 'attopixel',
+ 'attopoise',
+ 'attoradian',
+ 'attorayleigh',
+ 'attorydberg',
+ 'attosecond',
+ 'attosiemens',
+ 'attosteradian',
+ 'attostokes',
+ 'attotesla',
+ 'attovolt',
+ 'attovoxel',
+ 'attowatt',
+ 'attoweber',
+ 'attoyear',
+ 'au',
+ 'avox',
+ 'avoxel',
+ 'ayr',
+ 'b',
+ 'bar',
+ 'barn',
+ 'barye',
+ 'beam',
+ 'beam_angular_area',
+ 'becquerel',
+ 'bin',
+ 'binary_prefixes',
+ 'bit',
+ 'bol',
+ 'brightness_temperature',
+ 'byte',
+ 'cA',
+ 'cAU',
+ 'cB',
+ 'cBa',
+ 'cC',
+ 'cD',
+ 'cF',
+ 'cG',
+ 'cGal',
+ 'cH',
+ 'cHz',
+ 'cJ',
+ 'cJy',
+ 'cK',
+ 'cL',
+ 'cN',
+ 'cOhm',
+ 'cP',
+ 'cPa',
+ 'cR',
+ 'cRy',
+ 'cS',
+ 'cSt',
+ 'cT',
+ 'cV',
+ 'cW',
+ 'cWb',
+ 'ca',
+ 'cadu',
+ 'candela',
+ 'carcmin',
+ 'carcsec',
+ 'cau',
+ 'cb',
+ 'cbarn',
+ 'cbeam',
+ 'cbin',
+ 'cbit',
+ 'cbyte',
+ 'ccd',
+ 'cchan',
+ 'ccount',
+ 'cct',
+ 'cd',
+ 'cdeg',
+ 'cdyn',
+ 'ceV',
+ 'centiBarye',
+ 'centiDa',
+ 'centiDalton',
+ 'centiDebye',
+ 'centiFarad',
+ 'centiGauss',
+ 'centiHenry',
+ 'centiHertz',
+ 'centiJansky',
+ 'centiJoule',
+ 'centiKayser',
+ 'centiKelvin',
+ 'centiNewton',
+ 'centiOhm',
+ 'centiPascal',
+ 'centiRayleigh',
+ 'centiSiemens',
+ 'centiTesla',
+ 'centiVolt',
+ 'centiWatt',
+ 'centiWeber',
+ 'centiamp',
+ 'centiampere',
+ 'centiannum',
+ 'centiarcminute',
+ 'centiarcsecond',
+ 'centiastronomical_unit',
+ 'centibarn',
+ 'centibarye',
+ 'centibit',
+ 'centibyte',
+ 'centicandela',
+ 'centicoulomb',
+ 'centicount',
+ 'centiday',
+ 'centidebye',
+ 'centidegree',
+ 'centidyne',
+ 'centielectronvolt',
+ 'centifarad',
+ 'centigal',
+ 'centigauss',
+ 'centigram',
+ 'centihenry',
+ 'centihertz',
+ 'centihour',
+ 'centihr',
+ 'centijansky',
+ 'centijoule',
+ 'centikayser',
+ 'centilightyear',
+ 'centiliter',
+ 'centilumen',
+ 'centilux',
+ 'centimeter',
+ 'centiminute',
+ 'centimole',
+ 'centinewton',
+ 'centiparsec',
+ 'centipascal',
+ 'centiphoton',
+ 'centipixel',
+ 'centipoise',
+ 'centiradian',
+ 'centirayleigh',
+ 'centirydberg',
+ 'centisecond',
+ 'centisiemens',
+ 'centisteradian',
+ 'centistokes',
+ 'centitesla',
+ 'centivolt',
+ 'centivoxel',
+ 'centiwatt',
+ 'centiweber',
+ 'centiyear',
+ 'cerg',
+ 'cg',
+ 'cgs',
+ 'ch',
+ 'chan',
+ 'ck',
+ 'cl',
+ 'clm',
+ 'clx',
+ 'clyr',
+ 'cm',
+ 'cmag',
+ 'cmin',
+ 'cmol',
+ 'cohm',
+ 'core',
+ 'coulomb',
+ 'count',
+ 'cpc',
+ 'cph',
+ 'cphoton',
+ 'cpix',
+ 'cpixel',
+ 'crad',
+ 'cs',
+ 'csr',
+ 'ct',
+ 'cu',
+ 'curie',
+ 'cvox',
+ 'cvoxel',
+ 'cy',
+ 'cycle',
+ 'cyr',
+ 'd',
+ 'dA',
+ 'dAU',
+ 'dB',
+ 'dBa',
+ 'dC',
+ 'dD',
+ 'dF',
+ 'dG',
+ 'dGal',
+ 'dH',
+ 'dHz',
+ 'dJ',
+ 'dJy',
+ 'dK',
+ 'dL',
+ 'dN',
+ 'dOhm',
+ 'dP',
+ 'dPa',
+ 'dR',
+ 'dRy',
+ 'dS',
+ 'dSt',
+ 'dT',
+ ...]
+
+
+
+
+

To create a quantity, we multiply a value by a unit.

+
+
+
coord = 30 * u.deg
+type(coord)
+
+
+
+
+
astropy.units.quantity.Quantity
+
+
+
+
+

The result is a Quantity object.

+

Jupyter knows how to display Quantities like this:

+
+
+
coord
+
+
+
+
+
+\[30 \; \mathrm{{}^{\circ}}\]
+
+
+
+
+

Selecting a rectangle

+

Now we’ll select a rectangle from -55 to -45 degrees right ascension and -8 to 4 degrees of declination.

+

We’ll define variables to contain these limits.

+
+
+
phi1_min = -55
+phi1_max = -45
+phi2_min = -8
+phi2_max = 4
+
+
+
+
+

To represent a rectangle, we’ll use two lists of coordinates and multiply by their units.

+
+
+
phi1_rect = [phi1_min, phi1_min, phi1_max, phi1_max] * u.deg
+phi2_rect = [phi2_min, phi2_max, phi2_max, phi2_min] * u.deg
+
+
+
+
+

phi1_rect and phi2_rect represent the coordinates of the corners of a rectangle.

+

But they are in “a Heliocentric spherical coordinate system defined by the orbit of the GD1 stream

+

In order to use them in a Gaia query, we have to convert them to International Celestial Reference System (ICRS) coordinates. We can do that by storing the coordinates in a GD1Koposov10 object provided by Gala.

+
+
+
import gala.coordinates as gc
+
+corners = gc.GD1Koposov10(phi1=phi1_rect, phi2=phi2_rect)
+type(corners)
+
+
+
+
+
gala.coordinates.gd1.GD1Koposov10
+
+
+
+
+

We can display the result like this:

+
+
+
corners
+
+
+
+
+
<GD1Koposov10 Coordinate: (phi1, phi2) in deg
+    [(-55., -8.), (-55.,  4.), (-45.,  4.), (-45., -8.)]>
+
+
+
+
+

Now we can use transform_to to convert to ICRS coordinates.

+
+
+
import astropy.coordinates as coord
+
+corners_icrs = corners.transform_to(coord.ICRS)
+type(corners_icrs)
+
+
+
+
+
astropy.coordinates.builtin_frames.icrs.ICRS
+
+
+
+
+

The result is an ICRS object.

+
+
+
corners_icrs
+
+
+
+
+
<ICRS Coordinate: (ra, dec) in deg
+    [(146.27533314, 19.26190982), (135.42163944, 25.87738723),
+     (141.60264825, 34.3048303 ), (152.81671045, 27.13611254)]>
+
+
+
+
+

Notice that a rectangle in one coordinate system is not necessarily a rectangle in another. In this example, the result is a polygon.

+
+
+

Selecting a polygon

+

In order to use this polygon as part of an ADQL query, we have to convert it to a string with a comma-separated list of coordinates, as in this example:

+
"""
+POLYGON(143.65, 20.98, 
+        134.46, 26.39, 
+        140.58, 34.85, 
+        150.16, 29.01)
+"""
+
+
+

corners_icrs behaves like a list, so we can use a for loop to iterate through the points.

+
+
+
for point in corners_icrs:
+    print(point)
+
+
+
+
+
<ICRS Coordinate: (ra, dec) in deg
+    (146.27533314, 19.26190982)>
+<ICRS Coordinate: (ra, dec) in deg
+    (135.42163944, 25.87738723)>
+<ICRS Coordinate: (ra, dec) in deg
+    (141.60264825, 34.3048303)>
+<ICRS Coordinate: (ra, dec) in deg
+    (152.81671045, 27.13611254)>
+
+
+
+
+

From that, we can select the coordinates ra and dec:

+
+
+
for point in corners_icrs:
+    print(point.ra, point.dec)
+
+
+
+
+
146d16m31.1993s 19d15m42.8754s
+135d25m17.902s 25d52m38.594s
+141d36m09.5337s 34d18m17.3891s
+152d49m00.1576s 27d08m10.0051s
+
+
+
+
+

The results are quantities with units, but if we select the value part, we get a dimensionless floating-point number.

+
+
+
for point in corners_icrs:
+    print(point.ra.value, point.dec.value)
+
+
+
+
+
146.27533313607782 19.261909820533692
+135.42163944306296 25.87738722767213
+141.60264825107333 34.304830296257144
+152.81671044675923 27.136112541397996
+
+
+
+
+

We can use string format to convert these numbers to strings.

+
+
+
point_base = "{point.ra.value}, {point.dec.value}"
+
+t = [point_base.format(point=point)
+     for point in corners_icrs]
+t
+
+
+
+
+
['146.27533313607782, 19.261909820533692',
+ '135.42163944306296, 25.87738722767213',
+ '141.60264825107333, 34.304830296257144',
+ '152.81671044675923, 27.136112541397996']
+
+
+
+
+

The result is a list of strings, which we can join into a single string using join.

+
+
+
point_list = ', '.join(t)
+point_list
+
+
+
+
+
'146.27533313607782, 19.261909820533692, 135.42163944306296, 25.87738722767213, 141.60264825107333, 34.304830296257144, 152.81671044675923, 27.136112541397996'
+
+
+
+
+

Notice that we invoke join on a string and pass the list as an argument.

+

Before we can assemble the query, we need columns again (as we saw in the previous notebook).

+
+
+
columns = 'source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity'
+
+
+
+
+

Here’s the base for the query, with format specifiers for columns and point_list.

+
+
+
query_base = """SELECT {columns}
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2 
+  AND 1 = CONTAINS(POINT(ra, dec), 
+                   POLYGON({point_list}))
+"""
+
+
+
+
+

And here’s the result:

+
+
+
query = query_base.format(columns=columns, 
+                          point_list=point_list)
+print(query)
+
+
+
+
+
SELECT source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity
+FROM gaiadr2.gaia_source
+WHERE parallax < 1
+  AND bp_rp BETWEEN -0.75 AND 2 
+  AND 1 = CONTAINS(POINT(ra, dec), 
+                   POLYGON(146.27533313607782, 19.261909820533692, 135.42163944306296, 25.87738722767213, 141.60264825107333, 34.304830296257144, 152.81671044675923, 27.136112541397996))
+
+
+
+
+

As always, we should take a minute to proof-read the query before we launch it.

+

The result will be bigger than our previous queries, so it will take a little longer.

+
+
+
job = Gaia.launch_job_async(query)
+print(job)
+
+
+
+
+
INFO: Query finished. [astroquery.utils.tap.core]
+<Table length=140340>
+      name       dtype    unit                              description                             n_bad 
+--------------- ------- -------- ------------------------------------------------------------------ ------
+      source_id   int64          Unique source identifier (unique within a particular Data Release)      0
+             ra float64      deg                                                    Right ascension      0
+            dec float64      deg                                                        Declination      0
+           pmra float64 mas / yr                         Proper motion in right ascension direction      0
+          pmdec float64 mas / yr                             Proper motion in declination direction      0
+       parallax float64      mas                                                           Parallax      0
+ parallax_error float64      mas                                         Standard error of parallax      0
+radial_velocity float64   km / s                                                    Radial velocity 139374
+Jobid: 1601903357321O
+Phase: COMPLETED
+Owner: None
+Output file: async_20201005090917.vot
+Results: None
+
+
+
+
+

Here are the results.

+
+
+
results = job.get_results()
+len(results)
+
+
+
+
+
140340
+
+
+
+
+

There are more than 100,000 stars in this polygon, but that’s a manageable size to work with.

+
+
+

Saving results

+

This is the set of stars we’ll work with in the next step. But since we have a substantial dataset now, this is a good time to save it.

+

Storing the data in a file means we can shut down this notebook and pick up where we left off without running the previous query again.

+

Astropy Table objects provide write, which writes the table to disk.

+
+
+
filename = 'gd1_results.fits'
+results.write(filename, overwrite=True)
+
+
+
+
+

Because the filename ends with fits, the table is written in the FITS format, which preserves the metadata associated with the table.

+

If the file already exists, the overwrite argument causes it to be overwritten.

+

To see how big the file is, we can use ls with the -lh option, which prints information about the file including its size in human-readable form.

+
+
+
!ls -lh gd1_results.fits
+
+
+
+
+
-rw-rw-r-- 1 downey downey 8.6M Oct  5 09:09 gd1_results.fits
+
+
+
+
+

The file is about 8.6 MB.

+
+
+

Summary

+

In this notebook, we composed more complex queries to select stars within a polygonal region of the sky. Then we downloaded the results and saved them in a FITS file.

+

In the next notebook, we’ll reload the data from this file and replicate the next step in the analysis, using proper motion to identify stars likely to be in GD-1.

+
+
+

Best practices

+
    +
  • For measurements with units, use Quantity objects that represent units explicitly and check for errors.

  • +
  • Use the format function to compose queries; it is often faster and less error-prone.

  • +
  • Develop queries incrementally: start with something simple, test it, and add a little bit at a time.

  • +
  • Once you have a query working, save the data in a local file. If you shut down the notebook and come back to it later, you can reload the file; you don’t have to run the query again.

  • +
+
+
+ + + + +
+ +
+
+ + +
+ + +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/README.html b/README.html new file mode 100644 index 0000000..aede958 --- /dev/null +++ b/README.html @@ -0,0 +1,379 @@ + + + + + + + + Astronomical Data in Python — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
+ +
+ +
+

Astronomical Data in Python

+

Astronomical Data in Python is an introduction to tools and practices for working with astronomical data. Topics covered include:

+
    +
  • Writing queries that select and download data from a database.

  • +
  • Using data stored in an Astropy Table or Pandas DataFrame.

  • +
  • Working with coordinates and other quantities with units.

  • +
  • Storing data in various formats.

  • +
  • Performing database join operations that combine data from multiple tables.

  • +
  • Visualizing data and preparing publication-quality figures.

  • +
+

As a running example, we will replicate part of the analysis in a recent paper, “Off the beaten path: Gaia reveals GD-1 stars outside of the main stream” by Adrian M. Price-Whelan and Ana Bonaca.

+

This material was developed in collaboration with The Carpentries and the Astronomy Curriculum Development Committee, and supported by funding from the American Institute of Physics through the American Astronomical Society.

+

I am grateful for contributions from the members of the committee – Azalee Bostroem, Rodolfo Montez, and Phil Rosenfield – and from Erin Becker, Brett Morris and Adrian Price-Whelan.

+

The original format of this material is a series of Jupyter notebooks. Using the +links below, you can read the notebooks on NBViewer or run them on Colab. If you +want to run the notebooks in your own environment, you can download them from +this repository and follow the instructions below to set up your environment.

+

This material is also available in the form of Carpentries lessons, but you should be +aware that these versions might diverge in the future.

+

Prerequisites

+

This material should be accessible to people familiar with basic Python, but not necessarily the libraries we will use, like Astropy or Pandas. If you are familiar with Python lists and dictionaries, and you know how to write a function that takes parameters and returns a value, that should be enough.

+

We assume that you are familiar with astronomy at the undergraduate level, but we will not assume specialized knowledge of the datasets or analysis methods we’ll use.

+

Notebook 1

+

This notebook demonstrates the following steps:

+
    +
  1. Making a connection to the Gaia server,

  2. +
  3. Exploring information about the database and the tables it contains,

  4. +
  5. Writing a query and sending it to the server, and finally

  6. +
  7. Downloading the response from the server as an Astropy Table.

  8. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+

Notebook 2

+

This notebook starts with an example that does a “cone search”; that is, it selects stars that appear in a circular region of the sky.

+

Then, to select stars in the vicinity of GD-1, we:

+
    +
  • Use Quantity objects to represent measurements with units.

  • +
  • Use the Gala library to convert coordinates from one frame to another.

  • +
  • Use the ADQL keywords POLYGON, CONTAINS, and POINT to select stars that fall within a polygonal region.

  • +
  • Submit a query and download the results.

  • +
  • Store the results in a FITS file.

  • +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+

Notebook 3

+

Here are the steps in this notebook:

+
    +
  1. We’ll read back the results from the previous notebook, which we saved in a FITS file.

  2. +
  3. Then we’ll transform the coordinates and proper motion data from ICRS back to the coordinate frame of GD-1.

  4. +
  5. We’ll put those results into a Pandas DataFrame, which we’ll use to select stars near the centerline of GD-1.

  6. +
  7. Plotting the proper motion of those stars, we’ll identify a region of proper motion for stars that are likely to be in GD-1.

  8. +
  9. Finally, we’ll select and plot the stars whose proper motion is in that region.

  10. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+

Notebook 4

+

Here are the steps in this notebook:

+
    +
  1. Using data from the previous notebook, we’ll identify the values of proper motion for stars likely to be in GD-1.

  2. +
  3. Then we’ll compose an ADQL query that selects stars based on proper motion, so we can download only the data we need.

  4. +
  5. We’ll also see how to write the results to a CSV file.

  6. +
+

That will make it possible to search a bigger region of the sky in a single query.

+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+

Notebook 5

+

Here are the steps in this notebook:

+
    +
  1. We’ll reload the candidate stars we identified in the previous notebook.

  2. +
  3. Then we’ll run a query on the Gaia server that uploads the table of candidates and uses a JOIN operation to select photometry data for the candidate stars.

  4. +
  5. We’ll write the results to a file for use in the next notebook.

  6. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+

Notebook 6

+

Here are the steps in this notebook:

+
    +
  1. We’ll reload the data from the previous notebook and make a color-magnitude diagram.

  2. +
  3. Then we’ll specify a polygon in the diagram that contains stars with the photometry we expect.

  4. +
  5. Then we’ll merge the photometry data with the list of candidate stars, storing the result in a Pandas DataFrame.

  6. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+

Notebook 7

+

Here are the steps in this notebook:

+
    +
  1. Starting with the figure from the previous notebook, we’ll add annotations to present the results more clearly.

  2. +
  3. The we’ll see several ways to customize figures to make them more appealing and effective.

  4. +
  5. Finally, we’ll see how to make a figure with multiple panels or subplots.

  6. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+

Installation instructions

+

Coming soon.

+
+
+
+ + + + +
+ +
+
+ + +
+ + Chapter 1 + +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 2f7efbe..0000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-minimal \ No newline at end of file diff --git a/_images/03_motion_28_0.png b/_images/03_motion_28_0.png new file mode 100644 index 0000000..87f7d6a Binary files /dev/null and b/_images/03_motion_28_0.png differ diff --git a/_images/03_motion_45_0.png b/_images/03_motion_45_0.png new file mode 100644 index 0000000..f3e40e9 Binary files /dev/null and b/_images/03_motion_45_0.png differ diff --git a/_images/03_motion_79_0.png b/_images/03_motion_79_0.png new file mode 100644 index 0000000..f228c2e Binary files /dev/null and b/_images/03_motion_79_0.png differ diff --git a/_images/03_motion_81_0.png b/_images/03_motion_81_0.png new file mode 100644 index 0000000..291881d Binary files /dev/null and b/_images/03_motion_81_0.png differ diff --git a/_images/03_motion_88_0.png b/_images/03_motion_88_0.png new file mode 100644 index 0000000..5c20d6b Binary files /dev/null and b/_images/03_motion_88_0.png differ diff --git a/_images/03_motion_98_0.png b/_images/03_motion_98_0.png new file mode 100644 index 0000000..0691cd2 Binary files /dev/null and b/_images/03_motion_98_0.png differ diff --git a/_images/04_select_11_0.png b/_images/04_select_11_0.png new file mode 100644 index 0000000..82d2aab Binary files /dev/null and b/_images/04_select_11_0.png differ diff --git a/_images/04_select_13_0.png b/_images/04_select_13_0.png new file mode 100644 index 0000000..6b70416 Binary files /dev/null and b/_images/04_select_13_0.png differ diff --git a/_images/04_select_25_0.png b/_images/04_select_25_0.png new file mode 100644 index 0000000..da56759 Binary files /dev/null and b/_images/04_select_25_0.png differ diff --git a/_images/04_select_51_0.png b/_images/04_select_51_0.png new file mode 100644 index 0000000..4bd920c Binary files /dev/null and b/_images/04_select_51_0.png differ diff --git a/_images/04_select_57_0.png b/_images/04_select_57_0.png new file mode 100644 index 0000000..351b276 Binary files /dev/null and b/_images/04_select_57_0.png differ diff --git a/_images/05_join_9_0.png b/_images/05_join_9_0.png new file mode 100644 index 0000000..eb6cc8c Binary files /dev/null and b/_images/05_join_9_0.png differ diff --git a/_images/06_photo_12_0.png b/_images/06_photo_12_0.png new file mode 100644 index 0000000..f5b87d1 Binary files /dev/null and b/_images/06_photo_12_0.png differ diff --git a/_images/06_photo_23_0.png b/_images/06_photo_23_0.png new file mode 100644 index 0000000..7a3e394 Binary files /dev/null and b/_images/06_photo_23_0.png differ diff --git a/_images/06_photo_61_0.png b/_images/06_photo_61_0.png new file mode 100644 index 0000000..af7b03d Binary files /dev/null and b/_images/06_photo_61_0.png differ diff --git a/_images/06_photo_63_0.png b/_images/06_photo_63_0.png new file mode 100644 index 0000000..a2d1875 Binary files /dev/null and b/_images/06_photo_63_0.png differ diff --git a/_images/07_plot_13_0.png b/_images/07_plot_13_0.png new file mode 100644 index 0000000..bdd9b77 Binary files /dev/null and b/_images/07_plot_13_0.png differ diff --git a/_images/07_plot_50_0.png b/_images/07_plot_50_0.png new file mode 100644 index 0000000..280dca5 Binary files /dev/null and b/_images/07_plot_50_0.png differ diff --git a/_images/07_plot_57_0.png b/_images/07_plot_57_0.png new file mode 100644 index 0000000..02032fc Binary files /dev/null and b/_images/07_plot_57_0.png differ diff --git a/_images/07_plot_63_0.png b/_images/07_plot_63_0.png new file mode 100644 index 0000000..aafb115 Binary files /dev/null and b/_images/07_plot_63_0.png differ diff --git a/_images/07_plot_69_0.png b/_images/07_plot_69_0.png new file mode 100644 index 0000000..6f91966 Binary files /dev/null and b/_images/07_plot_69_0.png differ diff --git a/_images/07_plot_72_0.png b/_images/07_plot_72_0.png new file mode 100644 index 0000000..830a165 Binary files /dev/null and b/_images/07_plot_72_0.png differ diff --git a/_panels_static/panels-main.c949a650a448cc0ae9fd3441c0e17fb0.css b/_panels_static/panels-main.c949a650a448cc0ae9fd3441c0e17fb0.css new file mode 100644 index 0000000..fc14abc --- /dev/null +++ b/_panels_static/panels-main.c949a650a448cc0ae9fd3441c0e17fb0.css @@ -0,0 +1 @@ +details.dropdown .summary-title{padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.dropdown:hover{cursor:pointer}details.dropdown .summary-content{cursor:default}details.dropdown summary{list-style:none;padding:1em}details.dropdown summary .octicon.no-title{vertical-align:middle}details.dropdown[open] summary .octicon.no-title{visibility:hidden}details.dropdown summary::-webkit-details-marker{display:none}details.dropdown summary:focus{outline:none}details.dropdown summary:hover .summary-up svg,details.dropdown summary:hover .summary-down svg{opacity:1}details.dropdown .summary-up svg,details.dropdown .summary-down svg{display:block;opacity:.6}details.dropdown .summary-up,details.dropdown .summary-down{pointer-events:none;position:absolute;right:1em;top:.75em}details.dropdown[open] .summary-down{visibility:hidden}details.dropdown:not([open]) .summary-up{visibility:hidden}details.dropdown.fade-in[open] summary~*{-moz-animation:panels-fade-in .5s ease-in-out;-webkit-animation:panels-fade-in .5s ease-in-out;animation:panels-fade-in .5s ease-in-out}details.dropdown.fade-in-slide-down[open] summary~*{-moz-animation:panels-fade-in .5s ease-in-out, panels-slide-down .5s ease-in-out;-webkit-animation:panels-fade-in .5s ease-in-out, panels-slide-down .5s ease-in-out;animation:panels-fade-in .5s ease-in-out, panels-slide-down .5s ease-in-out}@keyframes panels-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes panels-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.octicon{display:inline-block;fill:currentColor;vertical-align:text-top}.tabbed-content{box-shadow:0 -.0625rem var(--tabs-color-overline),0 .0625rem var(--tabs-color-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.tabbed-content>:first-child{margin-top:0 !important}.tabbed-content>:last-child{margin-bottom:0 !important}.tabbed-content>.tabbed-set{margin:0}.tabbed-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.tabbed-set>input{opacity:0;position:absolute}.tabbed-set>input:checked+label{border-color:var(--tabs-color-label-active);color:var(--tabs-color-label-active)}.tabbed-set>input:checked+label+.tabbed-content{display:block}.tabbed-set>input:focus+label{outline-style:auto}.tabbed-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.tabbed-set>label{border-bottom:.125rem solid transparent;color:var(--tabs-color-label-inactive);cursor:pointer;font-size:var(--tabs-size-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .tabbed-set>label:hover{color:var(--tabs-color-label-active)} diff --git a/_panels_static/panels-variables.06eb56fa6e07937060861dad626602ad.css b/_panels_static/panels-variables.06eb56fa6e07937060861dad626602ad.css new file mode 100644 index 0000000..adc6166 --- /dev/null +++ b/_panels_static/panels-variables.06eb56fa6e07937060861dad626602ad.css @@ -0,0 +1,7 @@ +:root { +--tabs-color-label-active: hsla(231, 99%, 66%, 1); +--tabs-color-label-inactive: rgba(178, 206, 245, 0.62); +--tabs-color-overline: rgb(207, 236, 238); +--tabs-color-underline: rgb(207, 236, 238); +--tabs-size-label: 1rem; +} \ No newline at end of file diff --git a/_sources/01_query.ipynb b/_sources/01_query.ipynb new file mode 100644 index 0000000..fb70e3e --- /dev/null +++ b/_sources/01_query.ipynb @@ -0,0 +1,1640 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Astronomical Data in Python* is an introduction to tools and practices for working with astronomical data. Topics covered include:\n", + "\n", + "* Writing queries that select and download data from a database.\n", + "\n", + "* Using data stored in an Astropy `Table` or Pandas `DataFrame`.\n", + "\n", + "* Working with coordinates and other quantities with units.\n", + "\n", + "* Storing data in various formats.\n", + "\n", + "* Performing database join operations that combine data from multiple tables.\n", + "\n", + "* Visualizing data and preparing publication-quality figures." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As a running example, we will replicate part of the analysis in a recent paper, \"[Off the beaten path: Gaia reveals GD-1 stars outside of the main stream](https://arxiv.org/abs/1805.00425)\" by Adrian M. Price-Whelan and Ana Bonaca.\n", + "\n", + "As the abstract explains, \"Using data from the Gaia second data release combined with Pan-STARRS photometry, we present a sample of highly-probable members of the longest cold stream in the Milky Way, GD-1.\"\n", + "\n", + "GD-1 is a [stellar stream](https://en.wikipedia.org/wiki/List_of_stellar_streams), which is \"an association of stars orbiting a galaxy that was once a globular cluster or dwarf galaxy that has now been torn apart and stretched out along its orbit by tidal forces.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[This article in *Science* magazine](https://www.sciencemag.org/news/2018/10/streams-stars-reveal-galaxy-s-violent-history-and-perhaps-its-unseen-dark-matter) explains some of the background, including the process that led to the paper and an discussion of the scientific implications:\n", + "\n", + "* \"The streams are particularly useful for ... galactic archaeology --- rewinding the cosmic clock to reconstruct the assembly of the Milky Way.\"\n", + "\n", + "* \"They also are being used as exquisitely sensitive scales to measure the galaxy's mass.\"\n", + "\n", + "* \"... the streams are well-positioned to reveal the presence of dark matter ... because the streams are so fragile, theorists say, collisions with marauding clumps of dark matter could leave telltale scars, potential clues to its nature.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data\n", + "\n", + "The datasets we will work with are:\n", + " \n", + "* [Gaia](https://en.wikipedia.org/wiki/Gaia_(spacecraft)), which is \"a space observatory of the European Space Agency (ESA), launched in 2013 ... designed for astrometry: measuring the positions, distances and motions of stars with unprecedented precision\", and\n", + "\n", + "* [Pan-STARRS](https://en.wikipedia.org/wiki/Pan-STARRS), The Panoramic Survey Telescope and Rapid Response System, which is a survey designed to monitor the sky for transient objects, producing a catalog with accurate astronometry and photometry of detected sources.\n", + "\n", + "Both of these datasets are very large, which can make them challenging to work with. It might not be possible, or practical, to download the entire dataset.\n", + "One of the goals of this workshop is to provide tools for working with large datasets." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "These notebooks are meant for people who are familiar with basic Python, but not necessarily the libraries we will use, like Astropy or Pandas. If you are familiar with Python lists and dictionaries, and you know how to write a function that takes parameters and returns a value, you know enough Python to get started.\n", + "\n", + "We assume that you have some familiarity with operating systems, like the ability to use a command-line interface. But we don't assume you have any prior experience with databases.\n", + "\n", + "We assume that you are familiar with astronomy at the undergraduate level, but we will not assume specialized knowledge of the datasets or analysis methods we'll use. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Outline\n", + "\n", + "The first lesson demonstrates the steps for selecting and downloading data from the Gaia Database:\n", + "\n", + "1. First we'll make a connection to the Gaia server,\n", + "\n", + "2. We will explore information about the database and the tables it contains,\n", + "\n", + "3. We will write a query and send it to the server, and finally\n", + "\n", + "4. We will download the response from the server.\n", + "\n", + "After completing this lesson, you should be able to\n", + "\n", + "* Compose a basic query in ADQL.\n", + "\n", + "* Use queries to explore a database and its tables.\n", + "\n", + "* Use queries to download data.\n", + "\n", + "* Develop, test, and debug a query incrementally." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Query Language\n", + "\n", + "In order to select data from a database, you have to compose a query, which is like a program written in a \"query language\".\n", + "The query language we'll use is ADQL, which stands for \"Astronomical Data Query Language\".\n", + "\n", + "ADQL is a dialect of [SQL](https://en.wikipedia.org/wiki/SQL) (Structured Query Language), which is by far the most commonly used query language. Almost everything you will learn about ADQL also works in SQL.\n", + "\n", + "[The reference manual for ADQL is here](http://www.ivoa.net/documents/ADQL/20180112/PR-ADQL-2.1-20180112.html).\n", + "But you might find it easier to learn from [this ADQL Cookbook](https://www.gaia.ac.uk/data/gaia-data-release-1/adql-cookbook)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing libraries\n", + "\n", + "The library we'll use to get Gaia data is [Astroquery](https://astroquery.readthedocs.io/en/latest/).\n", + "\n", + "If you are running this notebook on Colab, you can run the following cell to install Astroquery and the other libraries we'll use.\n", + "\n", + "If you are running this notebook on your own computer, you might have to install these libraries yourself. \n", + "\n", + "If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.\n", + "\n", + "TODO: Add a link to the instructions.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# If we're running on Colab, install libraries\n", + "\n", + "import sys\n", + "IN_COLAB = 'google.colab' in sys.modules\n", + "\n", + "if IN_COLAB:\n", + " !pip install astroquery astro-gala pyia" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Connecting to Gaia\n", + "\n", + "Astroquery provides `Gaia`, which is an [object that represents a connection to the Gaia database](https://astroquery.readthedocs.io/en/latest/gaia/gaia.html).\n", + "\n", + "We can connect to the Gaia database like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: gea.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n", + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: geadata.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n" + ] + } + ], + "source": [ + "from astroquery.gaia import Gaia" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Optional detail**\n", + "\n", + "> Running this import statement has the effect of creating a [TAP+](http://www.ivoa.net/documents/TAP/) connection; TAP stands for \"Table Access Protocol\". It is a network protocol for sending queries to the database and getting back the results. We're not sure why it seems to create two connections." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Databases and Tables\n", + "\n", + "What is a database, anyway? Most generally, it can be any collection of data, but when we are talking about ADQL or SQL:\n", + "\n", + "* A database is a collection of one or more named tables.\n", + "\n", + "* Each table is a 2-D array with one or more named columns of data.\n", + "\n", + "We can use `Gaia.load_tables` to get the names of the tables in the Gaia database. With the option `only_names=True`, it loads information about the tables, called the \"metadata\", not the data itself." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO: Retrieving tables... [astroquery.utils.tap.core]\n", + "INFO: Parsing tables... [astroquery.utils.tap.core]\n", + "INFO: Done. [astroquery.utils.tap.core]\n" + ] + } + ], + "source": [ + "tables = Gaia.load_tables(only_names=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "external.external.apassdr9\n", + "external.external.gaiadr2_geometric_distance\n", + "external.external.galex_ais\n", + "external.external.ravedr5_com\n", + "external.external.ravedr5_dr5\n", + "external.external.ravedr5_gra\n", + "external.external.ravedr5_on\n", + "external.external.sdssdr13_photoprimary\n", + "external.external.skymapperdr1_master\n", + "external.external.tmass_xsc\n", + "public.public.hipparcos\n", + "public.public.hipparcos_newreduction\n", + "public.public.hubble_sc\n", + "public.public.igsl_source\n", + "public.public.igsl_source_catalog_ids\n", + "public.public.tycho2\n", + "public.public.dual\n", + "tap_config.tap_config.coord_sys\n", + "tap_config.tap_config.properties\n", + "tap_schema.tap_schema.columns\n", + "tap_schema.tap_schema.key_columns\n", + "tap_schema.tap_schema.keys\n", + "tap_schema.tap_schema.schemas\n", + "tap_schema.tap_schema.tables\n", + "gaiadr1.gaiadr1.aux_qso_icrf2_match\n", + "gaiadr1.gaiadr1.ext_phot_zero_point\n", + "gaiadr1.gaiadr1.allwise_best_neighbour\n", + "gaiadr1.gaiadr1.allwise_neighbourhood\n", + "gaiadr1.gaiadr1.gsc23_best_neighbour\n", + "gaiadr1.gaiadr1.gsc23_neighbourhood\n", + "gaiadr1.gaiadr1.ppmxl_best_neighbour\n", + "gaiadr1.gaiadr1.ppmxl_neighbourhood\n", + "gaiadr1.gaiadr1.sdss_dr9_best_neighbour\n", + "gaiadr1.gaiadr1.sdss_dr9_neighbourhood\n", + "gaiadr1.gaiadr1.tmass_best_neighbour\n", + "gaiadr1.gaiadr1.tmass_neighbourhood\n", + "gaiadr1.gaiadr1.ucac4_best_neighbour\n", + "gaiadr1.gaiadr1.ucac4_neighbourhood\n", + "gaiadr1.gaiadr1.urat1_best_neighbour\n", + "gaiadr1.gaiadr1.urat1_neighbourhood\n", + "gaiadr1.gaiadr1.cepheid\n", + "gaiadr1.gaiadr1.phot_variable_time_series_gfov\n", + "gaiadr1.gaiadr1.phot_variable_time_series_gfov_statistical_parameters\n", + "gaiadr1.gaiadr1.rrlyrae\n", + "gaiadr1.gaiadr1.variable_summary\n", + "gaiadr1.gaiadr1.allwise_original_valid\n", + "gaiadr1.gaiadr1.gsc23_original_valid\n", + "gaiadr1.gaiadr1.ppmxl_original_valid\n", + "gaiadr1.gaiadr1.sdssdr9_original_valid\n", + "gaiadr1.gaiadr1.tmass_original_valid\n", + "gaiadr1.gaiadr1.ucac4_original_valid\n", + "gaiadr1.gaiadr1.urat1_original_valid\n", + "gaiadr1.gaiadr1.gaia_source\n", + "gaiadr1.gaiadr1.tgas_source\n", + "gaiadr2.gaiadr2.aux_allwise_agn_gdr2_cross_id\n", + "gaiadr2.gaiadr2.aux_iers_gdr2_cross_id\n", + "gaiadr2.gaiadr2.aux_sso_orbit_residuals\n", + "gaiadr2.gaiadr2.aux_sso_orbits\n", + "gaiadr2.gaiadr2.dr1_neighbourhood\n", + "gaiadr2.gaiadr2.allwise_best_neighbour\n", + "gaiadr2.gaiadr2.allwise_neighbourhood\n", + "gaiadr2.gaiadr2.apassdr9_best_neighbour\n", + "gaiadr2.gaiadr2.apassdr9_neighbourhood\n", + "gaiadr2.gaiadr2.gsc23_best_neighbour\n", + "gaiadr2.gaiadr2.gsc23_neighbourhood\n", + "gaiadr2.gaiadr2.hipparcos2_best_neighbour\n", + "gaiadr2.gaiadr2.hipparcos2_neighbourhood\n", + "gaiadr2.gaiadr2.panstarrs1_best_neighbour\n", + "gaiadr2.gaiadr2.panstarrs1_neighbourhood\n", + "gaiadr2.gaiadr2.ppmxl_best_neighbour\n", + "gaiadr2.gaiadr2.ppmxl_neighbourhood\n", + "gaiadr2.gaiadr2.ravedr5_best_neighbour\n", + "gaiadr2.gaiadr2.ravedr5_neighbourhood\n", + "gaiadr2.gaiadr2.sdssdr9_best_neighbour\n", + "gaiadr2.gaiadr2.sdssdr9_neighbourhood\n", + "gaiadr2.gaiadr2.tmass_best_neighbour\n", + "gaiadr2.gaiadr2.tmass_neighbourhood\n", + "gaiadr2.gaiadr2.tycho2_best_neighbour\n", + "gaiadr2.gaiadr2.tycho2_neighbourhood\n", + "gaiadr2.gaiadr2.urat1_best_neighbour\n", + "gaiadr2.gaiadr2.urat1_neighbourhood\n", + "gaiadr2.gaiadr2.sso_observation\n", + "gaiadr2.gaiadr2.sso_source\n", + "gaiadr2.gaiadr2.vari_cepheid\n", + "gaiadr2.gaiadr2.vari_classifier_class_definition\n", + "gaiadr2.gaiadr2.vari_classifier_definition\n", + "gaiadr2.gaiadr2.vari_classifier_result\n", + "gaiadr2.gaiadr2.vari_long_period_variable\n", + "gaiadr2.gaiadr2.vari_rotation_modulation\n", + "gaiadr2.gaiadr2.vari_rrlyrae\n", + "gaiadr2.gaiadr2.vari_short_timescale\n", + "gaiadr2.gaiadr2.vari_time_series_statistics\n", + "gaiadr2.gaiadr2.panstarrs1_original_valid\n", + "gaiadr2.gaiadr2.gaia_source\n", + "gaiadr2.gaiadr2.ruwe\n" + ] + } + ], + "source": [ + "for table in (tables):\n", + " print(table.get_qualified_name())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So that's a lot of tables. The ones we'll use are:\n", + "\n", + "* `gaiadr2.gaia_source`, which contains Gaia data from [data release 2](https://www.cosmos.esa.int/web/gaia/data-release-2),\n", + "\n", + "* `gaiadr2.panstarrs1_original_valid`, which contains the photometry data we'll use from PanSTARRS, and\n", + "\n", + "* `gaiadr2.panstarrs1_best_neighbour`, which we'll use to cross-match each star observed by Gaia with the same star observed by PanSTARRS.\n", + "\n", + "We can use `load_table` (not `load_tables`) to get the metadata for a single table. The name of this function is misleading, because it only downloads metadata. " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Retrieving table 'gaiadr2.gaia_source'\n", + "Parsing table 'gaiadr2.gaia_source'...\n", + "Done.\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "meta = Gaia.load_table('gaiadr2.gaia_source')\n", + "meta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jupyter shows that the result is an object of type `TapTableMeta`, but it does not display the contents.\n", + "\n", + "To see the metadata, we have to print the object." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TAP Table name: gaiadr2.gaiadr2.gaia_source\n", + "Description: This table has an entry for every Gaia observed source as listed in the\n", + "Main Database accumulating catalogue version from which the catalogue\n", + "release has been generated. It contains the basic source parameters,\n", + "that is only final data (no epoch data) and no spectra (neither final\n", + "nor epoch).\n", + "Num. columns: 96\n" + ] + } + ], + "source": [ + "print(meta)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice one gotcha: in the list of table names, this table appears as `gaiadr2.gaiadr2.gaia_source`, but when we load the metadata, we refer to it as `gaiadr2.gaia_source`.\n", + "\n", + "**Exercise:** Go back and try\n", + "\n", + "```\n", + "meta = Gaia.load_table('gaiadr2.gaiadr2.gaia_source')\n", + "```\n", + "\n", + "What happens? Is the error message helpful? If you had not made this error deliberately, would you have been able to figure it out?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Columns\n", + "\n", + "The following loop prints the names of the columns in the table." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "solution_id\n", + "designation\n", + "source_id\n", + "random_index\n", + "ref_epoch\n", + "ra\n", + "ra_error\n", + "dec\n", + "dec_error\n", + "parallax\n", + "parallax_error\n", + "parallax_over_error\n", + "pmra\n", + "pmra_error\n", + "pmdec\n", + "pmdec_error\n", + "ra_dec_corr\n", + "ra_parallax_corr\n", + "ra_pmra_corr\n", + "ra_pmdec_corr\n", + "dec_parallax_corr\n", + "dec_pmra_corr\n", + "dec_pmdec_corr\n", + "parallax_pmra_corr\n", + "parallax_pmdec_corr\n", + "pmra_pmdec_corr\n", + "astrometric_n_obs_al\n", + "astrometric_n_obs_ac\n", + "astrometric_n_good_obs_al\n", + "astrometric_n_bad_obs_al\n", + "astrometric_gof_al\n", + "astrometric_chi2_al\n", + "astrometric_excess_noise\n", + "astrometric_excess_noise_sig\n", + "astrometric_params_solved\n", + "astrometric_primary_flag\n", + "astrometric_weight_al\n", + "astrometric_pseudo_colour\n", + "astrometric_pseudo_colour_error\n", + "mean_varpi_factor_al\n", + "astrometric_matched_observations\n", + "visibility_periods_used\n", + "astrometric_sigma5d_max\n", + "frame_rotator_object_type\n", + "matched_observations\n", + "duplicated_source\n", + "phot_g_n_obs\n", + "phot_g_mean_flux\n", + "phot_g_mean_flux_error\n", + "phot_g_mean_flux_over_error\n", + "phot_g_mean_mag\n", + "phot_bp_n_obs\n", + "phot_bp_mean_flux\n", + "phot_bp_mean_flux_error\n", + "phot_bp_mean_flux_over_error\n", + "phot_bp_mean_mag\n", + "phot_rp_n_obs\n", + "phot_rp_mean_flux\n", + "phot_rp_mean_flux_error\n", + "phot_rp_mean_flux_over_error\n", + "phot_rp_mean_mag\n", + "phot_bp_rp_excess_factor\n", + "phot_proc_mode\n", + "bp_rp\n", + "bp_g\n", + "g_rp\n", + "radial_velocity\n", + "radial_velocity_error\n", + "rv_nb_transits\n", + "rv_template_teff\n", + "rv_template_logg\n", + "rv_template_fe_h\n", + "phot_variable_flag\n", + "l\n", + "b\n", + "ecl_lon\n", + "ecl_lat\n", + "priam_flags\n", + "teff_val\n", + "teff_percentile_lower\n", + "teff_percentile_upper\n", + "a_g_val\n", + "a_g_percentile_lower\n", + "a_g_percentile_upper\n", + "e_bp_min_rp_val\n", + "e_bp_min_rp_percentile_lower\n", + "e_bp_min_rp_percentile_upper\n", + "flame_flags\n", + "radius_val\n", + "radius_percentile_lower\n", + "radius_percentile_upper\n", + "lum_val\n", + "lum_percentile_lower\n", + "lum_percentile_upper\n", + "datalink_url\n", + "epoch_photometry_url\n" + ] + } + ], + "source": [ + "for column in meta.columns:\n", + " print(column.name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can probably guess what many of these columns are by looking at the names, but you should resist the temptation to guess.\n", + "To find out what the columns mean, [read the documentation](https://gea.esac.esa.int/archive/documentation/GDR2/Gaia_archive/chap_datamodel/sec_dm_main_tables/ssec_dm_gaia_source.html).\n", + "\n", + "If you want to know what can go wrong when you don't read the documentation, [you might like this article](https://www.vox.com/future-perfect/2019/6/4/18650969/married-women-miserable-fake-paul-dolan-happiness)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** One of the other tables we'll use is `gaiadr2.gaiadr2.panstarrs1_original_valid`. Use `load_table` to get the metadata for this table. How many columns are there and what are their names?\n", + "\n", + "Hint: Remember the gotcha we mentioned earlier." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Retrieving table 'gaiadr2.panstarrs1_original_valid'\n", + "Parsing table 'gaiadr2.panstarrs1_original_valid'...\n", + "Done.\n", + "TAP Table name: gaiadr2.gaiadr2.panstarrs1_original_valid\n", + "Description: The Panoramic Survey Telescope and Rapid Response System (Pan-STARRS) is\n", + "a system for wide-field astronomical imaging developed and operated by\n", + "the Institute for Astronomy at the University of Hawaii. Pan-STARRS1\n", + "(PS1) is the first part of Pan-STARRS to be completed and is the basis\n", + "for Data Release 1 (DR1). The PS1 survey used a 1.8 meter telescope and\n", + "its 1.4 Gigapixel camera to image the sky in five broadband filters (g,\n", + "r, i, z, y).\n", + "\n", + "The current table contains a filtered subsample of the 10 723 304 629\n", + "entries listed in the original ObjectThin table.\n", + "We used only ObjectThin and MeanObject tables to extract\n", + "panstarrs1OriginalValid table, this means that objects detected only in\n", + "stack images are not included here. The main reason for us to avoid the\n", + "use of objects detected in stack images is that their astrometry is not\n", + "as good as the mean objects astrometry: “The stack positions (raStack,\n", + "decStack) have considerably larger systematic astrometric errors than\n", + "the mean epoch positions (raMean, decMean).” The astrometry for the\n", + "MeanObject positions uses Gaia DR1 as a reference catalog, while the\n", + "stack positions use 2MASS as a reference catalog.\n", + "\n", + "In details, we filtered out all objects where:\n", + "\n", + "- nDetections = 1\n", + "\n", + "- no good quality data in Pan-STARRS, objInfoFlag 33554432 not set\n", + "\n", + "- mean astrometry could not be measured, objInfoFlag 524288 set\n", + "\n", + "- stack position used for mean astrometry, objInfoFlag 1048576 set\n", + "\n", + "- error on all magnitudes equal to 0 or to -999;\n", + "\n", + "- all magnitudes set to -999;\n", + "\n", + "- error on RA or DEC greater than 1 arcsec.\n", + "\n", + "The number of objects in panstarrs1OriginalValid is 2 264 263 282.\n", + "\n", + "The panstarrs1OriginalValid table contains only a subset of the columns\n", + "available in the combined ObjectThin and MeanObject tables. A\n", + "description of the original ObjectThin and MeanObjects tables can be\n", + "found at:\n", + "https://outerspace.stsci.edu/display/PANSTARRS/PS1+Database+object+and+detection+tables\n", + "\n", + "Download:\n", + "http://mastweb.stsci.edu/ps1casjobs/home.aspx\n", + "Documentation:\n", + "https://outerspace.stsci.edu/display/PANSTARRS\n", + "http://pswww.ifa.hawaii.edu/pswww/\n", + "References:\n", + "The Pan-STARRS1 Surveys, Chambers, K.C., et al. 2016, arXiv:1612.05560\n", + "Pan-STARRS Data Processing System, Magnier, E. A., et al. 2016,\n", + "arXiv:1612.05240\n", + "Pan-STARRS Pixel Processing: Detrending, Warping, Stacking, Waters, C.\n", + "Z., et al. 2016, arXiv:1612.05245\n", + "Pan-STARRS Pixel Analysis: Source Detection and Characterization,\n", + "Magnier, E. A., et al. 2016, arXiv:1612.05244\n", + "Pan-STARRS Photometric and Astrometric Calibration, Magnier, E. A., et\n", + "al. 2016, arXiv:1612.05242\n", + "The Pan-STARRS1 Database and Data Products, Flewelling, H. A., et al.\n", + "2016, arXiv:1612.05243\n", + "\n", + "Catalogue curator:\n", + "SSDC - ASI Space Science Data Center\n", + "https://www.ssdc.asi.it/\n", + "Num. columns: 26\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "meta2 = Gaia.load_table('gaiadr2.panstarrs1_original_valid')\n", + "print(meta2)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "obj_name\n", + "obj_id\n", + "ra\n", + "dec\n", + "ra_error\n", + "dec_error\n", + "epoch_mean\n", + "g_mean_psf_mag\n", + "g_mean_psf_mag_error\n", + "g_flags\n", + "r_mean_psf_mag\n", + "r_mean_psf_mag_error\n", + "r_flags\n", + "i_mean_psf_mag\n", + "i_mean_psf_mag_error\n", + "i_flags\n", + "z_mean_psf_mag\n", + "z_mean_psf_mag_error\n", + "z_flags\n", + "y_mean_psf_mag\n", + "y_mean_psf_mag_error\n", + "y_flags\n", + "n_detections\n", + "zone_id\n", + "obj_info_flag\n", + "quality_flag\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "for column in meta2.columns:\n", + " print(column.name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Writing queries\n", + "\n", + "By now you might be wondering how we actually download the data. With tables this big, you generally don't. Instead, you use queries to select only the data you want.\n", + "\n", + "A query is a string written in a query language like SQL; for the Gaia database, the query language is a dialect of SQL called ADQL.\n", + "\n", + "Here's an example of an ADQL query." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "query1 = \"\"\"SELECT \n", + "TOP 10\n", + "source_id, ref_epoch, ra, dec, parallax \n", + "FROM gaiadr2.gaia_source\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Python note:** We use a [triple-quoted string](https://docs.python.org/3/tutorial/introduction.html#strings) here so we can include line breaks in the query, which makes it easier to read.\n", + "\n", + "The words in uppercase are ADQL keywords:\n", + "\n", + "* `SELECT` indicates that we are selecting data (as opposed to adding or modifying data).\n", + "\n", + "* `TOP` indicates that we only want the first 10 rows of the table, which is useful for testing a query before asking for all of the data.\n", + "\n", + "* `FROM` specifies which table we want data from.\n", + "\n", + "The third line is a list of column names, indicating which columns we want. \n", + "\n", + "In this example, the keywords are capitalized and the column names are lowercase. This is a common style, but it is not required. ADQL and SQL are not case-sensitive." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To run this query, we use the `Gaia` object, which represents our connection to the Gaia database, and invoke `launch_job`:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "job1 = Gaia.launch_job(query1)\n", + "job1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is an object that represents the job running on a Gaia server.\n", + "\n", + "If you print it, it displays metadata for the forthcoming table." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " name dtype unit description \n", + "--------- ------- ---- ------------------------------------------------------------------\n", + "source_id int64 Unique source identifier (unique within a particular Data Release)\n", + "ref_epoch float64 yr Reference epoch\n", + " ra float64 deg Right ascension\n", + " dec float64 deg Declination\n", + " parallax float64 mas Parallax\n", + "Jobid: None\n", + "Phase: COMPLETED\n", + "Owner: None\n", + "Output file: sync_20201005090721.xml.gz\n", + "Results: None\n" + ] + } + ], + "source": [ + "print(job1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Don't worry about `Results: None`. That does not actually mean there are no results.\n", + "\n", + "However, `Phase: COMPLETED` indicates that the job is complete, so we can get the results like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.table.table.Table" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results1 = job1.get_results()\n", + "type(results1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Optional detail:** Why is `table` repeated three times? The first is the name of the module, the second is the name of the submodule, and the third is the name of the class. Most of the time we only care about the last one. It's like the Linnean name for gorilla, which is *Gorilla Gorilla Gorilla*." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is an [Astropy Table](https://docs.astropy.org/en/stable/table/), which is similar to a table in an SQL database except:\n", + "\n", + "* SQL databases are stored on disk drives, so they are persistent; that is, they \"survive\" even if you turn off the computer. An Astropy `Table` is stored in memory; it disappears when you turn off the computer (or shut down this Jupyter notebook).\n", + "\n", + "* SQL databases are designed to process queries. An Astropy `Table` can perform some query-like operations, like selecting columns and rows. But these operations use Python syntax, not SQL.\n", + "\n", + "Jupyter knows how to display the contents of a `Table`." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Table length=10\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_idref_epochradecparallax
yrdegdegmas
int64float64float64float64float64
45307383617937696002015.5281.5672536244872520.406821174303780.9785380604519425
45307526511350812162015.5281.086156535525720.5233504963518460.2674800612552977
45307433439514055682015.5281.3711441829917720.474147574053124-0.43911323550176806
45307550606271623682015.5281.267623626829920.5585239223461581.1422630184554958
45307468443413159682015.5281.137043174954120.3778523888981841.0092247424630945
45307684566150264322015.5281.872092143634720.31829694530366-0.06900136127674149
45307635131191372802015.5281.921180886411620.209568295785240.1266016679823622
45307363646185392642015.5281.491347561327420.3465790413276930.3894019486060072
45307359523051777282015.5281.408554916570420.3110309037199280.2041189982608354
45307512810560226562015.5281.058532837763820.4603095562147530.10294642821734962
" + ], + "text/plain": [ + "\n", + " source_id ref_epoch ... dec parallax \n", + " yr ... deg mas \n", + " int64 float64 ... float64 float64 \n", + "------------------- --------- ... ------------------ --------------------\n", + "4530738361793769600 2015.5 ... 20.40682117430378 0.9785380604519425\n", + "4530752651135081216 2015.5 ... 20.523350496351846 0.2674800612552977\n", + "4530743343951405568 2015.5 ... 20.474147574053124 -0.43911323550176806\n", + "4530755060627162368 2015.5 ... 20.558523922346158 1.1422630184554958\n", + "4530746844341315968 2015.5 ... 20.377852388898184 1.0092247424630945\n", + "4530768456615026432 2015.5 ... 20.31829694530366 -0.06900136127674149\n", + "4530763513119137280 2015.5 ... 20.20956829578524 0.1266016679823622\n", + "4530736364618539264 2015.5 ... 20.346579041327693 0.3894019486060072\n", + "4530735952305177728 2015.5 ... 20.311030903719928 0.2041189982608354\n", + "4530751281056022656 2015.5 ... 20.460309556214753 0.10294642821734962" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each column has a name, units, and a data type.\n", + "\n", + "For example, the units of `ra` and `dec` are degrees, and their data type is `float64`, which is a 64-bit floating-point number, used to store measurements with a fraction part.\n", + "\n", + "This information comes from the Gaia database, and has been stored in the Astropy `Table` by Astroquery." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Read [the documentation of this table](https://gea.esac.esa.int/archive/documentation/GDR2/Gaia_archive/chap_datamodel/sec_dm_main_tables/ssec_dm_gaia_source.html) and choose a column that looks interesting to you. Add the column name to the query and run it again. What are the units of the column you selected? What is its data type?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Asynchronous queries\n", + "\n", + "`launch_job` asks the server to run the job \"synchronously\", which normally means it runs immediately. But synchronous jobs are limited to 2000 rows. For queries that return more rows, you should run \"asynchronously\", which mean they might take longer to get started.\n", + "\n", + "If you are not sure how many rows a query will return, you can use the SQL command `COUNT` to find out how many rows are in the result without actually returning them. We'll see an example of this later.\n", + "\n", + "The results of an asynchronous query are stored in a file on the server, so you can start a query and come back later to get the results.\n", + "\n", + "For anonymous users, files are kept for three days.\n", + "\n", + "As an example, let's try a query that's similar to `query1`, with two changes:\n", + "\n", + "* It selects the first 3000 rows, so it is bigger than we should run synchronously.\n", + "\n", + "* It uses a new keyword, `WHERE`." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "query2 = \"\"\"SELECT TOP 3000\n", + "source_id, ref_epoch, ra, dec, parallax\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A `WHERE` clause indicates which rows we want; in this case, the query selects only rows \"where\" `parallax` is less than 1. This has the effect of selecting stars with relatively low parallax, which are farther away. We'll use this clause to exclude nearby stars that are unlikely to be part of GD-1.\n", + "\n", + "`WHERE` is one of the most common clauses in ADQL/SQL, and one of the most useful, because it allows us to select only the rows we need from the database.\n", + "\n", + "We use `launch_job_async` to submit an asynchronous query." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO: Query finished. [astroquery.utils.tap.core]\n", + "
\n", + " name dtype unit description \n", + "--------- ------- ---- ------------------------------------------------------------------\n", + "source_id int64 Unique source identifier (unique within a particular Data Release)\n", + "ref_epoch float64 yr Reference epoch\n", + " ra float64 deg Right ascension\n", + " dec float64 deg Declination\n", + " parallax float64 mas Parallax\n", + "Jobid: 1601903242219O\n", + "Phase: COMPLETED\n", + "Owner: None\n", + "Output file: async_20201005090722.vot\n", + "Results: None\n" + ] + } + ], + "source": [ + "job2 = Gaia.launch_job_async(query2)\n", + "print(job2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here are the results." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Table length=3000\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_idref_epochradecparallax
yrdegdegmas
int64float64float64float64float64
45307383617937696002015.5281.5672536244872520.406821174303780.9785380604519425
45307526511350812162015.5281.086156535525720.5233504963518460.2674800612552977
45307433439514055682015.5281.3711441829917720.474147574053124-0.43911323550176806
45307684566150264322015.5281.872092143634720.31829694530366-0.06900136127674149
45307635131191372802015.5281.921180886411620.209568295785240.1266016679823622
45307363646185392642015.5281.491347561327420.3465790413276930.3894019486060072
45307359523051777282015.5281.408554916570420.3110309037199280.2041189982608354
45307512810560226562015.5281.058532837763820.4603095562147530.10294642821734962
45307409387744093442015.5281.376256953641620.4361400589412060.9242670062090182
...............
44677109150118026242015.5269.96809693073471.14290850381608820.42361471245557913
44677065513286795522015.5270.0331645898811.05657473236899270.922888231734588
44677122550373000962015.5270.77247179230470.6581664892880896-2.669179465293931
44677350011817617922015.5270.36286062483080.89470793235991240.6117399163086398
44677371014219166722015.5270.51108346614440.9806225910160181-0.39818224846127004
44677075477573274882015.5269.887462805949271.02127599401369620.7741412301054209
44677327720945730562015.5270.559971827601260.9037072088489417-1.7920417800164183
44677323554910877442015.5270.67307907024910.9197224705139885-0.3464446494840354
44677170997669445122015.5270.576671731208250.7262776590095680.05443955111134051
44677190582657812482015.5270.72480529715140.82055519217827850.3733943917490343
" + ], + "text/plain": [ + "\n", + " source_id ref_epoch ... dec parallax \n", + " yr ... deg mas \n", + " int64 float64 ... float64 float64 \n", + "------------------- --------- ... ------------------ --------------------\n", + "4530738361793769600 2015.5 ... 20.40682117430378 0.9785380604519425\n", + "4530752651135081216 2015.5 ... 20.523350496351846 0.2674800612552977\n", + "4530743343951405568 2015.5 ... 20.474147574053124 -0.43911323550176806\n", + "4530768456615026432 2015.5 ... 20.31829694530366 -0.06900136127674149\n", + "4530763513119137280 2015.5 ... 20.20956829578524 0.1266016679823622\n", + "4530736364618539264 2015.5 ... 20.346579041327693 0.3894019486060072\n", + "4530735952305177728 2015.5 ... 20.311030903719928 0.2041189982608354\n", + "4530751281056022656 2015.5 ... 20.460309556214753 0.10294642821734962\n", + "4530740938774409344 2015.5 ... 20.436140058941206 0.9242670062090182\n", + " ... ... ... ... ...\n", + "4467710915011802624 2015.5 ... 1.1429085038160882 0.42361471245557913\n", + "4467706551328679552 2015.5 ... 1.0565747323689927 0.922888231734588\n", + "4467712255037300096 2015.5 ... 0.6581664892880896 -2.669179465293931\n", + "4467735001181761792 2015.5 ... 0.8947079323599124 0.6117399163086398\n", + "4467737101421916672 2015.5 ... 0.9806225910160181 -0.39818224846127004\n", + "4467707547757327488 2015.5 ... 1.0212759940136962 0.7741412301054209\n", + "4467732772094573056 2015.5 ... 0.9037072088489417 -1.7920417800164183\n", + "4467732355491087744 2015.5 ... 0.9197224705139885 -0.3464446494840354\n", + "4467717099766944512 2015.5 ... 0.726277659009568 0.05443955111134051\n", + "4467719058265781248 2015.5 ... 0.8205551921782785 0.3733943917490343" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results2 = job2.get_results()\n", + "results2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You might notice that some values of `parallax` are negative. As [this FAQ explains](https://www.cosmos.esa.int/web/gaia/archive-tips#negative%20parallax), \"Negative parallaxes are caused by errors in the observations.\" Negative parallaxes have \"no physical meaning,\" but they can be a \"useful diagnostic on the quality of the astrometric solution.\"\n", + "\n", + "Later we will see an example where we use `parallax` and `parallax_error` to identify stars where the distance estimate is likely to be inaccurate." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** The clauses in a query have to be in the right order. Go back and change the order of the clauses in `query2` and run it again. \n", + "\n", + "The query should fail, but notice that you don't get much useful debugging information. \n", + "\n", + "For this reason, developing and debugging ADQL queries can be really hard. A few suggestions that might help:\n", + "\n", + "* Whenever possible, start with a working query, either an example you find online or a query you have used in the past.\n", + "\n", + "* Make small changes and test each change before you continue.\n", + "\n", + "* While you are debugging, use `TOP` to limit the number of rows in the result. That will make each attempt run faster, which reduces your testing time. \n", + "\n", + "* Launching test queries synchronously might make them start faster, too." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Operators\n", + "\n", + "In a `WHERE` clause, you can use any of the [SQL comparison operators](https://www.w3schools.com/sql/sql_operators.asp); here are the most common ones:\n", + "\n", + "| Symbol | Operation\n", + "|--------| :---\n", + "| `>` | greater than\n", + "| `<` | less than\n", + "| `>=` | greater than or equal\n", + "| `<=` | less than or equal\n", + "| `=` | equal\n", + "| `!=` or `<>` | not equal\n", + "\n", + "Most of these are the same as Python, but some are not. In particular, notice that the equality operator is `=`, not `==`.\n", + "Be careful to keep your Python out of your ADQL!\n", + "\n", + "You can combine comparisons using the logical operators:\n", + "\n", + "* AND: true if both comparisons are true\n", + "* OR: true if either or both comparisons are true\n", + "\n", + "Finally, you can use `NOT` to invert the result of a comparison. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** [Read about SQL operators here](https://www.w3schools.com/sql/sql_operators.asp) and then modify the previous query to select rows where `bp_rp` is between `-0.75` and `2`.\n", + "\n", + "You can [read about this variable here](https://gea.esac.esa.int/archive/documentation/GDR2/Gaia_archive/chap_datamodel/sec_dm_main_tables/ssec_dm_gaia_source.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "# This is what most people will probably do\n", + "\n", + "query = \"\"\"SELECT TOP 10\n", + "source_id, ref_epoch, ra, dec, parallax\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1 \n", + " AND bp_rp > -0.75 AND bp_rp < 2\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "# But if someone notices the BETWEEN operator, \n", + "# they might do this\n", + "\n", + "query = \"\"\"SELECT TOP 10\n", + "source_id, ref_epoch, ra, dec, parallax\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1 \n", + " AND bp_rp BETWEEN -0.75 AND 2\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This [Hertzsprung-Russell diagram](https://sci.esa.int/web/gaia/-/60198-gaia-hertzsprung-russell-diagram) shows the BP-RP color and luminosity of stars in the Gaia catalog.\n", + "\n", + "Selecting stars with `bp-rp` less than 2 excludes many [class M dwarf stars](https://xkcd.com/2360/), which are low temperature, low luminosity. A star like that at GD-1's distance would be hard to detect, so if it is detected, it it more likely to be in the foreground." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cleaning up\n", + "\n", + "Asynchronous jobs have a `jobid`." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(None, '1601903242219O')" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "job1.jobid, job2.jobid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Which you can use to remove the job from the server." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Removed jobs: '['1601903242219O']'.\n" + ] + } + ], + "source": [ + "Gaia.remove_jobs([job2.jobid])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you don't remove it job from the server, it will be removed eventually, so don't feel too bad if you don't clean up after yourself." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Formatting queries\n", + "\n", + "So far the queries have been string \"literals\", meaning that the entire string is part of the program.\n", + "But writing queries yourself can be slow, repetitive, and error-prone.\n", + "\n", + "It is often a good idea to write Python code that assembles a query for you. One useful tool for that is the [string `format` method](https://www.w3schools.com/python/ref_string_format.asp).\n", + "\n", + "As an example, we'll divide the previous query into two parts; a list of column names and a \"base\" for the query that contains everything except the column names.\n", + "\n", + "Here's the list of columns we'll select. " + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "columns = 'source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's the base; it's a string that contains at least one format specifier in curly brackets (braces)." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "query3_base = \"\"\"SELECT TOP 10 \n", + "{columns}\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This base query contains one format specifier, `{columns}`, which is a placeholder for the list of column names we will provide.\n", + "\n", + "To assemble the query, we invoke `format` on the base string and provide a keyword argument that assigns a value to `columns`." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "query3 = query3_base.format(columns=columns)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a string with line breaks. If you display it, the line breaks appear as `\\n`." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'SELECT TOP 10 \\nsource_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\\nFROM gaiadr2.gaia_source\\nWHERE parallax < 1\\n AND bp_rp BETWEEN -0.75 AND 2\\n'" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "query3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But if you print it, the line breaks appear as... line breaks." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SELECT TOP 10 \n", + "source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2\n", + "\n" + ] + } + ], + "source": [ + "print(query3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that the format specifier has been replaced with the value of `columns`.\n", + "\n", + "Let's run it and see if it works:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "
\n", + " name dtype unit description n_bad\n", + "--------------- ------- -------- ------------------------------------------------------------------ -----\n", + " source_id int64 Unique source identifier (unique within a particular Data Release) 0\n", + " ra float64 deg Right ascension 0\n", + " dec float64 deg Declination 0\n", + " pmra float64 mas / yr Proper motion in right ascension direction 0\n", + " pmdec float64 mas / yr Proper motion in declination direction 0\n", + " parallax float64 mas Parallax 0\n", + " parallax_error float64 mas Standard error of parallax 0\n", + "radial_velocity float64 km / s Radial velocity 10\n", + "Jobid: None\n", + "Phase: COMPLETED\n", + "Owner: None\n", + "Output file: sync_20201005090726.xml.gz\n", + "Results: None\n" + ] + } + ], + "source": [ + "job3 = Gaia.launch_job(query3)\n", + "print(job3)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Table length=10\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_idradecpmrapmdecparallaxparallax_errorradial_velocity
degdegmas / yrmas / yrmasmaskm / s
int64float64float64float64float64float64float64float64
4467710915011802624269.96809693073471.14290850381608822.0233280236600626-2.56924278755102660.423614712455579130.470352406647465--
4467706551328679552270.0331645898811.0565747323689927-3.414829591355289-3.84372158574957370.9228882317345880.927008559859825--
4467712255037300096270.77247179230470.6581664892880896-3.5620173752896025-6.595792323153987-2.6691794652939310.9719742773203504--
4467735001181761792270.36286062483080.89470793235991242.13070799264892050.88267277109107120.61173991630863980.509812721702093--
4467737101421916672270.51108346614440.98062259101601810.17532366511560785-5.113270239706202-0.398182248461270040.7549581886719651--
4467707547757327488269.887462805949271.0212759940136962-2.6382230817672987-3.7077765320492870.77414123010542090.3022057897812064--
4467732355491087744270.67307907024910.9197224705139885-2.2735991502653037-11.864952855984358-0.34644464948403540.4937921513912002--
4467717099766944512270.576671731208250.726277659009568-3.4598362614808367-4.6014268933659210.054439551111340510.8867339293525688--
4467719058265781248270.72480529715140.8205551921782785-3.255079498426542-9.2492850691110850.37339439174903430.390952370410666--
4467722326741572352270.874312918885040.85955659758691580.106963983518598261.2035993780158853-0.118509434328643730.1660452431882023--
" + ], + "text/plain": [ + "\n", + " source_id ra ... parallax_error radial_velocity\n", + " deg ... mas km / s \n", + " int64 float64 ... float64 float64 \n", + "------------------- ------------------ ... ------------------ ---------------\n", + "4467710915011802624 269.9680969307347 ... 0.470352406647465 --\n", + "4467706551328679552 270.033164589881 ... 0.927008559859825 --\n", + "4467712255037300096 270.7724717923047 ... 0.9719742773203504 --\n", + "4467735001181761792 270.3628606248308 ... 0.509812721702093 --\n", + "4467737101421916672 270.5110834661444 ... 0.7549581886719651 --\n", + "4467707547757327488 269.88746280594927 ... 0.3022057897812064 --\n", + "4467732355491087744 270.6730790702491 ... 0.4937921513912002 --\n", + "4467717099766944512 270.57667173120825 ... 0.8867339293525688 --\n", + "4467719058265781248 270.7248052971514 ... 0.390952370410666 --\n", + "4467722326741572352 270.87431291888504 ... 0.1660452431882023 --" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results3 = job3.get_results()\n", + "results3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Good so far." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** This query always selects sources with `parallax` less than 1. But suppose you want to take that upper bound as an input.\n", + "\n", + "Modify `query3_base` to replace `1` with a format specifier like `{max_parallax}`. Now, when you call `format`, add a keyword argument that assigns a value to `max_parallax`, and confirm that the format specifier gets replaced with the value you provide." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "query4_base = \"\"\"SELECT TOP 10\n", + "{columns}\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < {max_parallax} AND \n", + "bp_rp BETWEEN -0.75 AND 2\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SELECT TOP 10\n", + "source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 0.5 AND \n", + "bp_rp BETWEEN -0.75 AND 2\n", + "\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "query4 = query4_base.format(columns=columns,\n", + " max_parallax=0.5)\n", + "print(query)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Style note:** You might notice that the variable names in this notebook are numbered, like `query1`, `query2`, etc. \n", + "\n", + "The advantage of this style is that it isolates each section of the notebook from the others, so if you go back and run the cells out of order, it's less likely that you will get unexpected interactions.\n", + "\n", + "A drawback of this style is that it can be a nuisance to update the notebook if you add, remove, or reorder a section.\n", + "\n", + "What do you think of this choice? Are there alternatives you prefer?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "This notebook demonstrates the following steps:\n", + "\n", + "1. Making a connection to the Gaia server,\n", + "\n", + "2. Exploring information about the database and the tables it contains,\n", + "\n", + "3. Writing a query and sending it to the server, and finally\n", + "\n", + "4. Downloading the response from the server as an Astropy `Table`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Best practices\n", + "\n", + "* If you can't download an entire dataset (or it's not practical) use queries to select the data you need.\n", + "\n", + "* Read the metadata and the documentation to make sure you understand the tables, their columns, and what they mean.\n", + "\n", + "* Develop queries incrementally: start with something simple, test it, and add a little bit at a time.\n", + "\n", + "* Use ADQL features like `TOP` and `COUNT` to test before you run a query that might return a lot of data.\n", + "\n", + "* If you know your query will return fewer than 3000 rows, you can run it synchronously, which might complete faster (but it doesn't seem to make much difference). If it might return more than 3000 rows, you should run it asynchronously.\n", + "\n", + "* ADQL and SQL are not case-sensitive, so you don't have to capitalize the keywords, but you should.\n", + "\n", + "* ADQL and SQL don't require you to break a query into multiple lines, but you should.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jupyter notebooks can be good for developing and testing code, but they have some drawbacks. In particular, if you run the cells out of order, you might find that variables don't have the values you expect.\n", + "\n", + "There are a few things you can do to mitigate these problems:\n", + "\n", + "* Make each section of the notebook self-contained. Try not to use the same variable name in more than one section.\n", + "\n", + "* Keep notebooks short. Look for places where you can break your analysis into phases with one notebook per phase." + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/_sources/02_coords.ipynb b/_sources/02_coords.ipynb new file mode 100644 index 0000000..4e4966e --- /dev/null +++ b/_sources/02_coords.ipynb @@ -0,0 +1,1972 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 2\n", + "\n", + "This is the second in a series of notebooks related to astronomy data.\n", + "\n", + "As a running example, we are replicating parts of the analysis in a recent paper, \"[Off the beaten path: Gaia reveals GD-1 stars outside of the main stream](https://arxiv.org/abs/1805.00425)\" by Adrian M. Price-Whelan and Ana Bonaca.\n", + "\n", + "In the first notebook, we wrote ADQL queries and used them to select and download data from the Gaia server.\n", + "\n", + "In this notebook, we'll pick up where we left off and write a query to select stars from the region of the sky where we expect GD-1 to be." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Outline\n", + "\n", + "We'll start with an example that does a \"cone search\"; that is, it selects stars that appear in a circular region of the sky.\n", + "\n", + "Then, to select stars in the vicinity of GD-1, we'll:\n", + "\n", + "* Use `Quantity` objects to represent measurements with units.\n", + "\n", + "* Use the `Gala` library to convert coordinates from one frame to another.\n", + "\n", + "* Use the ADQL keywords `POLYGON`, `CONTAINS`, and `POINT` to select stars that fall within a polygonal region.\n", + "\n", + "* Submit a query and download the results.\n", + "\n", + "* Store the results in a FITS file.\n", + "\n", + "After completing this lesson, you should be able to\n", + "\n", + "* Use Python string formatting to compose more complex ADQL queries.\n", + "\n", + "* Work with coordinates and other quantities that have units.\n", + "\n", + "* Download the results of a query and store them in a file." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing libraries\n", + "\n", + "If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we'll use.\n", + "\n", + "If you are running this notebook on your own computer, you might have to install these libraries yourself. \n", + "\n", + "If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.\n", + "\n", + "TODO: Add a link to the instructions.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# If we're running on Colab, install libraries\n", + "\n", + "import sys\n", + "IN_COLAB = 'google.colab' in sys.modules\n", + "\n", + "if IN_COLAB:\n", + " !pip install astroquery astro-gala pyia" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting a region" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One of the most common ways to restrict a query is to select stars in a particular region of the sky.\n", + "\n", + "For example, here's a query from the [Gaia archive documentation](https://gea.esac.esa.int/archive-help/adql/examples/index.html) that selects \"all the objects ... in a circular region centered at (266.41683, -29.00781) with a search radius of 5 arcmin (0.08333 deg).\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "query = \"\"\"\n", + "SELECT \n", + "TOP 10 source_id\n", + "FROM gaiadr2.gaia_source\n", + "WHERE 1=CONTAINS(\n", + " POINT(ra, dec),\n", + " CIRCLE(266.41683, -29.00781, 0.08333333))\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This query uses three keywords that are specific to ADQL (not SQL):\n", + "\n", + "* `POINT`: a location in [ICRS coordinates](https://en.wikipedia.org/wiki/International_Celestial_Reference_System), specified in degrees of right ascension and declination.\n", + "\n", + "* `CIRCLE`: a circle where the first two values are the coordinates of the center and the third is the radius in degrees.\n", + "\n", + "* `CONTAINS`: a function that returns `1` if a `POINT` is contained in a shape and `0` otherwise.\n", + "\n", + "Here is the [documentation of `CONTAINS`](http://www.ivoa.net/documents/ADQL/20180112/PR-ADQL-2.1-20180112.html#tth_sEc4.2.12).\n", + "\n", + "A query like this is called a cone search because it selects stars in a cone.\n", + "\n", + "Here's how we run it." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: gea.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n", + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: geadata.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n" + ] + }, + { + "data": { + "text/html": [ + "Table length=10\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_id
int64
4057468321929794432
4057468287575835392
4057482027171038976
4057470349160630656
4057470039924301696
4057469868125641984
4057468351995073024
4057469661959554560
4057470520960672640
4057470555320409600
" + ], + "text/plain": [ + "\n", + " source_id \n", + " int64 \n", + "-------------------\n", + "4057468321929794432\n", + "4057468287575835392\n", + "4057482027171038976\n", + "4057470349160630656\n", + "4057470039924301696\n", + "4057469868125641984\n", + "4057468351995073024\n", + "4057469661959554560\n", + "4057470520960672640\n", + "4057470555320409600" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from astroquery.gaia import Gaia\n", + "\n", + "job = Gaia.launch_job(query)\n", + "result = job.get_results()\n", + "result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** When you are debugging queries like this, you can use `TOP` to limit the size of the results, but then you still don't know how big the results will be.\n", + "\n", + "An alternative is to use `COUNT`, which asks for the number of rows that would be selected, but it does not return them.\n", + "\n", + "In the previous query, replace `TOP 10 source_id` with `COUNT(source_id)` and run the query again. How many stars has Gaia identified in the cone we searched?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Getting GD-1 Data\n", + "\n", + "From the Price-Whelan and Bonaca paper, we will try to reproduce Figure 1, which includes this representation of stars likely to belong to GD-1:\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Along the axis of right ascension ($\\phi_1$) the figure extends from -100 to 20 degrees.\n", + "\n", + "Along the axis of declination ($\\phi_2$) the figure extends from about -8 to 4 degrees.\n", + "\n", + "Ideally, we would select all stars from this rectangle, but there are more than 10 million of them, so\n", + "\n", + "* That would be difficult to work with,\n", + "\n", + "* As anonymous users, we are limited to 3 million rows in a single query, and\n", + "\n", + "* While we are developing and testing code, it will be faster to work with a smaller dataset.\n", + "\n", + "So we'll start by selecting stars in a smaller rectangle, from -55 to -45 degrees right ascension and -8 to 4 degrees of declination.\n", + "\n", + "But first we let's see how to represent quantities with units like degrees." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Working with coordinates\n", + "\n", + "Coordinates are physical quantities, which means that they have two parts, a value and a unit.\n", + "\n", + "For example, the coordinate $30^{\\circ}$ has value 30 and its units are degrees.\n", + "\n", + "Until recently, most scientific computation was done with values only; units were left out of the program altogether, [often with disastrous results](https://en.wikipedia.org/wiki/Mars_Climate_Orbiter#Cause_of_failure).\n", + "\n", + "Astropy provides tools for including units explicitly in computations, which makes it possible to detect errors before they cause disasters.\n", + "\n", + "To use Astropy units, we import them like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import astropy.units as u\n", + "\n", + "u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`u` is an object that contains most common units and all SI units.\n", + "\n", + "You can use `dir` to list them, but you should also [read the documentation](https://docs.astropy.org/en/stable/units/)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['A',\n", + " 'AA',\n", + " 'AB',\n", + " 'ABflux',\n", + " 'ABmag',\n", + " 'AU',\n", + " 'Angstrom',\n", + " 'B',\n", + " 'Ba',\n", + " 'Barye',\n", + " 'Bi',\n", + " 'Biot',\n", + " 'Bol',\n", + " 'Bq',\n", + " 'C',\n", + " 'Celsius',\n", + " 'Ci',\n", + " 'CompositeUnit',\n", + " 'D',\n", + " 'Da',\n", + " 'Dalton',\n", + " 'Debye',\n", + " 'Decibel',\n", + " 'DecibelUnit',\n", + " 'Dex',\n", + " 'DexUnit',\n", + " 'EA',\n", + " 'EAU',\n", + " 'EB',\n", + " 'EBa',\n", + " 'EC',\n", + " 'ED',\n", + " 'EF',\n", + " 'EG',\n", + " 'EGal',\n", + " 'EH',\n", + " 'EHz',\n", + " 'EJ',\n", + " 'EJy',\n", + " 'EK',\n", + " 'EL',\n", + " 'EN',\n", + " 'EOhm',\n", + " 'EP',\n", + " 'EPa',\n", + " 'ER',\n", + " 'ERy',\n", + " 'ES',\n", + " 'ESt',\n", + " 'ET',\n", + " 'EV',\n", + " 'EW',\n", + " 'EWb',\n", + " 'Ea',\n", + " 'Eadu',\n", + " 'Earcmin',\n", + " 'Earcsec',\n", + " 'Eau',\n", + " 'Eb',\n", + " 'Ebarn',\n", + " 'Ebeam',\n", + " 'Ebin',\n", + " 'Ebit',\n", + " 'Ebyte',\n", + " 'Ecd',\n", + " 'Echan',\n", + " 'Ecount',\n", + " 'Ect',\n", + " 'Ed',\n", + " 'Edeg',\n", + " 'Edyn',\n", + " 'EeV',\n", + " 'Eerg',\n", + " 'Eg',\n", + " 'Eh',\n", + " 'EiB',\n", + " 'Eib',\n", + " 'Eibit',\n", + " 'Eibyte',\n", + " 'Ek',\n", + " 'El',\n", + " 'Elm',\n", + " 'Elx',\n", + " 'Elyr',\n", + " 'Em',\n", + " 'Emag',\n", + " 'Emin',\n", + " 'Emol',\n", + " 'Eohm',\n", + " 'Epc',\n", + " 'Eph',\n", + " 'Ephoton',\n", + " 'Epix',\n", + " 'Epixel',\n", + " 'Erad',\n", + " 'Es',\n", + " 'Esr',\n", + " 'Eu',\n", + " 'Evox',\n", + " 'Evoxel',\n", + " 'Eyr',\n", + " 'F',\n", + " 'Farad',\n", + " 'Fr',\n", + " 'Franklin',\n", + " 'FunctionQuantity',\n", + " 'FunctionUnitBase',\n", + " 'G',\n", + " 'GA',\n", + " 'GAU',\n", + " 'GB',\n", + " 'GBa',\n", + " 'GC',\n", + " 'GD',\n", + " 'GF',\n", + " 'GG',\n", + " 'GGal',\n", + " 'GH',\n", + " 'GHz',\n", + " 'GJ',\n", + " 'GJy',\n", + " 'GK',\n", + " 'GL',\n", + " 'GN',\n", + " 'GOhm',\n", + " 'GP',\n", + " 'GPa',\n", + " 'GR',\n", + " 'GRy',\n", + " 'GS',\n", + " 'GSt',\n", + " 'GT',\n", + " 'GV',\n", + " 'GW',\n", + " 'GWb',\n", + " 'Ga',\n", + " 'Gadu',\n", + " 'Gal',\n", + " 'Garcmin',\n", + " 'Garcsec',\n", + " 'Gau',\n", + " 'Gauss',\n", + " 'Gb',\n", + " 'Gbarn',\n", + " 'Gbeam',\n", + " 'Gbin',\n", + " 'Gbit',\n", + " 'Gbyte',\n", + " 'Gcd',\n", + " 'Gchan',\n", + " 'Gcount',\n", + " 'Gct',\n", + " 'Gd',\n", + " 'Gdeg',\n", + " 'Gdyn',\n", + " 'GeV',\n", + " 'Gerg',\n", + " 'Gg',\n", + " 'Gh',\n", + " 'GiB',\n", + " 'Gib',\n", + " 'Gibit',\n", + " 'Gibyte',\n", + " 'Gk',\n", + " 'Gl',\n", + " 'Glm',\n", + " 'Glx',\n", + " 'Glyr',\n", + " 'Gm',\n", + " 'Gmag',\n", + " 'Gmin',\n", + " 'Gmol',\n", + " 'Gohm',\n", + " 'Gpc',\n", + " 'Gph',\n", + " 'Gphoton',\n", + " 'Gpix',\n", + " 'Gpixel',\n", + " 'Grad',\n", + " 'Gs',\n", + " 'Gsr',\n", + " 'Gu',\n", + " 'Gvox',\n", + " 'Gvoxel',\n", + " 'Gyr',\n", + " 'H',\n", + " 'Henry',\n", + " 'Hertz',\n", + " 'Hz',\n", + " 'IrreducibleUnit',\n", + " 'J',\n", + " 'Jansky',\n", + " 'Joule',\n", + " 'Jy',\n", + " 'K',\n", + " 'Kayser',\n", + " 'Kelvin',\n", + " 'KiB',\n", + " 'Kib',\n", + " 'Kibit',\n", + " 'Kibyte',\n", + " 'L',\n", + " 'L_bol',\n", + " 'L_sun',\n", + " 'LogQuantity',\n", + " 'LogUnit',\n", + " 'Lsun',\n", + " 'MA',\n", + " 'MAU',\n", + " 'MB',\n", + " 'MBa',\n", + " 'MC',\n", + " 'MD',\n", + " 'MF',\n", + " 'MG',\n", + " 'MGal',\n", + " 'MH',\n", + " 'MHz',\n", + " 'MJ',\n", + " 'MJy',\n", + " 'MK',\n", + " 'ML',\n", + " 'MN',\n", + " 'MOhm',\n", + " 'MP',\n", + " 'MPa',\n", + " 'MR',\n", + " 'MRy',\n", + " 'MS',\n", + " 'MSt',\n", + " 'MT',\n", + " 'MV',\n", + " 'MW',\n", + " 'MWb',\n", + " 'M_bol',\n", + " 'M_e',\n", + " 'M_earth',\n", + " 'M_jup',\n", + " 'M_jupiter',\n", + " 'M_p',\n", + " 'M_sun',\n", + " 'Ma',\n", + " 'Madu',\n", + " 'MagUnit',\n", + " 'Magnitude',\n", + " 'Marcmin',\n", + " 'Marcsec',\n", + " 'Mau',\n", + " 'Mb',\n", + " 'Mbarn',\n", + " 'Mbeam',\n", + " 'Mbin',\n", + " 'Mbit',\n", + " 'Mbyte',\n", + " 'Mcd',\n", + " 'Mchan',\n", + " 'Mcount',\n", + " 'Mct',\n", + " 'Md',\n", + " 'Mdeg',\n", + " 'Mdyn',\n", + " 'MeV',\n", + " 'Mearth',\n", + " 'Merg',\n", + " 'Mg',\n", + " 'Mh',\n", + " 'MiB',\n", + " 'Mib',\n", + " 'Mibit',\n", + " 'Mibyte',\n", + " 'Mjup',\n", + " 'Mjupiter',\n", + " 'Mk',\n", + " 'Ml',\n", + " 'Mlm',\n", + " 'Mlx',\n", + " 'Mlyr',\n", + " 'Mm',\n", + " 'Mmag',\n", + " 'Mmin',\n", + " 'Mmol',\n", + " 'Mohm',\n", + " 'Mpc',\n", + " 'Mph',\n", + " 'Mphoton',\n", + " 'Mpix',\n", + " 'Mpixel',\n", + " 'Mrad',\n", + " 'Ms',\n", + " 'Msr',\n", + " 'Msun',\n", + " 'Mu',\n", + " 'Mvox',\n", + " 'Mvoxel',\n", + " 'Myr',\n", + " 'N',\n", + " 'NamedUnit',\n", + " 'Newton',\n", + " 'Ohm',\n", + " 'P',\n", + " 'PA',\n", + " 'PAU',\n", + " 'PB',\n", + " 'PBa',\n", + " 'PC',\n", + " 'PD',\n", + " 'PF',\n", + " 'PG',\n", + " 'PGal',\n", + " 'PH',\n", + " 'PHz',\n", + " 'PJ',\n", + " 'PJy',\n", + " 'PK',\n", + " 'PL',\n", + " 'PN',\n", + " 'POhm',\n", + " 'PP',\n", + " 'PPa',\n", + " 'PR',\n", + " 'PRy',\n", + " 'PS',\n", + " 'PSt',\n", + " 'PT',\n", + " 'PV',\n", + " 'PW',\n", + " 'PWb',\n", + " 'Pa',\n", + " 'Padu',\n", + " 'Parcmin',\n", + " 'Parcsec',\n", + " 'Pascal',\n", + " 'Pau',\n", + " 'Pb',\n", + " 'Pbarn',\n", + " 'Pbeam',\n", + " 'Pbin',\n", + " 'Pbit',\n", + " 'Pbyte',\n", + " 'Pcd',\n", + " 'Pchan',\n", + " 'Pcount',\n", + " 'Pct',\n", + " 'Pd',\n", + " 'Pdeg',\n", + " 'Pdyn',\n", + " 'PeV',\n", + " 'Perg',\n", + " 'Pg',\n", + " 'Ph',\n", + " 'PiB',\n", + " 'Pib',\n", + " 'Pibit',\n", + " 'Pibyte',\n", + " 'Pk',\n", + " 'Pl',\n", + " 'Plm',\n", + " 'Plx',\n", + " 'Plyr',\n", + " 'Pm',\n", + " 'Pmag',\n", + " 'Pmin',\n", + " 'Pmol',\n", + " 'Pohm',\n", + " 'Ppc',\n", + " 'Pph',\n", + " 'Pphoton',\n", + " 'Ppix',\n", + " 'Ppixel',\n", + " 'Prad',\n", + " 'PrefixUnit',\n", + " 'Ps',\n", + " 'Psr',\n", + " 'Pu',\n", + " 'Pvox',\n", + " 'Pvoxel',\n", + " 'Pyr',\n", + " 'Quantity',\n", + " 'QuantityInfo',\n", + " 'QuantityInfoBase',\n", + " 'R',\n", + " 'R_earth',\n", + " 'R_jup',\n", + " 'R_jupiter',\n", + " 'R_sun',\n", + " 'Rayleigh',\n", + " 'Rearth',\n", + " 'Rjup',\n", + " 'Rjupiter',\n", + " 'Rsun',\n", + " 'Ry',\n", + " 'S',\n", + " 'ST',\n", + " 'STflux',\n", + " 'STmag',\n", + " 'Siemens',\n", + " 'SpecificTypeQuantity',\n", + " 'St',\n", + " 'Sun',\n", + " 'T',\n", + " 'TA',\n", + " 'TAU',\n", + " 'TB',\n", + " 'TBa',\n", + " 'TC',\n", + " 'TD',\n", + " 'TF',\n", + " 'TG',\n", + " 'TGal',\n", + " 'TH',\n", + " 'THz',\n", + " 'TJ',\n", + " 'TJy',\n", + " 'TK',\n", + " 'TL',\n", + " 'TN',\n", + " 'TOhm',\n", + " 'TP',\n", + " 'TPa',\n", + " 'TR',\n", + " 'TRy',\n", + " 'TS',\n", + " 'TSt',\n", + " 'TT',\n", + " 'TV',\n", + " 'TW',\n", + " 'TWb',\n", + " 'Ta',\n", + " 'Tadu',\n", + " 'Tarcmin',\n", + " 'Tarcsec',\n", + " 'Tau',\n", + " 'Tb',\n", + " 'Tbarn',\n", + " 'Tbeam',\n", + " 'Tbin',\n", + " 'Tbit',\n", + " 'Tbyte',\n", + " 'Tcd',\n", + " 'Tchan',\n", + " 'Tcount',\n", + " 'Tct',\n", + " 'Td',\n", + " 'Tdeg',\n", + " 'Tdyn',\n", + " 'TeV',\n", + " 'Terg',\n", + " 'Tesla',\n", + " 'Tg',\n", + " 'Th',\n", + " 'TiB',\n", + " 'Tib',\n", + " 'Tibit',\n", + " 'Tibyte',\n", + " 'Tk',\n", + " 'Tl',\n", + " 'Tlm',\n", + " 'Tlx',\n", + " 'Tlyr',\n", + " 'Tm',\n", + " 'Tmag',\n", + " 'Tmin',\n", + " 'Tmol',\n", + " 'Tohm',\n", + " 'Tpc',\n", + " 'Tph',\n", + " 'Tphoton',\n", + " 'Tpix',\n", + " 'Tpixel',\n", + " 'Trad',\n", + " 'Ts',\n", + " 'Tsr',\n", + " 'Tu',\n", + " 'Tvox',\n", + " 'Tvoxel',\n", + " 'Tyr',\n", + " 'Unit',\n", + " 'UnitBase',\n", + " 'UnitConversionError',\n", + " 'UnitTypeError',\n", + " 'UnitsError',\n", + " 'UnitsWarning',\n", + " 'UnrecognizedUnit',\n", + " 'V',\n", + " 'Volt',\n", + " 'W',\n", + " 'Watt',\n", + " 'Wb',\n", + " 'Weber',\n", + " 'YA',\n", + " 'YAU',\n", + " 'YB',\n", + " 'YBa',\n", + " 'YC',\n", + " 'YD',\n", + " 'YF',\n", + " 'YG',\n", + " 'YGal',\n", + " 'YH',\n", + " 'YHz',\n", + " 'YJ',\n", + " 'YJy',\n", + " 'YK',\n", + " 'YL',\n", + " 'YN',\n", + " 'YOhm',\n", + " 'YP',\n", + " 'YPa',\n", + " 'YR',\n", + " 'YRy',\n", + " 'YS',\n", + " 'YSt',\n", + " 'YT',\n", + " 'YV',\n", + " 'YW',\n", + " 'YWb',\n", + " 'Ya',\n", + " 'Yadu',\n", + " 'Yarcmin',\n", + " 'Yarcsec',\n", + " 'Yau',\n", + " 'Yb',\n", + " 'Ybarn',\n", + " 'Ybeam',\n", + " 'Ybin',\n", + " 'Ybit',\n", + " 'Ybyte',\n", + " 'Ycd',\n", + " 'Ychan',\n", + " 'Ycount',\n", + " 'Yct',\n", + " 'Yd',\n", + " 'Ydeg',\n", + " 'Ydyn',\n", + " 'YeV',\n", + " 'Yerg',\n", + " 'Yg',\n", + " 'Yh',\n", + " 'Yk',\n", + " 'Yl',\n", + " 'Ylm',\n", + " 'Ylx',\n", + " 'Ylyr',\n", + " 'Ym',\n", + " 'Ymag',\n", + " 'Ymin',\n", + " 'Ymol',\n", + " 'Yohm',\n", + " 'Ypc',\n", + " 'Yph',\n", + " 'Yphoton',\n", + " 'Ypix',\n", + " 'Ypixel',\n", + " 'Yrad',\n", + " 'Ys',\n", + " 'Ysr',\n", + " 'Yu',\n", + " 'Yvox',\n", + " 'Yvoxel',\n", + " 'Yyr',\n", + " 'ZA',\n", + " 'ZAU',\n", + " 'ZB',\n", + " 'ZBa',\n", + " 'ZC',\n", + " 'ZD',\n", + " 'ZF',\n", + " 'ZG',\n", + " 'ZGal',\n", + " 'ZH',\n", + " 'ZHz',\n", + " 'ZJ',\n", + " 'ZJy',\n", + " 'ZK',\n", + " 'ZL',\n", + " 'ZN',\n", + " 'ZOhm',\n", + " 'ZP',\n", + " 'ZPa',\n", + " 'ZR',\n", + " 'ZRy',\n", + " 'ZS',\n", + " 'ZSt',\n", + " 'ZT',\n", + " 'ZV',\n", + " 'ZW',\n", + " 'ZWb',\n", + " 'Za',\n", + " 'Zadu',\n", + " 'Zarcmin',\n", + " 'Zarcsec',\n", + " 'Zau',\n", + " 'Zb',\n", + " 'Zbarn',\n", + " 'Zbeam',\n", + " 'Zbin',\n", + " 'Zbit',\n", + " 'Zbyte',\n", + " 'Zcd',\n", + " 'Zchan',\n", + " 'Zcount',\n", + " 'Zct',\n", + " 'Zd',\n", + " 'Zdeg',\n", + " 'Zdyn',\n", + " 'ZeV',\n", + " 'Zerg',\n", + " 'Zg',\n", + " 'Zh',\n", + " 'Zk',\n", + " 'Zl',\n", + " 'Zlm',\n", + " 'Zlx',\n", + " 'Zlyr',\n", + " 'Zm',\n", + " 'Zmag',\n", + " 'Zmin',\n", + " 'Zmol',\n", + " 'Zohm',\n", + " 'Zpc',\n", + " 'Zph',\n", + " 'Zphoton',\n", + " 'Zpix',\n", + " 'Zpixel',\n", + " 'Zrad',\n", + " 'Zs',\n", + " 'Zsr',\n", + " 'Zu',\n", + " 'Zvox',\n", + " 'Zvoxel',\n", + " 'Zyr',\n", + " '__builtins__',\n", + " '__cached__',\n", + " '__doc__',\n", + " '__file__',\n", + " '__loader__',\n", + " '__name__',\n", + " '__package__',\n", + " '__path__',\n", + " '__spec__',\n", + " 'a',\n", + " 'aA',\n", + " 'aAU',\n", + " 'aB',\n", + " 'aBa',\n", + " 'aC',\n", + " 'aD',\n", + " 'aF',\n", + " 'aG',\n", + " 'aGal',\n", + " 'aH',\n", + " 'aHz',\n", + " 'aJ',\n", + " 'aJy',\n", + " 'aK',\n", + " 'aL',\n", + " 'aN',\n", + " 'aOhm',\n", + " 'aP',\n", + " 'aPa',\n", + " 'aR',\n", + " 'aRy',\n", + " 'aS',\n", + " 'aSt',\n", + " 'aT',\n", + " 'aV',\n", + " 'aW',\n", + " 'aWb',\n", + " 'aa',\n", + " 'aadu',\n", + " 'aarcmin',\n", + " 'aarcsec',\n", + " 'aau',\n", + " 'ab',\n", + " 'abA',\n", + " 'abC',\n", + " 'abampere',\n", + " 'abarn',\n", + " 'abcoulomb',\n", + " 'abeam',\n", + " 'abin',\n", + " 'abit',\n", + " 'abyte',\n", + " 'acd',\n", + " 'achan',\n", + " 'acount',\n", + " 'act',\n", + " 'ad',\n", + " 'add_enabled_equivalencies',\n", + " 'add_enabled_units',\n", + " 'adeg',\n", + " 'adu',\n", + " 'adyn',\n", + " 'aeV',\n", + " 'aerg',\n", + " 'ag',\n", + " 'ah',\n", + " 'ak',\n", + " 'al',\n", + " 'allclose',\n", + " 'alm',\n", + " 'alx',\n", + " 'alyr',\n", + " 'am',\n", + " 'amag',\n", + " 'amin',\n", + " 'amol',\n", + " 'amp',\n", + " 'ampere',\n", + " 'angstrom',\n", + " 'annum',\n", + " 'aohm',\n", + " 'apc',\n", + " 'aph',\n", + " 'aphoton',\n", + " 'apix',\n", + " 'apixel',\n", + " 'arad',\n", + " 'arcmin',\n", + " 'arcminute',\n", + " 'arcsec',\n", + " 'arcsecond',\n", + " 'asr',\n", + " 'astronomical_unit',\n", + " 'astrophys',\n", + " 'attoBarye',\n", + " 'attoDa',\n", + " 'attoDalton',\n", + " 'attoDebye',\n", + " 'attoFarad',\n", + " 'attoGauss',\n", + " 'attoHenry',\n", + " 'attoHertz',\n", + " 'attoJansky',\n", + " 'attoJoule',\n", + " 'attoKayser',\n", + " 'attoKelvin',\n", + " 'attoNewton',\n", + " 'attoOhm',\n", + " 'attoPascal',\n", + " 'attoRayleigh',\n", + " 'attoSiemens',\n", + " 'attoTesla',\n", + " 'attoVolt',\n", + " 'attoWatt',\n", + " 'attoWeber',\n", + " 'attoamp',\n", + " 'attoampere',\n", + " 'attoannum',\n", + " 'attoarcminute',\n", + " 'attoarcsecond',\n", + " 'attoastronomical_unit',\n", + " 'attobarn',\n", + " 'attobarye',\n", + " 'attobit',\n", + " 'attobyte',\n", + " 'attocandela',\n", + " 'attocoulomb',\n", + " 'attocount',\n", + " 'attoday',\n", + " 'attodebye',\n", + " 'attodegree',\n", + " 'attodyne',\n", + " 'attoelectronvolt',\n", + " 'attofarad',\n", + " 'attogal',\n", + " 'attogauss',\n", + " 'attogram',\n", + " 'attohenry',\n", + " 'attohertz',\n", + " 'attohour',\n", + " 'attohr',\n", + " 'attojansky',\n", + " 'attojoule',\n", + " 'attokayser',\n", + " 'attolightyear',\n", + " 'attoliter',\n", + " 'attolumen',\n", + " 'attolux',\n", + " 'attometer',\n", + " 'attominute',\n", + " 'attomole',\n", + " 'attonewton',\n", + " 'attoparsec',\n", + " 'attopascal',\n", + " 'attophoton',\n", + " 'attopixel',\n", + " 'attopoise',\n", + " 'attoradian',\n", + " 'attorayleigh',\n", + " 'attorydberg',\n", + " 'attosecond',\n", + " 'attosiemens',\n", + " 'attosteradian',\n", + " 'attostokes',\n", + " 'attotesla',\n", + " 'attovolt',\n", + " 'attovoxel',\n", + " 'attowatt',\n", + " 'attoweber',\n", + " 'attoyear',\n", + " 'au',\n", + " 'avox',\n", + " 'avoxel',\n", + " 'ayr',\n", + " 'b',\n", + " 'bar',\n", + " 'barn',\n", + " 'barye',\n", + " 'beam',\n", + " 'beam_angular_area',\n", + " 'becquerel',\n", + " 'bin',\n", + " 'binary_prefixes',\n", + " 'bit',\n", + " 'bol',\n", + " 'brightness_temperature',\n", + " 'byte',\n", + " 'cA',\n", + " 'cAU',\n", + " 'cB',\n", + " 'cBa',\n", + " 'cC',\n", + " 'cD',\n", + " 'cF',\n", + " 'cG',\n", + " 'cGal',\n", + " 'cH',\n", + " 'cHz',\n", + " 'cJ',\n", + " 'cJy',\n", + " 'cK',\n", + " 'cL',\n", + " 'cN',\n", + " 'cOhm',\n", + " 'cP',\n", + " 'cPa',\n", + " 'cR',\n", + " 'cRy',\n", + " 'cS',\n", + " 'cSt',\n", + " 'cT',\n", + " 'cV',\n", + " 'cW',\n", + " 'cWb',\n", + " 'ca',\n", + " 'cadu',\n", + " 'candela',\n", + " 'carcmin',\n", + " 'carcsec',\n", + " 'cau',\n", + " 'cb',\n", + " 'cbarn',\n", + " 'cbeam',\n", + " 'cbin',\n", + " 'cbit',\n", + " 'cbyte',\n", + " 'ccd',\n", + " 'cchan',\n", + " 'ccount',\n", + " 'cct',\n", + " 'cd',\n", + " 'cdeg',\n", + " 'cdyn',\n", + " 'ceV',\n", + " 'centiBarye',\n", + " 'centiDa',\n", + " 'centiDalton',\n", + " 'centiDebye',\n", + " 'centiFarad',\n", + " 'centiGauss',\n", + " 'centiHenry',\n", + " 'centiHertz',\n", + " 'centiJansky',\n", + " 'centiJoule',\n", + " 'centiKayser',\n", + " 'centiKelvin',\n", + " 'centiNewton',\n", + " 'centiOhm',\n", + " 'centiPascal',\n", + " 'centiRayleigh',\n", + " 'centiSiemens',\n", + " 'centiTesla',\n", + " 'centiVolt',\n", + " 'centiWatt',\n", + " 'centiWeber',\n", + " 'centiamp',\n", + " 'centiampere',\n", + " 'centiannum',\n", + " 'centiarcminute',\n", + " 'centiarcsecond',\n", + " 'centiastronomical_unit',\n", + " 'centibarn',\n", + " 'centibarye',\n", + " 'centibit',\n", + " 'centibyte',\n", + " 'centicandela',\n", + " 'centicoulomb',\n", + " 'centicount',\n", + " 'centiday',\n", + " 'centidebye',\n", + " 'centidegree',\n", + " 'centidyne',\n", + " 'centielectronvolt',\n", + " 'centifarad',\n", + " 'centigal',\n", + " 'centigauss',\n", + " 'centigram',\n", + " 'centihenry',\n", + " 'centihertz',\n", + " 'centihour',\n", + " 'centihr',\n", + " 'centijansky',\n", + " 'centijoule',\n", + " 'centikayser',\n", + " 'centilightyear',\n", + " 'centiliter',\n", + " 'centilumen',\n", + " 'centilux',\n", + " 'centimeter',\n", + " 'centiminute',\n", + " 'centimole',\n", + " 'centinewton',\n", + " 'centiparsec',\n", + " 'centipascal',\n", + " 'centiphoton',\n", + " 'centipixel',\n", + " 'centipoise',\n", + " 'centiradian',\n", + " 'centirayleigh',\n", + " 'centirydberg',\n", + " 'centisecond',\n", + " 'centisiemens',\n", + " 'centisteradian',\n", + " 'centistokes',\n", + " 'centitesla',\n", + " 'centivolt',\n", + " 'centivoxel',\n", + " 'centiwatt',\n", + " 'centiweber',\n", + " 'centiyear',\n", + " 'cerg',\n", + " 'cg',\n", + " 'cgs',\n", + " 'ch',\n", + " 'chan',\n", + " 'ck',\n", + " 'cl',\n", + " 'clm',\n", + " 'clx',\n", + " 'clyr',\n", + " 'cm',\n", + " 'cmag',\n", + " 'cmin',\n", + " 'cmol',\n", + " 'cohm',\n", + " 'core',\n", + " 'coulomb',\n", + " 'count',\n", + " 'cpc',\n", + " 'cph',\n", + " 'cphoton',\n", + " 'cpix',\n", + " 'cpixel',\n", + " 'crad',\n", + " 'cs',\n", + " 'csr',\n", + " 'ct',\n", + " 'cu',\n", + " 'curie',\n", + " 'cvox',\n", + " 'cvoxel',\n", + " 'cy',\n", + " 'cycle',\n", + " 'cyr',\n", + " 'd',\n", + " 'dA',\n", + " 'dAU',\n", + " 'dB',\n", + " 'dBa',\n", + " 'dC',\n", + " 'dD',\n", + " 'dF',\n", + " 'dG',\n", + " 'dGal',\n", + " 'dH',\n", + " 'dHz',\n", + " 'dJ',\n", + " 'dJy',\n", + " 'dK',\n", + " 'dL',\n", + " 'dN',\n", + " 'dOhm',\n", + " 'dP',\n", + " 'dPa',\n", + " 'dR',\n", + " 'dRy',\n", + " 'dS',\n", + " 'dSt',\n", + " 'dT',\n", + " ...]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dir(u)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To create a quantity, we multiply a value by a unit." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.units.quantity.Quantity" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coord = 30 * u.deg\n", + "type(coord)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a `Quantity` object.\n", + "\n", + "Jupyter knows how to display `Quantities` like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$30 \\; \\mathrm{{}^{\\circ}}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coord" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting a rectangle\n", + "\n", + "Now we'll select a rectangle from -55 to -45 degrees right ascension and -8 to 4 degrees of declination.\n", + "\n", + "We'll define variables to contain these limits." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "phi1_min = -55\n", + "phi1_max = -45\n", + "phi2_min = -8\n", + "phi2_max = 4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To represent a rectangle, we'll use two lists of coordinates and multiply by their units." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "phi1_rect = [phi1_min, phi1_min, phi1_max, phi1_max] * u.deg\n", + "phi2_rect = [phi2_min, phi2_max, phi2_max, phi2_min] * u.deg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`phi1_rect` and `phi2_rect` represent the coordinates of the corners of a rectangle. \n", + "\n", + "But they are in \"[a Heliocentric spherical coordinate system defined by the orbit of the GD1 stream](https://gala-astro.readthedocs.io/en/latest/_modules/gala/coordinates/gd1.html)\"\n", + "\n", + "In order to use them in a Gaia query, we have to convert them to [International Celestial Reference System](https://en.wikipedia.org/wiki/International_Celestial_Reference_System) (ICRS) coordinates. We can do that by storing the coordinates in a `GD1Koposov10` object provided by [Gala](https://gala-astro.readthedocs.io/en/latest/coordinates/)." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "gala.coordinates.gd1.GD1Koposov10" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import gala.coordinates as gc\n", + "\n", + "corners = gc.GD1Koposov10(phi1=phi1_rect, phi2=phi2_rect)\n", + "type(corners)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can display the result like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corners" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can use `transform_to` to convert to ICRS coordinates." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.coordinates.builtin_frames.icrs.ICRS" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import astropy.coordinates as coord\n", + "\n", + "corners_icrs = corners.transform_to(coord.ICRS)\n", + "type(corners_icrs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is an `ICRS` object." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corners_icrs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that a rectangle in one coordinate system is not necessarily a rectangle in another. In this example, the result is a polygon." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting a polygon\n", + "\n", + "In order to use this polygon as part of an ADQL query, we have to convert it to a string with a comma-separated list of coordinates, as in this example:\n", + "\n", + "```\n", + "\"\"\"\n", + "POLYGON(143.65, 20.98, \n", + " 134.46, 26.39, \n", + " 140.58, 34.85, \n", + " 150.16, 29.01)\n", + "\"\"\"\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`corners_icrs` behaves like a list, so we can use a `for` loop to iterate through the points." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "for point in corners_icrs:\n", + " print(point)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From that, we can select the coordinates `ra` and `dec`:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "146d16m31.1993s 19d15m42.8754s\n", + "135d25m17.902s 25d52m38.594s\n", + "141d36m09.5337s 34d18m17.3891s\n", + "152d49m00.1576s 27d08m10.0051s\n" + ] + } + ], + "source": [ + "for point in corners_icrs:\n", + " print(point.ra, point.dec)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The results are quantities with units, but if we select the `value` part, we get a dimensionless floating-point number." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "146.27533313607782 19.261909820533692\n", + "135.42163944306296 25.87738722767213\n", + "141.60264825107333 34.304830296257144\n", + "152.81671044675923 27.136112541397996\n" + ] + } + ], + "source": [ + "for point in corners_icrs:\n", + " print(point.ra.value, point.dec.value)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use string `format` to convert these numbers to strings." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['146.27533313607782, 19.261909820533692',\n", + " '135.42163944306296, 25.87738722767213',\n", + " '141.60264825107333, 34.304830296257144',\n", + " '152.81671044675923, 27.136112541397996']" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "point_base = \"{point.ra.value}, {point.dec.value}\"\n", + "\n", + "t = [point_base.format(point=point)\n", + " for point in corners_icrs]\n", + "t" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a list of strings, which we can join into a single string using `join`." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'146.27533313607782, 19.261909820533692, 135.42163944306296, 25.87738722767213, 141.60264825107333, 34.304830296257144, 152.81671044675923, 27.136112541397996'" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "point_list = ', '.join(t)\n", + "point_list" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that we invoke `join` on a string and pass the list as an argument.\n", + "\n", + "Before we can assemble the query, we need `columns` again (as we saw in the previous notebook)." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "columns = 'source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's the base for the query, with format specifiers for `columns` and `point_list`." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "query_base = \"\"\"SELECT {columns}\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2 \n", + " AND 1 = CONTAINS(POINT(ra, dec), \n", + " POLYGON({point_list}))\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's the result:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SELECT source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2 \n", + " AND 1 = CONTAINS(POINT(ra, dec), \n", + " POLYGON(146.27533313607782, 19.261909820533692, 135.42163944306296, 25.87738722767213, 141.60264825107333, 34.304830296257144, 152.81671044675923, 27.136112541397996))\n", + "\n" + ] + } + ], + "source": [ + "query = query_base.format(columns=columns, \n", + " point_list=point_list)\n", + "print(query)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As always, we should take a minute to proof-read the query before we launch it.\n", + "\n", + "The result will be bigger than our previous queries, so it will take a little longer." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO: Query finished. [astroquery.utils.tap.core]\n", + "
\n", + " name dtype unit description n_bad \n", + "--------------- ------- -------- ------------------------------------------------------------------ ------\n", + " source_id int64 Unique source identifier (unique within a particular Data Release) 0\n", + " ra float64 deg Right ascension 0\n", + " dec float64 deg Declination 0\n", + " pmra float64 mas / yr Proper motion in right ascension direction 0\n", + " pmdec float64 mas / yr Proper motion in declination direction 0\n", + " parallax float64 mas Parallax 0\n", + " parallax_error float64 mas Standard error of parallax 0\n", + "radial_velocity float64 km / s Radial velocity 139374\n", + "Jobid: 1603114980658O\n", + "Phase: COMPLETED\n", + "Owner: None\n", + "Output file: async_20201019094300.vot\n", + "Results: None\n" + ] + } + ], + "source": [ + "job = Gaia.launch_job_async(query)\n", + "print(job)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here are the results." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "140340" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results = job.get_results()\n", + "len(results)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are more than 100,000 stars in this polygon, but that's a manageable size to work with." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Saving results\n", + "\n", + "This is the set of stars we'll work with in the next step. But since we have a substantial dataset now, this is a good time to save it.\n", + "\n", + "Storing the data in a file means we can shut down this notebook and pick up where we left off without running the previous query again.\n", + "\n", + "Astropy `Table` objects provide `write`, which writes the table to disk." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "filename = 'gd1_results.fits'\n", + "results.write(filename, overwrite=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Because the filename ends with `fits`, the table is written in the [FITS format](https://en.wikipedia.org/wiki/FITS), which preserves the metadata associated with the table.\n", + "\n", + "If the file already exists, the `overwrite` argument causes it to be overwritten.\n", + "\n", + "To see how big the file is, we can use `ls` with the `-lh` option, which prints information about the file including its size in human-readable form." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-rw-rw-r-- 1 downey downey 8.6M Oct 19 09:43 gd1_results.fits\r\n" + ] + } + ], + "source": [ + "!ls -lh gd1_results.fits" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The file is about 8.6 MB. If you are using Windows, `ls` might not work; in that case, try:\n", + "\n", + "```\n", + "!dir gd1_results.fits\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "In this notebook, we composed more complex queries to select stars within a polygonal region of the sky. Then we downloaded the results and saved them in a FITS file.\n", + "\n", + "In the next notebook, we'll reload the data from this file and replicate the next step in the analysis, using proper motion to identify stars likely to be in GD-1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Best practices\n", + "\n", + "* For measurements with units, use `Quantity` objects that represent units explicitly and check for errors.\n", + "\n", + "* Use the `format` function to compose queries; it is often faster and less error-prone.\n", + "\n", + "* Develop queries incrementally: start with something simple, test it, and add a little bit at a time.\n", + "\n", + "* Once you have a query working, save the data in a local file. If you shut down the notebook and come back to it later, you can reload the file; you don't have to run the query again." + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/_sources/03_motion.ipynb b/_sources/03_motion.ipynb new file mode 100644 index 0000000..baf52c9 --- /dev/null +++ b/_sources/03_motion.ipynb @@ -0,0 +1,1896 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 3\n", + "\n", + "This is the third in a series of notebooks related to astronomy data.\n", + "\n", + "As a running example, we are replicating parts of the analysis in a recent paper, \"[Off the beaten path: Gaia reveals GD-1 stars outside of the main stream](https://arxiv.org/abs/1805.00425)\" by Adrian M. Price-Whelan and Ana Bonaca.\n", + "\n", + "In the first lesson, we wrote ADQL queries and used them to select and download data from the Gaia server.\n", + "\n", + "In the second lesson, we wrote a query to select stars from the region of the sky where we expect GD-1 to be, and saved the results in a FITS file.\n", + "\n", + "Now we'll read that data back and implement the next step in the analysis, identifying stars with the proper motion we expect for GD-1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Outline\n", + "\n", + "Here are the steps in this lesson:\n", + "\n", + "1. We'll read back the results from the previous lesson, which we saved in a FITS file.\n", + "\n", + "2. Then we'll transform the coordinates and proper motion data from ICRS back to the coordinate frame of GD-1.\n", + "\n", + "3. We'll put those results into a Pandas `DataFrame`, which we'll use to select stars near the centerline of GD-1.\n", + "\n", + "4. Plotting the proper motion of those stars, we'll identify a region of proper motion for stars that are likely to be in GD-1.\n", + "\n", + "5. Finally, we'll select and plot the stars whose proper motion is in that region.\n", + "\n", + "After completing this lesson, you should be able to\n", + "\n", + "* Select rows and columns from an Astropy `Table`.\n", + "\n", + "* Use Matplotlib to make a scatter plot.\n", + "\n", + "* Use Gala to transform coordinates.\n", + "\n", + "* Make a Pandas `DataFrame` and use a Boolean `Series` to select rows.\n", + "\n", + "* Save a `DataFrame` in an HDF5 file.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing libraries\n", + "\n", + "If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we'll use.\n", + "\n", + "If you are running this notebook on your own computer, you might have to install these libraries yourself. \n", + "\n", + "If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.\n", + "\n", + "TODO: Add a link to the instructions.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# If we're running on Colab, install libraries\n", + "\n", + "import sys\n", + "IN_COLAB = 'google.colab' in sys.modules\n", + "\n", + "if IN_COLAB:\n", + " !pip install astroquery astro-gala pyia python-wget" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reload the data\n", + "\n", + "In the previous lesson, we ran a query on the Gaia server and downloaded data for roughly 100,000 stars. We saved the data in a FITS file so that now, picking up where we left off, we can read the data from a local file rather than running the query again.\n", + "\n", + "If you ran the previous lesson successfully, you should already have a file called `gd1_results.fits` that contains the data we downloaded.\n", + "\n", + "If not, you can run the following cell, which downloads the data from our repository." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from wget import download\n", + "\n", + "filename = 'gd1_results.fits'\n", + "path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'\n", + "\n", + "if not os.path.exists(filename):\n", + " print(download(path+filename))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now here's how we can read the data from the file back into an Astropy `Table`:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from astropy.table import Table\n", + "\n", + "results = Table.read(filename)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is an Astropy `Table`.\n", + "\n", + "We can use `info` to refresh our memory of the contents." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "
\n", + " name dtype unit description \n", + "--------------- ------- -------- ------------------------------------------------------------------\n", + " source_id int64 Unique source identifier (unique within a particular Data Release)\n", + " ra float64 deg Right ascension\n", + " dec float64 deg Declination\n", + " pmra float64 mas / yr Proper motion in right ascension direction\n", + " pmdec float64 mas / yr Proper motion in declination direction\n", + " parallax float64 mas Parallax\n", + " parallax_error float64 mas Standard error of parallax\n", + "radial_velocity float64 km / s Radial velocity" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results.info" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting rows and columns\n", + "\n", + "In this section we'll see operations for selecting columns and rows from an Astropy `Table`. You can find more information about these operations in the [Astropy documentation](https://docs.astropy.org/en/stable/table/access_table.html).\n", + "\n", + "We can get the names of the columns like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['source_id',\n", + " 'ra',\n", + " 'dec',\n", + " 'pmra',\n", + " 'pmdec',\n", + " 'parallax',\n", + " 'parallax_error',\n", + " 'radial_velocity']" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results.colnames" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And select an individual column like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<Column name='ra' dtype='float64' unit='deg' description='Right ascension' length=140340>\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
142.48301935991023
142.25452941346344
142.64528557468074
142.57739430926034
142.58913564478618
141.81762228999614
143.18339801317677
142.9347319464589
142.26769745823267
142.89551292869012
142.2780935768316
142.06138786534987
...
143.05456487172972
144.0436496516182
144.06566578919313
144.13177563215973
143.77696341662764
142.945956347594
142.97282480557786
143.4166017695258
143.64484588686904
143.41554585481808
143.6908739159247
143.7702681295401
" + ], + "text/plain": [ + "\n", + "142.48301935991023\n", + "142.25452941346344\n", + "142.64528557468074\n", + "142.57739430926034\n", + "142.58913564478618\n", + "141.81762228999614\n", + "143.18339801317677\n", + " 142.9347319464589\n", + "142.26769745823267\n", + "142.89551292869012\n", + " 142.2780935768316\n", + "142.06138786534987\n", + " ...\n", + "143.05456487172972\n", + " 144.0436496516182\n", + "144.06566578919313\n", + "144.13177563215973\n", + "143.77696341662764\n", + " 142.945956347594\n", + "142.97282480557786\n", + " 143.4166017695258\n", + "143.64484588686904\n", + "143.41554585481808\n", + " 143.6908739159247\n", + " 143.7702681295401" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results['ra']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a `Column` object that contains the data, and also the data type, units, and name of the column." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.table.column.Column" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(results['ra'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The rows in the `Table` are numbered from 0 to `n-1`, where `n` is the number of rows. We can select the first row like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Row index=0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_idradecpmrapmdecparallaxparallax_errorradial_velocity
degdegmas / yrmas / yrmasmaskm / s
int64float64float64float64float64float64float64float64
637987125186749568142.4830193599102321.75771616932985-2.51683846838757662.941813096629439-0.25734489623333540.8237207945098111e+20
" + ], + "text/plain": [ + "\n", + " source_id ra dec pmra pmdec parallax parallax_error radial_velocity\n", + " deg deg mas / yr mas / yr mas mas km / s \n", + " int64 float64 float64 float64 float64 float64 float64 float64 \n", + "------------------ ------------------ ----------------- ------------------- ----------------- ------------------- ----------------- ---------------\n", + "637987125186749568 142.48301935991023 21.75771616932985 -2.5168384683875766 2.941813096629439 -0.2573448962333354 0.823720794509811 1e+20" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you might have guessed, the result is a `Row` object." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.table.row.Row" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(results[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that the bracket operator selects both columns and rows. You might wonder how it knows which to select.\n", + "\n", + "If the expression in brackets is a string, it selects a column; if the expression is an integer, it selects a row.\n", + "\n", + "If you apply the bracket operator twice, you can select a column and then an element from the column." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "142.48301935991023" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results['ra'][0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Or you can select a row and then an element from the row." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "142.48301935991023" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results[0]['ra']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You get the same result either way." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scatter plot\n", + "\n", + "To see what the results look like, we'll use a scatter plot. The library we'll use is [Matplotlib](https://matplotlib.org/), which is the most widely-used plotting library for Python.\n", + "\n", + "The Matplotlib interface is based on MATLAB (hence the name), so if you know MATLAB, some of it will be familiar.\n", + "\n", + "We'll import like this." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pyplot part of the Matplotlib library. It is conventional to import it using the shortened name `plt`.\n", + "\n", + "Pyplot provides two functions that can make scatterplots, [plt.scatter](https://matplotlib.org/3.3.0/api/_as_gen/matplotlib.pyplot.scatter.html) and [plt.plot](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html).\n", + "\n", + "* `scatter` is more versatile; for example, you can make every point in a scatter plot a different color.\n", + "\n", + "* `plot` is more limited, but for simple cases, it can be substantially faster. \n", + "\n", + "Jake Vanderplas explains these differences in [The Python Data Science Handbook](https://jakevdp.github.io/PythonDataScienceHandbook/04.02-simple-scatter-plots.html)\n", + "\n", + "Since we are plotting more than 100,000 points and they are all the same size and color, we'll use `plot`.\n", + "\n", + "Here's a scatter plot with right ascension on the x-axis and declination on the y-axis, both ICRS coordinates in degrees." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x = results['ra']\n", + "y = results['dec']\n", + "plt.plot(x, y, 'ko')\n", + "\n", + "plt.xlabel('ra (degree ICRS)')\n", + "plt.ylabel('dec (degree ICRS)');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The arguments to `plt.plot` are `x`, `y`, and a string that specifies the style. In this case, the letters `ko` indicate that we want a black, round marker (`k` is for black because `b` is for blue).\n", + "\n", + "The functions `xlabel` and `ylabel` put labels on the axes.\n", + "\n", + "This scatter plot has a problem. It is \"[overplotted](https://python-graph-gallery.com/134-how-to-avoid-overplotting-with-python/)\", which means that there are so many overlapping points, we can't distinguish between high and low density areas.\n", + "\n", + "To fix this, we can provide optional arguments to control the size and transparency of the points.\n", + "\n", + "**Exercise:** In the call to `plt.plot`, add the keyword argument `markersize=0.1` to make the markers smaller.\n", + "\n", + "Then add the argument `alpha=0.1` to make the markers nearly transparent.\n", + "\n", + "Adjust these arguments until you think the figure shows the data most clearly.\n", + "\n", + "Note: Once you have made these changes, you might notice that the figure shows stripes with lower density of stars. These stripes are caused by the way Gaia scans the sky, which [you can read about here](https://www.cosmos.esa.int/web/gaia/scanning-law). The dataset we are using, [Gaia Data Release 2](https://www.cosmos.esa.int/web/gaia/dr2), covers 22 months of observations; during this time, some parts of the sky were scanned more than others." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Transform back\n", + "\n", + "Remember that we selected data from a rectangle of coordinates in the `GD1Koposov10` frame, then transformed them to ICRS when we constructed the query.\n", + "The coordinates in `results` are in ICRS.\n", + "\n", + "To plot them, we will transform them back to the `GD1Koposov10` frame; that way, the axes of the figure are aligned with the GD-1, which will make it easy to select stars near the centerline of the stream.\n", + "\n", + "To do that, we'll put the results into a `GaiaData` object, provided by the [pyia library](https://pyia.readthedocs.io/en/latest/api/pyia.GaiaData.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pyia.data.GaiaData" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pyia import GaiaData\n", + "\n", + "gaia_data = GaiaData(results)\n", + "type(gaia_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can extract sky coordinates from the `GaiaData` object, like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [], + "source": [ + "import astropy.units as u\n", + "\n", + "skycoord = gaia_data.get_skycoord(\n", + " distance=8*u.kpc, \n", + " radial_velocity=0*u.km/u.s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We provide `distance` and `radial_velocity` to prepare the data for reflex correction, which we explain below." + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.coordinates.sky_coordinate.SkyCoord" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(skycoord)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is an Astropy `SkyCoord` object ([documentation here](https://docs.astropy.org/en/stable/api/astropy.coordinates.SkyCoord.html#astropy.coordinates.SkyCoord)), which provides `transform_to`, so we can transform the coordinates to other frames." + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.coordinates.sky_coordinate.SkyCoord" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import gala.coordinates as gc\n", + "\n", + "transformed = skycoord.transform_to(gc.GD1Koposov10)\n", + "type(transformed)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is another `SkyCoord` object, now in the `GD1Koposov10` frame." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next step is to correct the proper motion measurements from Gaia for reflex due to the motion of our solar system around the Galactic center.\n", + "\n", + "When we created `skycoord`, we provided `distance` and `radial_velocity` as arguments, which means we ignore the measurements provided by Gaia and replace them with these fixed values.\n", + "\n", + "That might seem like a strange thing to do, but here's the motivation:\n", + "\n", + "* Because the stars in GD-1 are so far away, the distance estimates we get from Gaia, which are based on parallax, are not very precise. So we replace them with our current best estimate of the mean distance to GD-1, about 8 kpc. See [Koposov, Rix, and Hogg, 2010](https://ui.adsabs.harvard.edu/abs/2010ApJ...712..260K/abstract).\n", + "\n", + "* For the other stars in the table, this distance estimate will be inaccurate, so reflex correction will not be correct. But that should have only a small effect on our ability to identify stars with the proper motion we expect for GD-1.\n", + "\n", + "* The measurement of radial velocity has no effect on the correction for proper motion; the value we provide is arbitrary, but we have to provide a value to avoid errors in the reflex correction calculation.\n", + "\n", + "We are grateful to Adrian Price-Whelen for his help explaining this step in the analysis." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With this preparation, we can use `reflex_correct` from Gala ([documentation here](https://gala-astro.readthedocs.io/en/latest/api/gala.coordinates.reflex_correct.html)) to correct for solar reflex motion." + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.coordinates.sky_coordinate.SkyCoord" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gd1_coord = gc.reflex_correct(transformed)\n", + "\n", + "type(gd1_coord)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a `SkyCoord` object that contains \n", + "\n", + "* The transformed coordinates as attributes named `phi1` and `phi2`, which represent right ascension and declination in the `GD1Koposov10` frame.\n", + "\n", + "* The transformed and corrected proper motions as `pm_phi1_cosphi2` and `pm_phi2`.\n", + "\n", + "We can select the coordinates like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "phi1 = gd1_coord.phi1\n", + "phi2 = gd1_coord.phi2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And plot them like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(phi1, phi2, 'ko', markersize=0.1, alpha=0.2)\n", + "\n", + "plt.xlabel('ra (degree GD1)')\n", + "plt.ylabel('dec (degree GD1)');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remember that we started with a rectangle in GD-1 coordinates. When transformed to ICRS, it's a non-rectangular polygon. Now that we have transformed back to GD-1 coordinates, it's a rectangle again." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pandas DataFrame\n", + "\n", + "At this point we have three objects containing different subsets of the data." + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.table.table.Table" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(results)" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pyia.data.GaiaData" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(gaia_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.coordinates.sky_coordinate.SkyCoord" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(gd1_coord)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On one hand, this makes sense, since each object provides different capabilities. But working with three different object types can be awkward.\n", + "\n", + "It will be more convenient to choose one object and get all of the data into it. We'll use a Pandas DataFrame, for two reasons:\n", + "\n", + "1. It provides capabilities that are pretty much a superset of the other data structures, so it's the all-in-one solution.\n", + "\n", + "2. Pandas is a general-purpose tool that is useful in many domains, especially data science. If you are going to develop expertise in one tool, Pandas is a good choice.\n", + "\n", + "However, compared to an Astropy `Table`, Pandas has one big drawback: it does not keep the metadata associated with the table, including the units for the columns." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It's easy to convert a `Table` to a Pandas `DataFrame`." + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(140340, 8)" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "df = results.to_pandas()\n", + "df.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`DataFrame` provides `shape`, which shows the number of rows and columns.\n", + "\n", + "It also provides `head`, which displays the first few rows. It is useful for spot-checking large results as you go along." + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
source_idradecpmrapmdecparallaxparallax_errorradial_velocity
0637987125186749568142.48301921.757716-2.5168382.941813-0.2573450.8237211.000000e+20
1638285195917112960142.25452922.4761682.662702-12.1659840.4227280.2974721.000000e+20
2638073505568978688142.64528622.16693218.306747-7.9506600.1036400.5445841.000000e+20
3638086386175786752142.57739422.2279200.987786-2.584105-0.8573271.0596071.000000e+20
4638049655615392384142.58913622.1107830.244439-4.9410790.0996250.4862241.000000e+20
\n", + "
" + ], + "text/plain": [ + " source_id ra dec pmra pmdec parallax \\\n", + "0 637987125186749568 142.483019 21.757716 -2.516838 2.941813 -0.257345 \n", + "1 638285195917112960 142.254529 22.476168 2.662702 -12.165984 0.422728 \n", + "2 638073505568978688 142.645286 22.166932 18.306747 -7.950660 0.103640 \n", + "3 638086386175786752 142.577394 22.227920 0.987786 -2.584105 -0.857327 \n", + "4 638049655615392384 142.589136 22.110783 0.244439 -4.941079 0.099625 \n", + "\n", + " parallax_error radial_velocity \n", + "0 0.823721 1.000000e+20 \n", + "1 0.297472 1.000000e+20 \n", + "2 0.544584 1.000000e+20 \n", + "3 1.059607 1.000000e+20 \n", + "4 0.486224 1.000000e+20 " + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Python detail: `shape` is an attribute, so we can display it's value without calling it as a function; `head` is a function, so we need the parentheses." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can extract the columns we want from `gd1_coord` and add them as columns in the `DataFrame`. `phi1` and `phi2` contain the transformed coordinates." + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(140340, 10)" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['phi1'] = gd1_coord.phi1\n", + "df['phi2'] = gd1_coord.phi2\n", + "df.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`pm_phi1_cosphi2` and `pm_phi2` contain the components of proper motion in the transformed frame." + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(140340, 12)" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['pm_phi1'] = gd1_coord.pm_phi1_cosphi2\n", + "df['pm_phi2'] = gd1_coord.pm_phi2\n", + "df.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Detail:** If you notice that `SkyCoord` has an attribute called `proper_motion`, you might wonder why we are not using it.\n", + "\n", + "We could have: `proper_motion` contains the same data as `pm_phi1_cosphi2` and `pm_phi2`, but in a different format." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot proper motion\n", + "\n", + "Now we are ready to replicate one of the panels in Figure 1 of the Price-Whelan and Bonaca paper, the one that shows the components of proper motion as a scatter plot:\n", + "\n", + "\n", + "\n", + "In this figure, the shaded area is a high-density region of stars with the proper motion we expect for stars in GD-1. \n", + "\n", + "* Due to the nature of tidal streams, we expect the proper motion for most stars to be along the axis of the stream; that is, we expect motion in the direction of `phi2` to be near 0.\n", + "\n", + "* In the direction of `phi1`, we don't have a prior expectation for proper motion, except that it should form a cluster at a non-zero value. \n", + "\n", + "To locate this cluster, we'll select stars near the centerline of GD-1 and plot their proper motion." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting the centerline\n", + "\n", + "As we can see in the following figure, many stars in GD-1 are less than 1 degree of declination from the line `phi2=0`.\n", + "\n", + "\n", + "\n", + "If we select stars near this line, they are more likely to be in GD-1.\n", + "\n", + "We'll start by selecting the `phi2` column from the `DataFrame`:" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.series.Series" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "phi2 = df['phi2']\n", + "type(phi2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a `Series`, which is the structure Pandas uses to represent columns.\n", + "\n", + "We can use a comparison operator, `>`, to compare the values in a `Series` to a constant." + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.series.Series" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "phi2_min = -1.0 * u.deg\n", + "phi2_max = 1.0 * u.deg\n", + "\n", + "mask = (df['phi2'] > phi2_min)\n", + "type(mask)" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('bool')" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mask.dtype" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a `Series` of Boolean values, that is, `True` and `False`. " + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 False\n", + "1 False\n", + "2 False\n", + "3 False\n", + "4 False\n", + "Name: phi2, dtype: bool" + ] + }, + "execution_count": 102, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mask.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A Boolean `Series` is sometimes called a \"mask\" because we can use it to mask out some of the rows in a `DataFrame` and select the rest, like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.frame.DataFrame" + ] + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "selected = df[mask]\n", + "type(selected)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`selected` is a `DataFrame` that contains only the rows from `df` that correspond to `True` values in `mask`.\n", + "\n", + "The previous mask selects all stars where `phi2` exceeds `phi2_min`; now we'll select stars where `phi2` falls between `phi2_min` and `phi2_max`." + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [], + "source": [ + "phi_mask = ((df['phi2'] > phi2_min) & \n", + " (df['phi2'] < phi2_max))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `&` operator computes \"logical AND\", which means the result is true where elements from both Boolean `Series` are true.\n", + "\n", + "The sum of a Boolean `Series` is the number of `True` values, so we can use `sum` to see how many stars are in the selected region." + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "25084" + ] + }, + "execution_count": 105, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "phi_mask.sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And we can use `phi1_mask` to select stars near the centerline, which are more likely to be in GD-1." + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "25084" + ] + }, + "execution_count": 106, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "centerline = df[phi_mask]\n", + "len(centerline)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's a scatter plot of proper motion for the selected stars." + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pm1 = centerline['pm_phi1']\n", + "pm2 = centerline['pm_phi2']\n", + "\n", + "plt.plot(pm1, pm2, 'ko', markersize=0.1, alpha=0.1)\n", + " \n", + "plt.xlabel('Proper motion phi1 (GD1 frame)')\n", + "plt.ylabel('Proper motion phi2 (GD1 frame)');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looking at these results, we see a large cluster around (0, 0), and a smaller cluster near (0, -10).\n", + "\n", + "We can use `xlim` and `ylim` to set the limits on the axes and zoom in on the region near (0, 0)." + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pm1 = centerline['pm_phi1']\n", + "pm2 = centerline['pm_phi2']\n", + "\n", + "plt.plot(pm1, pm2, 'ko', markersize=0.3, alpha=0.3)\n", + " \n", + "plt.xlabel('Proper motion phi1 (GD1 frame)')\n", + "plt.ylabel('Proper motion phi2 (GD1 frame)')\n", + "\n", + "plt.xlim(-12, 8)\n", + "plt.ylim(-10, 10);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can see the smaller cluster more clearly.\n", + "\n", + "You might notice that our figure is less dense than the one in the paper. That's because we started with a set of stars from a relatively small region. The figure in the paper is based on a region about 10 times bigger.\n", + "\n", + "In the next lesson we'll go back and select stars from a larger region. But first we'll use the proper motion data to identify stars likely to be in GD-1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Filtering based on proper motion\n", + "\n", + "The next step is to select stars in the \"overdense\" region of proper motion, which are candidates to be in GD-1.\n", + "\n", + "In the original paper, Price-Whelan and Bonaca used a polygon to cover this region, as shown in this figure.\n", + "\n", + "\n", + "\n", + "We'll use a simple rectangle for now, but in a later lesson we'll see how to select a polygonal region as well.\n", + "\n", + "Here are bounds on proper motion we chose by eye," + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [], + "source": [ + "pm1_min = -8.9\n", + "pm1_max = -6.9\n", + "pm2_min = -2.2\n", + "pm2_max = 1.0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To draw these bounds, we'll make two lists containing the coordinates of the corners of the rectangle." + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [], + "source": [ + "pm1_rect = [pm1_min, pm1_min, pm1_max, pm1_max, pm1_min] * u.mas/u.yr\n", + "pm2_rect = [pm2_min, pm2_max, pm2_max, pm2_min, pm2_min] * u.mas/u.yr" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what the plot looks like with the bounds we chose." + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(pm1, pm2, 'ko', markersize=0.3, alpha=0.3)\n", + "plt.plot(pm1_rect, pm2_rect, '-')\n", + " \n", + "plt.xlabel('Proper motion phi1 (GD1 frame)')\n", + "plt.ylabel('Proper motion phi2 (GD1 frame)')\n", + "\n", + "plt.xlim(-12, 8)\n", + "plt.ylim(-10, 10);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To select rows that fall within these bounds, we'll use the following function, which uses Pandas operators to make a mask that selects rows where `series` falls between `low` and `high`." + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [], + "source": [ + "def between(series, low, high):\n", + " \"\"\"Make a Boolean Series.\n", + " \n", + " series: Pandas Series\n", + " low: lower bound\n", + " high: upper bound\n", + " \n", + " returns: Boolean Series\n", + " \"\"\"\n", + " return (series > low) & (series < high)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following mask select stars with proper motion in the region we chose." + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [], + "source": [ + "pm_mask = (between(df['pm_phi1'], pm1_min, pm1_max) & \n", + " between(df['pm_phi2'], pm2_min, pm2_max))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, the sum of a Boolean series is the number of `True` values." + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1049" + ] + }, + "execution_count": 121, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pm_mask.sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can use this mask to select rows from `df`." + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1049" + ] + }, + "execution_count": 122, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "selected = df[pm_mask]\n", + "len(selected)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These are the stars we think are likely to be in GD-1. Let's see what they look like, plotting their coordinates (not their proper motion)." + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEGCAYAAABsLkJ6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA7aElEQVR4nO2dfZxkV1nnf0+TAJJEQDNd3QsZBtCoSc0IyRACCpGXQZbtEV+QFRXZzqwxLJOOS0bSEFzNZsAAI5jGJQs6M7Dix4i66nbDMsuMGpE1IZ1M13SFF4WQSLqqqyYqr4oxXY9/1L2d23fuyznnnrdbdb6fz/10V9W95z7nOS/POc95I2ZGIBAIBMaPCdcCBAKBQMANwQAEAoHAmBIMQCAQCIwpwQAEAoHAmBIMQCAQCIwpZ7kWQIbzzz+fd+zY4VqMQCAQqBV33333Q8y8Lf19rQzAjh07sLy87FqMQCAQqBVE9EDW98EFFAgEAmNKMACBQCAwpgQDEAgEAmNKMACBQCAwpgQDEAgEAmOKcwNARI8hopNEtORalkAgEBgnnBsAANcC+KxrIQKBQGDccGoAiOipAP4DgN92KUfAHsyM9fV1hG3I64WJdAt5wT2uewC/AeBNAAZ5NxDRVUS0TETLp0+ftiZYFULGzqfX6+HIkSPo9XqZvwfd+UlZupkI05e8kCdH+ntf5JXBmQEgohkAfWa+u+g+Zv4AM+9m5t3btp2xktkYZYlZ9LuJwjIqNBoNXHnllWg0Gpm/B935SVm6mQgznReyypyNSjcvT6a/r2XeZWYnF4BfA/AggPsBrAP4JwAfLnrm0ksvZVt0u11+29vext1uV/r3wWDA3W6XB4OBaTFHjrrprk7y1klW5jPlzSpzZeXUhBx53/usXwDLnFGnEnvQXSGiHwJwgJlniu7bvXs329oLiJnR6/XQaDRARNK/jyKqcR5lXa2vr+PIkSO48sorMTU1pT18nTo3Lasu8uKc9b2vecs3uYjobmbenf7e9RiAVViiu0hEmJqayk28st9HEVWfrUjXWCZt0gwGA5w6dQqDwaByWLJUcY2IyKnqVsh6Li2rTT3FVIlzVpmTLYe24lwbd1BWt8DXq6oLyEZ30Sa2u5xl78vTr4icVdKm1Wrxnj17uNVqVQ7LJiJyqqaxaZ2rYjLOut6vA9/cQfDZBSRKVRcQG+yWmQw7D9+69FV0UOXZwWCAdruNZrOJiYkJqbBcpJsP73b1/rrG2Zbcpt4TXEAw67Zx0eUzMTNDFM7oSlfRb5VnJyYmsGvXLkxMTEiH5bKr7tqN6OL9dY1znE/W19eNupBs58exMgAmcVEZuyxMNjNqlrHRFZZLI+oSnTqtw3urEucTAEbzve38GAxACaIZ1nRlbLvglL3PZkbVaWzSYblukdokmaZ5OjWdz6qkpUvjEeeTqakpo/nedn4MBqAEX0bzbctR9j6bGVWnsRnFFr9oxRin6erqKiYnJ8/QAzNjdXUVhw8f9rKF60NZHLUGQzAAJZie5mdDjjq8Lw+dg2KuByBjGUTzhGzFXlYxNhoNzMzMYHFxEf1+/4yKrNfrYWlpCXv37rXWwpXRhy95EqivKytNMAAlVLH4Olsstlsequ/TXTBMun9cICODTMUuUjESEXbu3Il9+/Zl3huHs3PnTmv5TEYfPrW+RbapqAVZc0N9vWxsBaFz/q7rucC63+9ibnnWO2XilbzXdXqk5dF5r25svduHNFFBZJsKn0DOOoCx6QGw5u60CHGLBYBS60BU5jx0t3hFwtPdTc9q9am2on1oQcrIUHZv1fxRhK3eku40MamTJGm5fXJPSZFlFXy9qvQARC20iRaJauugaqtCJS5Fz5hurYmGX5dWtGlMtjrrqjffW+KuwLivBGaHA4Cq75Z5Tlf8qq4uriJH/O7Z2VkQUWYYLtNRFFsy2tZF0L06ruUa+5XALrv/qu9WWdG6urpaqftbtStbxXUgstjGh4HcMmzNsbedp+ugex/cfFn4qrux6QGMOszDOdyLi4vYt28fpqamzmh12GiF6HhHURiuWlI6emO+7d0ki+tWrM+U6ca17sa+BzDqZE3xS7c6bLRCZFpgeS3iojBctfB0TFes7UBhRNVJDToR7U0l79PdA0vi08JJGYIB8AQdmTNvZsLk5CTW19czV3+6RNUgmSzIeeiovHVUAi7insYHd0av18Phw4dLXZ5JWU3KXVfjHgyAZfIKsImFJXGF0+/3ceTIkczVn1VgZnS7XXS7XSU5VQuNiwrIlxacD5WvroNlquTxRqOBvXv3YnFxcYsRSIeZlDXdIJLpPZRRZYWzS4IBUEQ1gfMKcLpQ6SzoplonvV4PCwsLWFhYUJJTtVKta2tLBz7EPZ1uqnm1Sh6PXZ6xEchzcybdVrEPPm4Qlb23TL6iOsAHQy1E1txQXy+bh8InGQwG3Ol0uNPpKK/8i+dVb2xsaJ/rbpKydQFpvbjGhN6qhOlLOprE5KllsmFsbGxwq9XijY2NLfcly6uu9SZFdYBv6Y5xXwlchayWrmxLLG4RiLph6uByICJMT09jenrauZwxJlpeVcLMepZr4h4QxcY0Z9Ew+v0+lpaW0O/3t9yXLK+i7826L5l2RXWAL+W3jDANVIA40QEoJyrXdApd3eQ2IW+VMLOe9Wk6aN3StwzT8fEp7WTImwYaDMAIMGqFGBjNOMXYjFvZu7IqtFHWfVXqqpuwDmCESboZBoMBTp06hcFg4FqsStRmEE0Bm+6BMj1muTFM6H5U3F7JtBuFOAUDgPpnzmQhbrfbOHDgANrttmuxKuHDbJdRoEyPWcbIhO7rbtCTdUT8f9x7qmucgDE3ADYS0oZxSRbiZrOJQ4cOodlsGnufSXSMt4w6MnlKpbdhoodSd4OetaAMQK3jBDg0AER0ARH9ORF9lojuJaJrbctgIyFtt3wmJiawa9cuTEyIJa2L3k/RO32YNeN7j7COrWkdW4S4JGtBWXxIfJ0bKS57AI8AuI6Zvw/A5QDeQEQX2RTARkL63vJxUZkUvVOHT7pqBeJ7BWs7T9mukH3Uf9KA1WWKpxBZiwNcXAD+FMCeont0LgTzbaGGK1zoQfadsverHAoicnSkD3nGhQymDlnJWxzpg55HDfi8EIyIdgB4NoA7M367ioiWiWj59OnT2t7pYytDByzZWnPRmpF9Z9H9WfFVaSEn80Pe+2zkmbL0c5FvTW4lcuTIEbTb7cztG0aihe05ztcBENG5AG4H8DZm/t9F9+pYB8DRPN7JyUn0+/3azecto64LVVRgHp6BsLS0VCm+caULFA88x3nHZJ4pSz8RGWzIqYNRKYt10LeX6wCI6GwAfwTgd8sqf13IbslgEtnWugi+jzmIIqKbXq+HxcVFzMzMVIpvr9fD0aNHN/27edgYyFSZtpmmLr3bOC4TExPOy2IV6qLvLJz1AGiY2h8C8A/M/Isiz+jsAeha1l+FcWqtyyKiG13pYaIFpzNtZeWrQ4t0lKiDvr3bCoKIfhDAJwGsAoiXrb6FmT+W94zrrSB0V9h1yDh5mJa9zroB9MofGgqBqnhnAFRwbQDqXinpREelFPQpRlU92dJzSE9/8XIMoG7k+V9N+PJ9p+pYQzyAe/jwYaezaupA1VkxtnzUee/RnQajkKa+EAyABuo8CKSKjkppaWkJe/fuNTpgbTpt6lAZ2ZoYkPce3WkwjuXNFGPtAvJ5EHHUGRW3RPDPl6M7DUJ5kye4gDLQ1ZIIriF5bC32Mf2eUZl2m0Zn3i0rH4PBwPvFi6PK2BqAeCn07OysscJb167qKBsu3XEb1crIRt7NWwlsA9V8MGplY2wNgOjinyo0Gg3Mzs4m9zuyimpmdW24ZOWWub9ucbMBM6PT6aDVam0eJJTVsxGRXSZ+8Tuazab1XpRqPtCRf3zKA2NrAGx03WPjcvToUeMVTlamUs2srt0asnLLzD6pW9yy0F2B9Ho93HzzzZibm9s8SCirZyOiZ5n4uVwJrJoPdOQf142QLWTtEOfrpXM3UFvY2tkwa8fGuu6qqGu3UFO7WMrKIXtPGbrjNRgMeG1tjVdWVnhjY6PwvjI91zXPVUF291gXOkLObqBjPQvIFmxh1oKNd9QN2zqxNSPIt7T2TR7b5KW7TzPEwiwgh9jo8hERGo0Ger1eZdcAK7gYVJ6p8pwItgdobY35ZMXLpB5V5LGFy3jH5LmFXLsbRQgGwAJxRpicnCzMrFUzsy5Do3Iso+oqUFPGMf1eGxWFzTGfNF75lVOY1L2t1cdF5BnAWswQy/IL+XrVcQwgSZnvtqpvV5dvMSucMtnSz8SfO52O1HO6SMsro9sqMplMAxvvNUGR7qvK7cv4TxVspB1yxgCcV+oyV90NQFlC+1yIRY5MTBIXwE6n4yROeQYpPn4wfQxhluxVDXHyHTaOtayCybxXFLbp4yZ9LEvMW+WzkdbBAFjG9wxYhkihbbVatTNmSdl1t0rTvZ7kO2QNom39mZhZ5GM8fcH2zKlgACzjUxdUJYN1Oh2en5/nTqeTGV6r1eKDBw96ET8Z8g4i10Gyku90Ory2tsadTmdLD6DMJaYTmXQvulfFHRXnj6JGwjhj20DmGYAwCGwIn2YAlA0QMssfJL9z507s27fPi/jJoHvxUVJ3cZrH4X7wgx/cHBiO3zs1NWUtX6gsysrSh8rCvMXFRTzvec/D4uKilwPTrhEdIDY+uJ9lFXy9XPUA6t5NLZNfZRFZHXSiQ0YV3VV5t069uh6QNtHLGje86QEQ0TlE9BgzZshvXE+xY8kWepqy1kZWb6XsmSo6qRofUXSkW1kYeT091SmA6fdV0ZWuaYiy4ZjsZY0bpqeS5hoAIpogop8moo8SUR/A5wB0ieheInoXEX23EYk8xLU7x7QBUslkVXRSNT7JCqGoctCRbmVh6C6g6fe5mOdeFrbtCrmKUXRtPFy/v4yiHsCfA3gmgDcDmGLmC5h5EsALANwB4GYi+lkLMjrH9YIOWwZIJrNW0UnV+CQrhCJjoiPdRMLQWcjT7zN9ylaW7GVhF/2eFV5V/YgaRVlZbeD6/aVk+YWihDo77zeZe3RePs8CqoNPvAyfZi4VIbsmQfc70+geB5CVp8qMEp3jP3mzw1xNMU3e62o8wpd6AbJjAMz8r3m/EdG5Zff4Bhvuinlv6QVw7eoCit078WcAm61kW72zovR10UpPxjv5nqJ8niWPyv5FeTrPO+e5ar5Kx0lmL6T43n6/r7V8itYnMj3IgeTJaFrIsgplF4C/U3mu6lWlB2B6KwBfLL1usuJlMq7JdKqynYNuWVVaxbrmepfFW3RVad570s8UrQGpEg/V+0XSPWuhna5ekqpMIuGm10yY6oFDdiEYgDfmXNcB+Ie850xeVQzAYDDYXKBTVkh1Je4okKWLdGGr0r1Op0uyy55OLxU963Q/lBVikfeouGFk4r2xscGtVqtwX/8ymcoMgK78LpI2eeU26761tTU+fvw433TTTZkNiDLyXFjJ38vSRNTIpr+P0yyrPOnQd54BKBoEfjuAJwM4L3WdC027iBLRy4no80T0BSKa1xFmwbsyd2rM6xbLdFlt7Wip+3cR0rqIM87s7CwACJ/pmpYl/ry+vo6FhQUsLCyg1+tt6bKnj+y0OVspS97V1VUcPnwYq6urW3QaL3yamZkpfY9ofkveJxPvfr+PpaUl9Pv9M+IxGAxw6tSpzWMf49/Te/lPTU1hbm5u8/d0ON1uF29/+9vR7XZL5SmiKG2S+SPv6NakTESEhx56CO94xzvw/Oc/H41Go9C9lVU28lxYyd/L0iSvLsiL6+TkJGZmZtBsNjenzabdVUbdy1lWIVLK/wdwac5vX857TvQC8BgAXwTwDACPBdACcFHRM1UHgU25M9ItA5EWi0h4ZdsGlLVwTAzqJsOUGWDLc+fEJ1Gtra1ZczMlEW2xdbtdPnjwIJ84ceKMFqLKoGRZy1Elr2blvWQ8Wq0W79mzh0+cOJH5e1n8488rKyv8whe+kFdWVqTiKEqyR1W0d1Jaxo2Njc28FOfJTqezZUuKrLKVzsd5+bnovvi3Rx555IweWJE+4nyV3DJDJC/IAgUX0PcA2JbzWyPvOdELwPMAHEt8fjOANxc94/MsoJhut8vz8/M8Pz+vXPFm+TOzUPFLV6UoTJFCkC486QJqmyyDNhgMznClyBg7Fcr2XkpWWnn5osyVtLGxcYYBE3WNFukmTZ5REdVhulLMe1+ROy1pQJI+9iwdFhm7onTI2uwvyxVY1BArch/qaEzGSBsA0xeAVwH47cTn1wL4zYz7rgKwDGB5+/btlZRgg2SiqVYWJloAqu+WIc7oJ06c4D179nCr1cq9J1kBqQ5+iRijsngk74srnpWVFV5ZWanU0pel0+nw9ddfzysrK7kVe1xp5RkCEfmy7lEd9BV5R1q/ZTuxZskY91xWVlZKDUiWkUn69rOMp2h5S6dDVg+gbOxKpmenozEZo2QAALwOwD0AvhldywB+rugZ0QvAT2YYgPcWPWOiB2CyUBdZftlwRFrJOuJSReZ0D+CRRx4RyuxlBURU1qzKJq8Vl1d5tFqtzUKX7par7oAqWjEXtQSzKijZnUXz5MgyAHnpJHJ4fDpOsc6KeohFxD2ABx98kOfn53llZaXybDCR1rVqQ6yoDJWVr3RZcNYDAPBzAE4CeBGAJwJ4EoAXA7hbhxHwxQWkq5JOI5N4Iq4ckVbTysoKX3/99by2tqbsGtJpEPNcWUWuAJH0yHs+z52TfCbL95uu5LJacFW2NxY1RrK6l70/Tz9Z4WTJ3O12ef/+/Zv+/7J3J1v8eWHLxCE2VGX5W4ROp8PXXHMNX3/99bl5TbZuKMrX6XvyZNfdG4tRMQB3ANiR8f0OAHfkPSd6ATgLwH0Anp4YBL646BlVA6Ba4alUhkWts7KupUilV5Rx9u/fz/v37y9tIWVVzCJdU1l9xC23tbW1TB9r1kCfiOEUqVDThTEeazh+/PjmgLNoYRPtgeVRJd11vCfr93TlLJLWyR5AnKZF41R5YSYrSBkdFMkomzfjtE+73IrykGzLX6X+8MkAfEblN5kLwCsA/E00G+iGsvtVDYBqQVNpqeS1euPfsioSmYxS1I2Pfch5XeysSjFv0VU6/qL6SFbgZb7qLDmy3iuqgyRZRubYsWPcbDZ5eXmZu90ur62tbbYoZf22OtAdrmxlmvSLy47DFDV0ZOSrooNkeKqtdRGjXBR2UT4RlamK0RFFxQDcrfKbyUtHD0C1shU1BmW/ZRU0mZa2SOs3r6Cl312mlyK58uTodh8duMprHabDzZtxU6VXFhui5Klct912G5977rl86623bnElxK2u5GBbkSH3lSo9NNkejkpFpbJILe+9g8HW2UG6jKlIOUgiahyKKDI6umbHqRiAfwJwKuNaBfDNvOdMXjrGAFR7A8k5xlUG37IyRVFLOx2GSIHLe4dMIZdxJ6S/L3LhpA1R8rNIZSuTful7v/zlL/NrXvMaXl5e3tLNzpJZpoUrW/mI3G+q15FE1cglew8y5Ui17OWFoSO8quhIpzyjo/PYVRUD8LSiK+85k5cOA6Ba+ERatnnIujSyWkpVWxqyFbqpwpU0RHE8b7rppi1ztHUdNp/Xg5FptYq8T1ZXIvfb6IGoVl5FrVMdvTdRmW0Yybx3p78ry1MqsuqMn3frAFQuWwvB8lrgqlOyZBOyqAeQlfnW1tZy55CLkn6nag+gjCw3UnIg0vZh8zoKmaxrQ8Zg2zxEXhRVl4hrqvbUylw1IhMvknlfVwNEBJUewD4Av5T4vAbgawC+DuD1ec+ZvGwZANstC9X3x5lqZWWF9+/fX2nBiA4jpeOdOguHida7Shgqcqr0VkTeZRrR9+uSUyacqj21KumUbCRUcWOqomIA7gLwnYnPJ6O/jwfwl3nPmbxsuYB0PmeSZObTsWBEpmXqw4HfZYVDpPBUNTgiPcOk20u01axa8E23wHWVA11yyoRTtQdQBdUegI6Bc2Y1A3B36vNbEv/flfecycvlILBqAopS1Y+vQyZffNN55Pn0dbup8lCtqGPXlswYjq8NFV0Vt4segEtU5XTZA/hCzvcTAO7Le87k5UsPwEQrS8TvX/ReUy6ZvHtc+KZFuuQmqVJR16WiKmNU4lEXTI8B0PC3MyGi92F48MtbU98fBHA+M1+d+aBBdu/ezcvLy7ZfewbMZ+6hbiLM9fV1HDlyBFdeeSWmpqYK32tCJll5bb8zrR+XsgUCPkNEdzPz7jO+LzAA5wD4bQDPwXCbBgD4fgw3hPvPzPwNQ7Lm4osBsEWoyIrJ00+eYQgExhVpA5B48BkALo4+foaZv2hAPiHGzQCMA7Z6U7oJxjlQJ/IMQOnRjsx8HzMvRpezyj8wmpg47k7l6EhZjB7TF7AOc/XjU3WGYwstZ/sGAqqontnrmrrKPa4wD88y7na7mZWzLoNet4ZBqQvIJ1y5gEJ3P1A3xtkNljeh4pZbbgEAXHvttWeMDemKi686UXYBRQ//IBHNRv9vI6Kn6xbQJrLdNF1WvW7dQ9+oq/7y5E5+rztuplqiSTl9be1mydVoNDA3N4drrrkmOaV9E11uw2Q4dcivpQaAiH4FwPUYntgFAGcD+LBJoUwjm3GrdPfrUGDqQp30J5Luye91x82Uiyopp69usCy5iAjT09OYmJjA0aNHreShWuTXrMUByQvACgBCtBVE9N2psudMXLr2ArK5mMX0CuK6UWU5fp30J5LudYxbXeRkVl+4N4qrlJGzEEzEBfRwFAADm+sDao2NWSIxydaIzff6imyrKHl/rD8A2rvWLNhdz7ov6zuRdE9+X5e8URc5gey8JiK/rpZ7HXQlYgA+QkTvB/AkIvp5AMcB/JZZsUYHnzOBaKVX9OxgMJAKQ9ZtkHV/lQKaF2fRMLPuU61oAmZRdVH56toygdAsICLaA+BlGLqCjjHzJ0wLloWtWUDs6Ui+bqqsmI2fnZmZwdLSkrZVtyK6r5I+VbePyLpvXPKLbwS9i1NpFhCGB7cfY+YDAD5FROdplc4zajF4o4EqLZ342WazqbW1JKL7Kq3rZJyTvYGsMLN6C1n3qbimuGReuk1Ue4JVepBVYWasrq7iyJEjWF9fryRHMh4u41QklylEZgH9PIA/BPD+6KunAPgTYxJ5QF26gFUzSJWKNH52YmJiSxhVZTKt+2Scy4xNlfEKkXsXFhawsLDgvKGh2uBx2VDq9XpYXFzEzMwMAFSSQ3U2lukK2op+s0aGkxeGs4Aei62zgFbLnjNx2ToRzFdktod2hY8y5aH7PAHZw2V0HOKjA1/PHhB9t45DfVTCqsvhO8z5s4BENoO7k5mfS0QnmfnZRHQWgHuYeZc5s5TNuG8GJ7M9tCt8lCkQiNG5U6ypvG4i3CpjALcT0VsAfFs0GPwHABa1SBXYApd0KdPuER9nmojIVBZPUXSFY4uq8voe31g+2ZlhNlFxMebp3VT5s+laEzEA1wM4DWAVwC8A+BiAtxY+UQIRvYuIPkdEp4joj4noSVXCc4GJwliW8C4r/CrxTT87rhtvVZXX9/jG8rXbbW/llC1DHA02Hz582Fp8rI5BZvmF4gtDA9EuukflwnBK6VnR/+8A8A6R53waAzDh/3PlUxV5b5X4mjrK0aS+XJ37LPu8rkPDdcgSf7exsaHtjGPXxHm31WrVTvYkkD0TmB+trH8XwPay+1QvAD8G4HdF7jVlAFQyZ10zdBaiB5urxldkKwTfqMtgdqvV4j179nCr1bL6Xln91EWfaXzOozLkGQCRQeA/w/BYyE8D+Gai5/AjOnogRLQI4PeZOXODOSK6CsBVALB9+/ZLH3jgAR2v3cK4HyHIjgZuXehdNK6udCLLYDBAu91Gs9nExITZ4z2SOgEgpZ88fdZFz3WnypGQV2R9z8y3lzx3HEBWqb6Bmf80uucGALsB/DiXCQJzs4BCJnSDiN51p42M0Qn5YisqBrtMh7JhhjRRI88AGHHriFwAXgfgrwE8QfQZ3S6gUenejTK6XQc+zfOuGyrlpUyHsmGGNFEDFVxAX0e0E2iCrwJYBnAdM9+nYI1eDuDdAK5g5tOiz+nuAfjs+uHQ0gHgVg8hDaqjW4chTdSosg7g3QB+CcMtIJ4K4ACGu4HeBuCIojy/CeA8AJ8gohUi+p+K4VTC5y0ffJ/yJ8tgMMCpU6cwGAyknnM59ZWI0Gg00Ov1UNZQKoPZ7zn8ptCdfj6ufSnC93QXMQAvZ+b3M/PXmflrzPwBAK9g5t8H8GSVlzLzdzHzBcz8rOi6WiWcqvicmXw2Tiq0220cOHAA7XbbtShSxIY4veGYbMHOMuhFYfhecQTE8L0hJ2IABkT0aiKaiK5XJ34LudMQosZJpKKwUZmUvaPZbOLQoUNoNpvGZDBBbIiBrRuO6ThWtCgMnyoO1fzD7M+Op67wvSEnYgB+BsBrAfQB9KL/f5aIvg3AfoOyBQQQqShsHGpf9o6JiQns2rVL61TFqoZN5PnYEE9NTW0pyLIFO8ugF4XhsuJI66XKbqG+7HjqiipeBiu9wKyRYV8vn1YC+4LqGae6Z3S4mFFVZUbIYDDgVqvFBw8eDDNKUhSt3M5a7Vu00M+XHU/rQlKXOmc8QfVMYCK6kIhOEFE7+ryLiCrtBVQn2LEvlku60SItjKx7ZFt1cYaZnZ3NbJW6GE+p0kru9XpYWlrC3r17ve2e60I2DxdtOpi1309eXiIiTE9PY3p6unb7V7kiqUsrvcAsq5C8ANwO4DJsPQ9A+/5AIpeLHoDrecfdbpfn5+d5fn7eyb5D8X2dTkdKD76vsfBdviqYPDdCpgfgGtdlV4W0LnXpFhX2Aror+nsy8d1K2XMmLhcGwHXmdt2NjgtRp9MZuQU7rtO2Knnym9p8r274Hm/TmzAmyTMAIiNyDxHRMxHN+CGiVwHoau6IGIcFuoNZ97gexHHdjY67ofFAqKgMMt1XHXpSwaeZNirkyV+HcyN0o7vs2iBOv9XV1dy8b9oNJGIA3oDhecDfS0RrAH4RwOuNSGMQ0dkyhw8fLkwQ3e/0HdVCJPOcKz2ZKFw2jVme/L5XfCaomodcNEIajQZmZmawuLjo7AyQ0q0gEoKcA2CCmb9uRBIBqmwFwSy28djq6iqWlpaMHxkX/zY5OYl+vz/WS9tF0qYu+Ly9yChTNQ+5SjdbeV96N1AiemNRgMz8bk2yCWPjTGCdCZIXVtLQzMzMaDM4rjCRietqFOoq97gz6ummshfQedG1G0OXz1Oi62oAF5kQ0iZ5Xb68/V9Uuoh53dJer4fFxUXMzMyg2Wx6vVJQhKLut2rXuq7uMxvuF5vuClfjM7bfnZduLuNvg1wDwMw3MvONAM4HcAkzX8fM1wG4FMNN4WqN7DJ8lQopz0fbaDSwb98+7Ny5ExMTE7X31ybjmS4wqhW5iH9epnCOUkG2aRxdGmId7y5L97Lf69oQESZralDyAvA5AI9LfH4cgM+VPWfi0jkNtGgKlq6VszbxQb6s1bUm5ZKZIufrtFTZfFj2jE356vDusnTXfV6Br6DCeQA3AHg1gD/GcCroj2F4hOOvGbRLmdgYA6grPgw+xjLMzMxg586dxns1LOG3lbnXJkXp5kOaAv7qrgyOWvcAcnvZdY2bLMpHQkYPXwLgBdHHv2Tmk5rlEyIYgHx8yMg+yFA3inRm0sDJ3O/DMZoq4QYD+ijSg8BEdG78PzPfw8y3RNfJrHtGnbg1IWIwXeDD3G+TMviuf1WKdGZyLYXM/Y1GA7Ozs0m3sDY5RNE5Bmcbn8cRimYB/SkR/ToRvTBaAwAAIKJnENE+IjoG4OXmRfQDnxNxHKib/k0YrKIwZSs7mfuJCESEo0ePluo/DndyclJr/FUqcx8aRYCa7LYaPEWzgF4C4ASAXwBwLxF9jYj+HsCHAUwBeB0z/6FR6TzCl9bEuKJL/7YKlgmDlQwzHQ/Zyk72flH9x+H2+32t8felMldBRXZbDR7hlcA+EMYAAlWx5RcW9fuq+vnjCsK1fzsPH/zedUa3/lQWggUKGAWf9CjEQRZTLoo0oq0+mZZeMkzfe6R1brH7gC39jbUBGAwGOHXqFAaDgfSzsod8+4itbqZPejHhoqgSP9cVuU9pY4pxiKMqY20A2u02Dhw4gHa7Lf2s7CHfPmKr8jGhl7xCLVrYdcZ9fX0dt9xyy+acc5kKR7Wlp0unrvKszUq5buXSJiJHQl5OROclPp9HRM81K5Ydms0mDh06hGazKf1sVsF13ZqTxVY304ReivZZEinsJuNuo8LRpVNXedZmpVy3cmkTkZXAJzHcCyg+EGYCw2XFl1iQbwu2B4FtDGSFwTI1HeQ940Kf6XeOS5pWiadPC8bGgSqDwMQJK8HMAwBnaRLqABExEZ2vI7wiVLqcNvz8oXuqpoO8FryLwcf0O10NgNr2dVfJu6Z0FMqTHCIG4D4imiOis6PrWgD3VX0xEV0AYA+Av6salggqGWNychIzMzPYtm3bZsHSncFC93Q0deBi4NF25edjuvkok8+IGICrATwfwBqABwE8F8BVGt79HgBvQnTWsGlUMka/38fS0hLuvffezYKlO4OJtoRGeSbDKE4ZLKuMZdNT5H5bU1xjfEw3H2Uqw2XZLjUAzNxn5p9i5klmbjDzTzNzv8pLiehHAKwxc0vg3quIaJmIlk+fPl3lndIZIy5QyUNbXGWwqq27UTIguuNiQjdl++eY2LvH1CpcnajoepTybhZO3VZxBs27AFyI4ZYQ7ejzLgBvFXjuOIB2xvVKAHcCeGJ03/0Azi8Lj1nveQBFpPcA92FP8Koy+LofvgoqcSnSnyndFIUrm54y9/uQX/NQ0XW32+WDBw9yq9XiwWDgdfxUsBEf5JwHIGIAbgdwGYCTie/aZc8VhLcTQD+q+O8H8AiG4wBTZc/aMgDpTDoKlWfdC01SfpW46KyMRam7zk2gcshNfNBQnH7ptAx6LqeKAbgr+nsy8d1K2XOiV+gBBESoaoTrmoZVDZ/Ke1wgczJXWtZRaKCZJs8AiAwCP0REz0Q0WEtErwLQlfAy1Q7RaX084r7JNC7jW3XwXcfYjYv4J/3Dqr5iEbldT58sS99k+qXTUjRv2E6/OtQPIgbgDQDeD+B7iWgNwC8CeL0uAZh5BzM/pCs8m7guNLZxGV8fZneIxF93oU9WbqpGUERuk9MnRXRSJX1NbLyngzrUD8LbQUeHwkww89fNipRP1ZXAzHpXCeoOzwQ6ZaxDfE0iEn/T202rpIHrdDOhkzrowbXek+StBM41AET0xqIAmfndmmQTpqoB8OWMUJuMY5xdYrrQ1zE9TTS8VldXsbi4iH379m2ej+BDResrKltBnBdduzF0+Twluq4GcJEJIU0zjqsE49XMk5OTrkUZC0y7quqYh5M60eEi6/V6WFpawt69e7ccjlPF1ZKWqw7+ex0UHQl5IzPfCOB8DDeDu46ZrwNwKYCn2hJQJz74kW0Tr2bu9yut3Qt4Qt3zsI7KOjaCO3fu1HY4TlouGTnrbCxEBoG3A3g48flhADuMSFNDfE/8OrYYAb16LQvL9zT0AV06ksmPee80sfleUq54iuTs7KyQnHUY7M1DxAD8DoBPE9GvEtGvYLiK90NmxbKDru6oz4lf1xajTr2WheV7GuqiSn4vOpBeBpn8aDNdknL1ej0cPXp0c8ppGXVtZAEoXwgWJfIlAK6NrmeLPGPi0r0QTMcCEtcLaGxhO54631cWlsrq1DpSJb8ndWFrUZ6rdPEl3XXKgQoLwcDM9zDzLdF10pw5souO3RPr2sKWpUprjBVajDr1WhZW3u+j1jOo0lJN6qhqi7fqqW3pIzhVKMqTvpRpG/lvrM8ErsPuib5QpdDXtSIti7OKYXOJroqtajiuF50B9TgL2YZraawNQJwYk5OTyor2pRKoKkfZ81UKvQ8FXiWcsjinKxFf8oIqJuQv06vKO6empnDttddmroMQrdhdn4W8vr5udHW0KGNtAOLE6Pf7yorW3ZKIC8RgMJAqGEVyiBQyky0ikxlZl9wq4aQrEZM6tGFcTMynNzEAX5SfRCt23WsTRInlA+BHrzhrYMDXS/cgsI5BFt0DRvEA28rKCs/Pz3On06ksh8ignS8DX7LoktvHvJDExo6XOuSX3arZh3znYjdR2/FGziCw8F5APlB1K4g6wDxcNj8YDPDe974Xc3NzmJ6e1hJmWCpfX/LSUDZtTecFlfBd50/X77eBylYQAQFYc/cx7ppOT0/n+jlVwxzVzD0O6JqpZHrwUyWvuZ4kMM7lI/QAKlLHzbkCo4NvPQAVfJQJ8FcuFUIPwBC1XgWYQndvpq7USQ95g5mDwQCtVgudTmfT3xvPm/ettetrC9x1z8QGwQAIklcp+Jp5VdCxwGYUqGvBT8rdbrcxNzeHm2+++YzTxEwZuKxw62RM04xS4y6PYAAEqWulEHgU0cqorgU/KXez2cTCwgLm5+fPOE3MVF7OMjKxizT5rrJ0qLPRqB1ZU4N8vWwdCp/FOOw/4oMMJgmHhw8xlc5Z+wV1Op0z3lWWDr5MebWZX0yXPYRpoH4TBpMfhQ0NvqmEa0qWUadIb2U6taFzkfJmM+2L5GEN4zdhENhzRN0OcWaok+GWxZSLIh6vASCsw+D6KyadH0UqK9XN+YreJ1sebLv5yuQskqfX62FhYQELCwva82EwAJ4gOpgsWyH5ajCK5DJdOGV0WNfxAFtUOUnL5ftEypvNMynKtreYm5vD3Nyc9nwYXEA1Q7Zb6qtryaVcMjpM3xt/npycRL/fH3vXUJ5+bK00Nvk+nWG7diUGF9CIIDvttNFoYHZ2dnPQxxdUW9Y6ejRVTqWKP7fbbWeuIV96dVmVmulp0VWOg5TVm80zKVzhzAAQ0TVE9HkiupeI3ulCBpEM4UthUyEuoABw9OhRr/zYqgXCtk8+bajiz81m05lryJdxCRO7h5rEF735hBMDQEQvAvBKALuY+WIAh1zIIZIh6pxpYtkBjIwf27ZPPs9QVWnRiVZ6eff5Mi6h48AcU9upuxhb0oktw+iqB/B6ADcz878AADP3XQghkiF8yTQqGSKWfWpqymn3U2dmdt2V1lFhiYaRd59rHaTlALJnVYnEU3f5KnqnL3oTwVrDM2txgOkLwAqAGwHcCeB2AM8puPcqAMsAlrdv337mCgdF0gsvfF8EVedFTHWWPY3NcwNc5UnZ9+alb1Y447CgUge644Eqh8KrQETHiaidcb0SwFkAngzgcgC/BOAjlGOWmfkDzLybmXdv27ZNm3y2p69VRbalxB6NXfjSi6oKa5rJIdoSddVilS0LeembJb+P21H7iK14OJkGSkQfx9AF9BfR5y8CuJyZTxc9V3UaaLIAA7A6fc02yWmW8f4voxI30+TlBV+n1OrGZFnQFfaolVfT+DYN9E8AvBgAiOhCAI8F8JDplyZbH1Wmk9UBG5t/2cRmjyZPX6PSkynDZFnQFXbVPJ2Xn5gZ3W4X3W7Xi96zaVz1AB4L4AiAZwF4GMABZv6zsud09gBGpaIXoSzeddCLzda3DX3UQec+U1V/efkp3hIdwOaJfKOQVnk9gLASuAK+ZwxR+UxUrrp147uuZRkld1Kd0iaWNW8ld9wzAB7dy0j3xnEu9OWbC2gk8N21InoIiInVwrp1o+I68GkgPI0Od5Jo/EzrQTWtXaRPLGu/389d3zE9PY3p6enN3+K0mpyczJVXRgde1RtZU4N8vVyeB5CF71POsvZnt7UHuw+6ScfJB5l0Ippm3W6XDx48yK1Wy8iUTNVwXOz7XyXORfLKTHl1kQ+RMw3UeaUuc/lmAOpEWabzKbPqIi37KK1HYN4av6J0GgwG3Gq1zoi7a33YyFs646hrfYQL8gxAGAMIFJL2f3KN/L1p6ix7GWV+6qy4m9KHT3rOk8WGjLreoSOcMAYQKIRz/LFpX7VX/ktJRm2qL/Bouk1OThaOKWTF3ZQ+TJxZIXJPFnlxtJGPfZnyWkQwAGNEUSES3XdmXObCZ6FaCZmkbFDTBbJ5JJ33svSsuxKsUz42KWswAB5iqqIpKkSimWzUWtEyurbd+xGRzceKTOXMirJepo6dR6vI6BKTsgYD4CGmptUVFaI6FQidiE6VBexXtiL5oCjdTDQkTIQp0sssy586jbOPPT1TBAOgGR2ZR7WiKSsE41rJFyGzZYZt/VXdANBEj8VX37lO41zncS5Zwiwgzehc4Sk7+u/T7Is6olt/ttPDxowt13msTrN3XIWfRZgFZAmXLRFdLVTVXkzdu866W/i2W5LpvGeix0JEaDQaWF9fd7JhmqjLrkpeNN3T86mHEQyAJGUZS2fmseVz1uU68Cljq6LTiNlOPwBWXFS9Xg8LCwtYWFiwntaiLjuf8+Lk5CRmZmYwOTnpWpRgAGQpyli6W8C2fM7pOKnOuPBxRoosOgfgXaWfaRqNBubm5jA3N2csrfPyWKzT+J7Z2dlMGXzOi/1+H0tLS+j3nZyEu5Ws5cG+Xj5sBVG0t4hPS79lkN0Goq7xFMHnfW3yGMVjFsuOmex0OrXNg7LbsujQP2wfCTmqpFt1ydaXSquDPfCby66W9Ll1BZjx/5aF6VInJnoayfi6cKfk6TOWBUDm7z6UpzLKpu6urq7i8OHDm/o2qv8sq+Dr5UMPIE1R67nT6XCn0ym03D63pss2GPN1kzgTOtURpqrOXLfAfUrrMll8Lk8ixPInd2412QNwXqnLXKYMgIkM3u12eX5+nufn5wszo0+FSwafC5oJneoIU1Vnos/pjLfrfOnKWNY13mWMtQFw0WoQ6QG4zmwymPBL6sInWYqQ2b5ZRdeujLKJrcRdxcXnhk0V8gzAWIwBlPnQTPhvs04WEpGL2U8fZlpWn1YV+zzlL0lSZzJTGEV17WocIm9ufpV0cRUX1+Nbtsv/WKwEjjOjbytks+Ty9axYX3UI+C1bHkUyV4mPC10k3xlX+sm5+nVKF9eYKv/hUPiakFeAXVdyrt/vGy71MRgM0G63cfHFF+P06dNeNSBCPqmGKf2FrSBqgqkDLKp0LZnPnJqm+x0iMvjkGnPpdmq32zhw4ABuv/320m2TbadJOv/6lm6+Y9u1GgxATajqm6xSYfV6PSwtLWHv3r2F7zdZKcqEbaPScekrbjabOHToEK644orSbZNdp0ldxmfGleACGhNs+JVNdv9lwnbtBvEJ12lSB5eQax3ZwCsXEBE9i4juIKIVIlomostcyDFOVOlaij5rsvsqE7brmRw+4TpNRO6Je2yDwcCJu8jk/l7psH1ziblyAb0TwI3M/CwA/y36XFt8S9RAObrSbBzS3nQc40qy3W5bcRel41PUYKjqwhI57tIlrgwAA/j26P8nAug4kkMLviXquGPTN+1j2uuusE3HMa4km82mtp5bkQ5k1llU7U2KHHfpEidjAET0fQCOASAMjdDzmfmBnHuvAnAVAGzfvv3SBx7IvM0pvvj5AkNs+qZ9THvdYyA+xrGMIh3UMT5Vsb4OgIiOA8jKfTcAeAmA25n5j4jo1QCuYuaXloUZBoEDgXLGsYJLE3SwFa8WghHRVwE8iZmZhqnzVWb+9rLnggEIBAIBebyaBYShz/+K6P8XA/hbR3IEAoHA2HKWo/f+PIBbiOgsAN9C5OMPBAKBgD2cGABm/isAl7p4dyAQCASGhK0gAoFAYEwJBiAQCATGlGAAAoFAYEwJBiAQCATGlFrtBkpEpwH4txS4mPMBPORaCMuEOI8HIc714WnMvC39Za0MQB0houWsBRijTIjzeBDiXH+CCygQCATGlGAAAoFAYEwJBsA8H3AtgANCnMeDEOeaE8YAAoFAYEwJPYBAIBAYU4IBCAQCgTElGABDENGvEtFadPD9ChG9IvX7diL6BhEdcCWjbvLiTER7iOhuIlqN/r7Ytay6KEpnInozEX2BiD5PRD/sUk4TENEBImIiOj/6fDYRfShK588S0Ztdy6ibdJyj73YR0V8T0b1R3B/vUkYZXG0HPS68h5kP5f0G4P/aFMYSWXF+CMBeZu4QURPD40CfYl80Y5wRZyK6CMBPAbgYwL8DcJyILmTmDRcC6oaILgCwB8DfJb7+SQCPY+adRPQEAJ8hot9j5vtdyKibrDhHW9p/GMBrmblFRN8J4F8diShN6AE4gIh+FMB9AO51LIoVmPkkM3eij/cCeDwRPc6lTBZ4JYDbmPlfmPlLAL4A4DLHMunkPQDeBCA5i4QBnBNVit8G4GEAX3Mgmymy4vwyAKeYuQUAzPz3dTLywQCYZT8RnSKiI0T0ZAAgonMAXA/gRreiGeOMOKf4CQAnmflfbAtmkKw4PwXAlxP3PIgR6fUQ0Y8AWIsrvQR/COCbALoYtpIPMfM/2JbPBAVxvhAAE9ExIrqHiN7kQDxlgguoAiUH398K4CYMWws3Afh1AFdiWPG/h5m/UcfDqhXjHD97MYB3YNhqqg2Kcc5K3NrMuS6J81uQnYaXAdjA0OX1ZACfJKLjzHyfMUE1ohjnswD8IIDnAPgnACei83dPGBNUI8EAVICZXypyHxH9FoCl6ONzAbyKiN4J4EkABkT0LWb+TTNS6kUxziCipwL4YwA/x8xfNCSeERTj/CCACxI/PxXDs7BrQV6ciWgngKcDaEUNmKcCuIeILgPw0wA+zsz/CqBPRJ8CsBtDd6f3KMb5QQC3M/ND0b0fA3AJgFoYgOACMgQRTSc+/hiANgAw8wuYeQcz7wDwGwDeXpfKv4y8OBPRkwB8FMCbmflTDkQzRl6cAfwfAD9FRI8joqcD+G4An7Ytn26YeZWZJxN5+EEAlzDzOoZunxfTkHMAXA7gcw7F1UJJnI8B2EVET4jGPq4A8BmH4koRegDmeCcRPQvDbv/9AH7BqTR2yIvzfgDfBeCXieiXo+9exsx96xLqJzPOzHwvEX0Ew8rgEQBvqNPgoCL/A8BRDI0gATjKzKfcimQWZv5HIno3gLswzAMfY+aPOhZLmLAVRCAQCIwpwQUUCAQCY0owAIFAIDCmBAMQCAQCY0owAIFAIDCmBAMQCAQCY0owAIGRh4h+g4hemPH9DxHRUtYzLiCiNxLR56IdJVtE9G4iOjv67f7o+1Ui+gwRHUzup0REHyeir6TjQ0S3EdF3245LoB4EAxCoHdFCI6G8S0TfAeByZv5LwzI9puLzV2O41cDlzLwTw60F+hhuqhbzoui3ywA8A1uPJ3wXgNdmBH0rhhuYBQJnEAxAoBYQ0Y5oj/n3AbgHwAVEdCsRLUf7sOdtrvcqAB9PhPPyqJX9VwB+PPH9OdFmbncR0UkiemX0/ROI6CPRZm+/T0R3EtHu6LdvENF/J6I7ATyPiH6WiD5Nw3MB3h8bBSJ6GQ33i7+HiP6AiM7NkPMGAK9n5q8AADM/zMw3M/MZu2ky8zcAXA3gRyMDh2jvma9nhPtJAC+NVqkGAlsIBiBQJ74HwP9i5mcz8wMAbmDm3QB2AbiCiHZlPPMDAO4GABoe1PFbAPYCeAG2bvx1A4A/Y+bnAHgRgHdF2xn8FwD/yMy7MNzs7dLEM+cAaDPzcwH8PYD/COAHmPlZGG6K9jM0PDjkrQBeysyXAFgG8MakgER0HoBzo22jhYgMw5cw3GKi6L4BhltRf79o2IHxIRiAQJ14gJnvSHx+NRHdA+AkhgevXJTxzDSA09H/3wvgS8z8tzxcAv/hxH0vAzBPRCsA/gLA4wFsx3Cnx9sAgJnbAJJbG2wA+KPo/5dgaBzuisJ4CYZumssjuT4Vff86AE9LyUhI7BRKRD8c9SLuJ6LnF+hDdDvZPoY7dAYCWwjdwkCd+Gb8T7TB2gEAz4n2Y/kghpV2mn9OfZ+39wkB+Alm/vyWL4v37P5WYn8fAvAhZt5yDCIR7QXwCWZ+TV4gzPw1IvomET2dmb/EzMcAHIsGdB+bKeyw17ADwN8UyBfzeAz1EAhsIfQAAnXl2zE0CF8logaAf59z32cx3IgOGO5M+XQiemb0OVkpHwNwTVzhE9Gzo+//CsCro+8uArAz5z0nMNzmezK69zuI6GkA7gDwA0T0XdH3TyCiCzOe/zUAt0Y7p8aGJ/Ns2WgM4X0A/oSZ/zFHniQXYkxOnwvIEQxAoJZEJzOdxLBiOwIgb5vpjwL4oeiZbwG4CsBHo0HgBxL33QTgbACniKgdfQaGFe02IjqF4UlupwB8NUOez2Do6/9/0b2fADDNzKcB/CcAvxd9fweGrqg0twI4DuDO6L5PRfE7mbjnzyPZPo3h1subO8wS0ScB/AGAlxDRgxQdQh8Zx39m5m6OfgJjTNgNNDDyRJX9TDzDRvLZxwA4m5m/FfUcTgC4kJkf1iymEYjovwL4GjMfdi1LwD/CGEBgHLgOwwHdryg8+wQMW95nY+jnf31dKv+IrwD4HddCBPwk9AACgUBgTAljAIFAIDCmBAMQCAQCY0owAIFAIDCmBAMQCAQCY0owAIFAIDCm/BtCuHWkhq1WlwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "phi1 = selected['phi1']\n", + "phi2 = selected['phi2']\n", + "\n", + "plt.plot(phi1, phi2, 'ko', markersize=0.5, alpha=0.5)\n", + "\n", + "plt.xlabel('ra (degree GD1)')\n", + "plt.ylabel('dec (degree GD1)');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that's starting to look like a tidal stream!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Saving the DataFrame\n", + "\n", + "At this point we have run a successful query and cleaned up the results; this is a good time to save the data.\n", + "\n", + "To save a Pandas `DataFrame`, one option is to convert it to an Astropy `Table`, like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.table.table.Table" + ] + }, + "execution_count": 124, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "selected_table = Table.from_pandas(selected)\n", + "type(selected_table)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we could write the `Table` to a FITS file, as we did in the previous lesson. \n", + "\n", + "But Pandas provides functions to write DataFrames in other formats; to see what they are [find the functions here that begin with `to_`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html).\n", + "\n", + "One of the best options is HDF5, which is Version 5 of [Hierarchical Data Format](https://en.wikipedia.org/wiki/Hierarchical_Data_Format).\n", + "\n", + "HDF5 is a binary format, so files are small and fast to read and write (like FITS, but unlike XML).\n", + "\n", + "An HDF5 file is similar to an SQL database in the sense that it can contain more than one table, although in HDF5 vocabulary, a table is called a Dataset. ([Multi-extension FITS files](https://www.stsci.edu/itt/review/dhb_2011/Intro/intro_ch23.html) can also contain more than one table.)\n", + "\n", + "And HDF5 stores the metadata associated with the table, including column names, row labels, and data types (like FITS).\n", + "\n", + "Finally, HDF5 is a cross-language standard, so if you write an HDF5 file with Pandas, you can read it back with many other software tools (more than FITS)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we write the HDF5, let's delete the old one, if it exists." + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [], + "source": [ + "!rm -f gd1_dataframe.hdf5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can write a Pandas `DataFrame` to an HDF5 file like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": {}, + "outputs": [], + "source": [ + "filename = 'gd1_dataframe.hdf5'\n", + "\n", + "df.to_hdf(filename, 'df')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Because an HDF5 file can contain more than one Dataset, we have to provide a name, or \"key\", that identifies the Dataset in the file.\n", + "\n", + "We could use any string as the key, but in this example I use the variable name `df`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** We're going to need `centerline` and `selected` later as well. Write a line or two of code to add it as a second Dataset in the HDF5 file." + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "centerline.to_hdf(filename, 'centerline')\n", + "selected.to_hdf(filename, 'selected')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Detail:** Reading and writing HDF5 tables requires a library called `PyTables` that is not always installed with Pandas. You can install it with pip like this:\n", + "\n", + "```\n", + "pip install tables\n", + "```\n", + "\n", + "If you install it using Conda, the name of the package is `pytables`.\n", + "\n", + "```\n", + "conda install pytables\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use `ls` to confirm that the file exists and check the size:" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-rw-rw-r-- 1 downey downey 17M Oct 19 12:05 gd1_dataframe.hdf5\r\n" + ] + } + ], + "source": [ + "!ls -lh gd1_dataframe.hdf5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you are using Windows, `ls` might not work; in that case, try:\n", + "\n", + "```\n", + "!dir gd1_dataframe.hdf5\n", + "```\n", + "\n", + "We can read the file back like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(140340, 12)" + ] + }, + "execution_count": 129, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "read_back_df = pd.read_hdf(filename, 'df')\n", + "read_back_df.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pandas can write a variety of other formats, [which you can read about here](https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "In this lesson, we re-loaded the Gaia data we saved from a previous query.\n", + "\n", + "We transformed the coordinates and proper motion from ICRS to a frame aligned with GD-1, and stored the results in a Pandas `DataFrame`.\n", + "\n", + "Then we replicated the selection process from the Price-Whelan and Bonaca paper:\n", + "\n", + "* We selected stars near the centerline of GD-1 and made a scatter plot of their proper motion.\n", + "\n", + "* We identified a region of proper motion that contains stars likely to be in GD-1.\n", + "\n", + "* We used a Boolean `Series` as a mask to select stars whose proper motion is in that region.\n", + "\n", + "So far, we have used data from a relatively small region of the sky. In the next lesson, we'll write a query that selects stars based on proper motion, which will allow us to explore a larger region." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Best practices\n", + "\n", + "* When you make a scatter plot, adjust the size of the markers and their transparency so the figure is not overplotted; otherwise it can misrepresent the data badly.\n", + "\n", + "* For simple scatter plots in Matplotlib, `plot` is faster than `scatter`.\n", + "\n", + "* An Astropy `Table` and a Pandas `DataFrame` are similar in many ways and they provide many of the same functions. They have pros and cons, but for many projects, either one would be a reasonable choice." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/04_select.ipynb b/_sources/04_select.ipynb new file mode 100644 index 0000000..56cda75 --- /dev/null +++ b/_sources/04_select.ipynb @@ -0,0 +1,1445 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 4\n", + "\n", + "This is the fourth in a series of notebooks related to astronomy data.\n", + "\n", + "As a running example, we are replicating parts of the analysis in a recent paper, \"[Off the beaten path: Gaia reveals GD-1 stars outside of the main stream](https://arxiv.org/abs/1805.00425)\" by Adrian M. Price-Whelan and Ana Bonaca.\n", + "\n", + "In the first lesson, we wrote ADQL queries and used them to select and download data from the Gaia server.\n", + "\n", + "In the second lesson, we write a query to select stars from the region of the sky where we expect GD-1 to be, and save the results in a FITS file.\n", + "\n", + "In the third lesson, we read that data back and identified stars with the proper motion we expect for GD-1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Outline\n", + "\n", + "Here are the steps in this lesson:\n", + "\n", + "1. Using data from the previous lesson, we'll identify the values of proper motion for stars likely to be in GD-1.\n", + "\n", + "2. Then we'll compose an ADQL query that selects stars based on proper motion, so we can download only the data we need.\n", + "\n", + "3. We'll also see how to write the results to a CSV file.\n", + "\n", + "That will make it possible to search a bigger region of the sky in a single query.\n", + "\n", + "After completing this lesson, you should be able to\n", + "\n", + "* Convert proper motion between frames.\n", + "\n", + "* Write an ADQL query that selects based on proper motion." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing libraries\n", + "\n", + "If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we'll use.\n", + "\n", + "If you are running this notebook on your own computer, you might have to install these libraries yourself. \n", + "\n", + "If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.\n", + "\n", + "TODO: Add a link to the instructions.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# If we're running on Colab, install libraries\n", + "\n", + "import sys\n", + "IN_COLAB = 'google.colab' in sys.modules\n", + "\n", + "if IN_COLAB:\n", + " !pip install astroquery astro-gala pyia python-wget" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reload the data\n", + "\n", + "The following cells download the data from the previous lesson, if necessary, and load it into a Pandas `DataFrame`." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from wget import download\n", + "\n", + "filename = 'gd1_dataframe.hdf5'\n", + "path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'\n", + "\n", + "if not os.path.exists(filename):\n", + " print(download(path+filename))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "df = pd.read_hdf(filename, 'df')\n", + "centerline = pd.read_hdf(filename, 'centerline')\n", + "selected = pd.read_hdf(filename, 'selected')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selection by proper motion\n", + "\n", + "At this point we have downloaded data for a relatively large number of stars (more than 100,000) and selected a relatively small number (around 1000).\n", + "\n", + "It would be more efficient to use ADQL to select only the stars we need. That would also make it possible to download data covering a larger region of the sky.\n", + "\n", + "However, the selection we did was based on proper motion in the `GD1Koposov10` frame. In order to do the same selection in ADQL, we have to work with proper motions in ICRS.\n", + "\n", + "As a reminder, here's the rectangle we selected based on proper motion in the `GD1Koposov10` frame." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "pm1_min = -8.9\n", + "pm1_max = -6.9\n", + "pm2_min = -2.2\n", + "pm2_max = 1.0" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import astropy.units as u\n", + "\n", + "pm1_rect = [pm1_min, pm1_min, pm1_max, pm1_max, pm1_min] * u.mas/u.yr\n", + "pm2_rect = [pm2_min, pm2_max, pm2_max, pm2_min, pm2_min] * u.mas/u.yr" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following figure shows:\n", + "\n", + "* Proper motion for the stars we selected along the center line of GD-1,\n", + "\n", + "* The rectangle we selected, and\n", + "\n", + "* The stars inside the rectangle highlighted in green." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "pm1 = centerline['pm_phi1']\n", + "pm2 = centerline['pm_phi2']\n", + "plt.plot(pm1, pm2, 'ko', markersize=0.3, alpha=0.3)\n", + "\n", + "pm1 = selected['pm_phi1']\n", + "pm2 = selected['pm_phi2']\n", + "plt.plot(pm1, pm2, 'gx', markersize=0.3, alpha=0.3)\n", + "\n", + "plt.plot(pm1_rect, pm2_rect, '-')\n", + " \n", + "plt.xlabel('Proper motion phi1 (GD1 frame)')\n", + "plt.ylabel('Proper motion phi2 (GD1 frame)')\n", + "\n", + "plt.xlim(-12, 8)\n", + "plt.ylim(-10, 10);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we'll make the same plot using proper motions in the ICRS frame, which are stored in columns `pmra` and `pmdec`." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pm1 = centerline['pmra']\n", + "pm2 = centerline['pmdec']\n", + "plt.plot(pm1, pm2, 'ko', markersize=0.3, alpha=0.3)\n", + "\n", + "pm1 = selected['pmra']\n", + "pm2 = selected['pmdec']\n", + "plt.plot(pm1, pm2, 'gx', markersize=1, alpha=0.3)\n", + " \n", + "plt.xlabel('Proper motion phi1 (ICRS frame)')\n", + "plt.ylabel('Proper motion phi2 (ICRS frame)')\n", + "\n", + "plt.xlim([-10, 5])\n", + "plt.ylim([-20, 5]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The proper motions of the selected stars are more spread out in this frame, which is why it was preferable to do the selection in the GD-1 frame.\n", + "\n", + "But now we can define a polygon that encloses the proper motions of these stars in ICRS, \n", + "and use the polygon as a selection criterion in an ADQL query.\n", + "\n", + "SciPy provides a function that computes the [convex hull](https://en.wikipedia.org/wiki/Convex_hull) of a set of points, which is the smallest convex polygon that contains all of the points.\n", + "\n", + "To use it, I'll select columns `pmra` and `pmdec` and convert them to a NumPy array." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1049, 2)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "\n", + "points = selected[['pmra','pmdec']].to_numpy()\n", + "points.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll pass the points to `ConvexHull`, which returns an object that contains the results. " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from scipy.spatial import ConvexHull\n", + "\n", + "hull = ConvexHull(points)\n", + "hull" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`hull.vertices` contains the indices of the points that fall on the perimeter of the hull." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 692, 873, 141, 303, 42, 622, 45, 83, 127, 182, 1006,\n", + " 971, 967, 1001, 969, 940], dtype=int32)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hull.vertices" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use them as an index into the original array to select the corresponding rows." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ -4.05037121, -14.75623261],\n", + " [ -3.41981085, -14.72365546],\n", + " [ -3.03521988, -14.44357135],\n", + " [ -2.26847919, -13.7140236 ],\n", + " [ -2.61172203, -13.24797471],\n", + " [ -2.73471401, -13.09054471],\n", + " [ -3.19923146, -12.5942653 ],\n", + " [ -3.34082546, -12.47611926],\n", + " [ -5.67489413, -11.16083338],\n", + " [ -5.95159272, -11.10547884],\n", + " [ -6.42394023, -11.05981295],\n", + " [ -7.09631023, -11.95187806],\n", + " [ -7.30641519, -12.24559977],\n", + " [ -7.04016696, -12.88580702],\n", + " [ -6.00347705, -13.75912098],\n", + " [ -4.42442296, -14.74641176]])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pm_vertices = points[hull.vertices]\n", + "pm_vertices" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To plot the resulting polygon, we have to pull out the x and y coordinates." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "pmra_poly, pmdec_poly = np.transpose(pm_vertices)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following figure shows proper motion in ICRS again, along with the convex hull we just computed." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pm1 = centerline['pmra']\n", + "pm2 = centerline['pmdec']\n", + "plt.plot(pm1, pm2, 'ko', markersize=0.3, alpha=0.3)\n", + "\n", + "pm1 = selected['pmra']\n", + "pm2 = selected['pmdec']\n", + "plt.plot(pm1, pm2, 'gx', markersize=0.3, alpha=0.3)\n", + "\n", + "plt.plot(pmra_poly, pmdec_poly)\n", + " \n", + "plt.xlabel('Proper motion phi1 (ICRS frame)')\n", + "plt.ylabel('Proper motion phi2 (ICRS frame)')\n", + "\n", + "plt.xlim([-10, 5])\n", + "plt.ylim([-20, 5]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To use `pm_vertices` as part of an ADQL query, we have to convert it to a string.\n", + "\n", + "We'll use `flatten` to convert from a 2-D array to a 1-D array, and `str` to convert each element to a string." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['-4.050371212154984',\n", + " '-14.75623260987968',\n", + " '-3.4198108491382455',\n", + " '-14.723655456335619',\n", + " '-3.035219883740934',\n", + " '-14.443571352854612',\n", + " '-2.268479190206636',\n", + " '-13.714023598831554',\n", + " '-2.611722027231764',\n", + " '-13.247974712069263',\n", + " '-2.7347140078529106',\n", + " '-13.090544709622938',\n", + " '-3.199231461993783',\n", + " '-12.594265302440828',\n", + " '-3.34082545787549',\n", + " '-12.476119260818695',\n", + " '-5.674894125178565',\n", + " '-11.160833381392624',\n", + " '-5.95159272432137',\n", + " '-11.105478836426514',\n", + " '-6.423940229776128',\n", + " '-11.05981294804957',\n", + " '-7.096310230579248',\n", + " '-11.951878058650085',\n", + " '-7.306415190921692',\n", + " '-12.245599765990594',\n", + " '-7.040166963232815',\n", + " '-12.885807024935527',\n", + " '-6.0034770546523735',\n", + " '-13.759120984106968',\n", + " '-4.42442296194263',\n", + " '-14.7464117578883']" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t = [str(x) for x in pm_vertices.flatten()]\n", + "t" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now `t` is a list of strings; we can use `join` to make a single string with commas between the elements." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'-4.050371212154984, -14.75623260987968, -3.4198108491382455, -14.723655456335619, -3.035219883740934, -14.443571352854612, -2.268479190206636, -13.714023598831554, -2.611722027231764, -13.247974712069263, -2.7347140078529106, -13.090544709622938, -3.199231461993783, -12.594265302440828, -3.34082545787549, -12.476119260818695, -5.674894125178565, -11.160833381392624, -5.95159272432137, -11.105478836426514, -6.423940229776128, -11.05981294804957, -7.096310230579248, -11.951878058650085, -7.306415190921692, -12.245599765990594, -7.040166963232815, -12.885807024935527, -6.0034770546523735, -13.759120984106968, -4.42442296194263, -14.7464117578883'" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pm_point_list = ', '.join(t)\n", + "pm_point_list" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting the region\n", + "\n", + "Let's review how we got to this point.\n", + "\n", + "1. We made an ADQL query to the Gaia server to get data for stars in the vicinity of GD-1.\n", + "\n", + "2. We transformed to `GD1` coordinates so we could select stars along the centerline of GD-1.\n", + "\n", + "3. We plotted the proper motion of the centerline stars to identify the bounds of the overdense region.\n", + "\n", + "4. We made a mask that selects stars whose proper motion is in the overdense region.\n", + "\n", + "The problem is that we downloaded data for more than 100,000 stars and selected only about 1000 of them.\n", + "\n", + "It will be more efficient if we select on proper motion as part of the query. That will allow us to work with a larger region of the sky in a single query, and download less unneeded data.\n", + "\n", + "This query will select on the following conditions:\n", + "\n", + "* `parallax < 1`\n", + "\n", + "* `bp_rp BETWEEN -0.75 AND 2`\n", + "\n", + "* Coordinates within a rectangle in the GD-1 frame, transformed to ICRS.\n", + "\n", + "* Proper motion with the polygon we just computed.\n", + "\n", + "The first three conditions are the same as in the previous query. Only the last one is new.\n", + "\n", + "Here's the rectangle in the GD-1 frame we'll select." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "phi1_min = -70\n", + "phi1_max = -20\n", + "phi2_min = -5\n", + "phi2_max = 5" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "phi1_rect = [phi1_min, phi1_min, phi1_max, phi1_max] * u.deg\n", + "phi2_rect = [phi2_min, phi2_max, phi2_max, phi2_min] * u.deg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we transform it to ICRS, as we saw in the previous lesson." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "import gala.coordinates as gc\n", + "import astropy.coordinates as coord\n", + "\n", + "corners = gc.GD1Koposov10(phi1=phi1_rect, phi2=phi2_rect)\n", + "corners_icrs = corners.transform_to(coord.ICRS)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To use `corners_icrs` as part of an ADQL query, we have to convert it to a string. Here's how we do that, as we saw in the previous lesson." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'135.30559858565638, 8.398623940157561, 126.50951508623503, 13.44494195652069, 163.0173655836748, 54.24242734020255, 172.9328536286811, 46.47260492416258'" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "point_base = \"{point.ra.value}, {point.dec.value}\"\n", + "\n", + "t = [point_base.format(point=point)\n", + " for point in corners_icrs]\n", + "\n", + "point_list = ', '.join(t)\n", + "point_list" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have everything we need to assemble the query." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Assemble the query\n", + "\n", + "Here's the base string we used for the query in the previous lesson." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "query_base = \"\"\"SELECT \n", + "{columns}\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2 \n", + " AND 1 = CONTAINS(POINT(ra, dec), \n", + " POLYGON({point_list}))\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Modify `query_base` by adding a new clause to select stars whose coordinates of proper motion, `pmra` and `pmdec`, fall within the polygon defined by `pm_point_list`." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "query_base = \"\"\"SELECT \n", + "{columns}\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2 \n", + " AND 1 = CONTAINS(POINT(ra, dec), \n", + " POLYGON({point_list}))\n", + " AND 1 = CONTAINS(POINT(pmra, pmdec),\n", + " POLYGON({pm_point_list}))\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here again are the columns we want to select." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "columns = 'source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Use `format` to format `query_base` and define `query`, filling in the values of `columns`, `point_list`, and `pm_point_list`." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SELECT \n", + "source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2 \n", + " AND 1 = CONTAINS(POINT(ra, dec), \n", + " POLYGON(135.30559858565638, 8.398623940157561, 126.50951508623503, 13.44494195652069, 163.0173655836748, 54.24242734020255, 172.9328536286811, 46.47260492416258))\n", + " AND 1 = CONTAINS(POINT(pmra, pmdec),\n", + " POLYGON(-4.050371212154984, -14.75623260987968, -3.4198108491382455, -14.723655456335619, -3.035219883740934, -14.443571352854612, -2.268479190206636, -13.714023598831554, -2.611722027231764, -13.247974712069263, -2.7347140078529106, -13.090544709622938, -3.199231461993783, -12.594265302440828, -3.34082545787549, -12.476119260818695, -5.674894125178565, -11.160833381392624, -5.95159272432137, -11.105478836426514, -6.423940229776128, -11.05981294804957, -7.096310230579248, -11.951878058650085, -7.306415190921692, -12.245599765990594, -7.040166963232815, -12.885807024935527, -6.0034770546523735, -13.759120984106968, -4.42442296194263, -14.7464117578883))\n", + "\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "query = query_base.format(columns=columns, \n", + " point_list=point_list,\n", + " pm_point_list=pm_point_list)\n", + "print(query)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we run it." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: gea.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n", + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: geadata.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n", + "INFO: Query finished. [astroquery.utils.tap.core]\n", + "\n", + " name dtype unit description n_bad\n", + "--------------- ------- -------- ------------------------------------------------------------------ -----\n", + " source_id int64 Unique source identifier (unique within a particular Data Release) 0\n", + " ra float64 deg Right ascension 0\n", + " dec float64 deg Declination 0\n", + " pmra float64 mas / yr Proper motion in right ascension direction 0\n", + " pmdec float64 mas / yr Proper motion in declination direction 0\n", + " parallax float64 mas Parallax 0\n", + " parallax_error float64 mas Standard error of parallax 0\n", + "radial_velocity float64 km / s Radial velocity 7295\n", + "Jobid: 1603132746237O\n", + "Phase: COMPLETED\n", + "Owner: None\n", + "Output file: async_20201019143906.vot\n", + "Results: None\n" + ] + } + ], + "source": [ + "from astroquery.gaia import Gaia\n", + "\n", + "job = Gaia.launch_job_async(query)\n", + "print(job)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And get the results." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7346" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "candidate_table = job.get_results()\n", + "len(candidate_table)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plotting one more time\n", + "\n", + "Let's see what the results look like." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x = candidate_table['ra']\n", + "y = candidate_table['dec']\n", + "plt.plot(x, y, 'ko', markersize=0.3, alpha=0.3)\n", + "\n", + "plt.xlabel('ra (degree ICRS)')\n", + "plt.ylabel('dec (degree ICRS)');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we can see why it was useful to transform these coordinates. In ICRS, it is more difficult to identity the stars near the centerline of GD-1.\n", + "\n", + "So, before we move on to the next step, let's collect the code we used to transform the coordinates and make a Pandas `DataFrame`:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "from pyia import GaiaData\n", + "\n", + "def make_dataframe(table):\n", + " \"\"\"Transform coordinates from ICRS to GD-1 frame.\n", + " \n", + " table: Astropy Table\n", + " \n", + " returns: Pandas DataFrame\n", + " \"\"\"\n", + " gaia_data = GaiaData(table)\n", + "\n", + " c_sky = gaia_data.get_skycoord(distance=8*u.kpc, \n", + " radial_velocity=0*u.km/u.s)\n", + " c_gd1 = gc.reflex_correct(\n", + " c_sky.transform_to(gc.GD1Koposov10))\n", + "\n", + " df = table.to_pandas()\n", + " df['phi1'] = c_gd1.phi1\n", + " df['phi2'] = c_gd1.phi2\n", + " df['pm_phi1'] = c_gd1.pm_phi1_cosphi2\n", + " df['pm_phi2'] = c_gd1.pm_phi2\n", + " return df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's how we can use this function:" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "candidate_df = make_dataframe(candidate_table)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And let's see the results." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x = candidate_df['phi1']\n", + "y = candidate_df['phi2']\n", + "\n", + "plt.plot(x, y, 'ko', markersize=0.5, alpha=0.5)\n", + "\n", + "plt.xlabel('ra (degree GD1)')\n", + "plt.ylabel('dec (degree GD1)');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We're starting to see GD-1 more clearly.\n", + "\n", + "We can compare this figure with one of these panels in Figure 1 from the original paper:\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "The top panel shows stars selected based on proper motion only, so it is comparable to our figure (although notice that it covers a wider region).\n", + "\n", + "In the next lesson, we will use photometry data from Pan-STARRS to do a second round of filtering, and see if we can replicate the bottom panel.\n", + "\n", + "We'll also learn how to add annotations like the ones in the figure from the paper, and customize the style of the figure to present the results clearly and compellingly." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Saving the DataFrame\n", + "\n", + "Let's save this `DataFrame` so we can pick up where we left off without running this query again." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "!rm -f gd1_candidates.hdf5" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "filename = 'gd1_candidates.hdf5'\n", + "\n", + "candidate_df.to_hdf(filename, 'candidate_df')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use `ls` to confirm that the file exists and check the size:" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-rw-rw-r-- 1 downey downey 756K Oct 19 14:39 gd1_candidates.hdf5\r\n" + ] + } + ], + "source": [ + "!ls -lh gd1_candidates.hdf5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you are using Windows, `ls` might not work; in that case, try:\n", + "\n", + "```\n", + "!dir gd1_candidates.hdf5\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## CSV\n", + "\n", + "Pandas can write a variety of other formats, [which you can read about here](https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html).\n", + "\n", + "We won't cover all of them, but one other important one is [CSV](https://en.wikipedia.org/wiki/Comma-separated_values), which stands for \"comma-separated values\".\n", + "\n", + "CSV is a plain-text format with minimal formatting requirements, so it can be read and written by pretty much any tool that works with data. In that sense, it is the \"least common denominator\" of data formats.\n", + "\n", + "However, it has an important limitation: some information about the data gets lost in translation, notably the data types. If you read a CSV file from someone else, you might need some additional information to make sure you are getting it right.\n", + "\n", + "Also, CSV files tend to be big, and slow to read and write.\n", + "\n", + "With those caveats, here's how to write one:" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "candidate_df.to_csv('gd1_candidates.csv')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can check the file size like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-rw-rw-r-- 1 downey downey 1.6M Oct 19 14:39 gd1_candidates.csv\r\n" + ] + } + ], + "source": [ + "!ls -lh gd1_candidates.csv" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The CSV file about 2 times bigger than the HDF5 file (so that's not that bad, really).\n", + "\n", + "We can see the first few lines like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + ",source_id,ra,dec,pmra,pmdec,parallax,parallax_error,radial_velocity,phi1,phi2,pm_phi1,pm_phi2\r\n", + "0,635559124339440000,137.58671691646745,19.1965441084838,-3.770521900009566,-12.490481778113859,0.7913934419894347,0.2717538145759051,,-59.63048941944396,-1.21648525150429,-7.361362712556612,-0.5926328820420083\r\n", + "1,635860218726658176,138.5187065217173,19.09233926905897,-5.941679495793577,-11.346409129876392,0.30745551377348623,0.19946557779138105,,-59.247329893833296,-2.0160784008206476,-7.527126084599517,1.7487794924398758\r\n" + ] + } + ], + "source": [ + "!head -3 gd1_candidates.csv" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The CSV file contains the names of the columns, but not the data types.\n", + "\n", + "We can read the CSV file back like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "read_back_csv = pd.read_csv('gd1_candidates.csv')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's compare the first few rows of `candidate_df` and `read_back_csv`" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
source_idradecpmrapmdecparallaxparallax_errorradial_velocityphi1phi2pm_phi1pm_phi2
0635559124339440000137.58671719.196544-3.770522-12.4904820.7913930.271754NaN-59.630489-1.216485-7.361363-0.592633
1635860218726658176138.51870719.092339-5.941679-11.3464090.3074560.199466NaN-59.247330-2.016078-7.5271261.748779
2635674126383965568138.84287419.031798-3.897001-12.7027800.7794630.223692NaN-59.133391-2.306901-7.560608-0.741800
\n", + "" + ], + "text/plain": [ + " source_id ra dec pmra pmdec parallax \\\n", + "0 635559124339440000 137.586717 19.196544 -3.770522 -12.490482 0.791393 \n", + "1 635860218726658176 138.518707 19.092339 -5.941679 -11.346409 0.307456 \n", + "2 635674126383965568 138.842874 19.031798 -3.897001 -12.702780 0.779463 \n", + "\n", + " parallax_error radial_velocity phi1 phi2 pm_phi1 pm_phi2 \n", + "0 0.271754 NaN -59.630489 -1.216485 -7.361363 -0.592633 \n", + "1 0.199466 NaN -59.247330 -2.016078 -7.527126 1.748779 \n", + "2 0.223692 NaN -59.133391 -2.306901 -7.560608 -0.741800 " + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "candidate_df.head(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0source_idradecpmrapmdecparallaxparallax_errorradial_velocityphi1phi2pm_phi1pm_phi2
00635559124339440000137.58671719.196544-3.770522-12.4904820.7913930.271754NaN-59.630489-1.216485-7.361363-0.592633
11635860218726658176138.51870719.092339-5.941679-11.3464090.3074560.199466NaN-59.247330-2.016078-7.5271261.748779
22635674126383965568138.84287419.031798-3.897001-12.7027800.7794630.223692NaN-59.133391-2.306901-7.560608-0.741800
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 source_id ra dec pmra pmdec \\\n", + "0 0 635559124339440000 137.586717 19.196544 -3.770522 -12.490482 \n", + "1 1 635860218726658176 138.518707 19.092339 -5.941679 -11.346409 \n", + "2 2 635674126383965568 138.842874 19.031798 -3.897001 -12.702780 \n", + "\n", + " parallax parallax_error radial_velocity phi1 phi2 pm_phi1 \\\n", + "0 0.791393 0.271754 NaN -59.630489 -1.216485 -7.361363 \n", + "1 0.307456 0.199466 NaN -59.247330 -2.016078 -7.527126 \n", + "2 0.779463 0.223692 NaN -59.133391 -2.306901 -7.560608 \n", + "\n", + " pm_phi2 \n", + "0 -0.592633 \n", + "1 1.748779 \n", + "2 -0.741800 " + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "read_back_csv.head(3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that the index in `candidate_df` has become an unnamed column in `read_back_csv`. The Pandas functions for writing and reading CSV files provide options to avoid that problem, but this is an example of the kind of thing that can go wrong with CSV files." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "In the previous lesson we downloaded data for a large number of stars and then selected a small fraction of them based on proper motion.\n", + "\n", + "In this lesson, we improved this process by writing a more complex query that uses the database to select stars based on proper motion. This process requires more computation on the Gaia server, but then we're able to either:\n", + "\n", + "1. Search the same region and download less data, or\n", + "\n", + "2. Search a larger region while still downloading a manageable amount of data.\n", + "\n", + "In the next lesson, we'll learn about the databased `JOIN` operation and use it to download photometry data from Pan-STARRS." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Best practices\n", + "\n", + "* When possible, \"move the computation to the data\"; that is, do as much of the work as possible on the database server before downloading the data.\n", + "\n", + "* For most applications, saving data in FITS or HDF5 is better than CSV. FITS and HDF5 are binary formats, so the files are usually smaller, and they store metadata, so you don't lose anything when you read the file back.\n", + "\n", + "* On the other hand, CSV is a \"least common denominator\" format; that is, it can be read by practically any application that works with data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/05_join.ipynb b/_sources/05_join.ipynb new file mode 100644 index 0000000..1484d3d --- /dev/null +++ b/_sources/05_join.ipynb @@ -0,0 +1,1301 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 5\n", + "\n", + "This is the fifth in a series of notebooks related to astronomy data.\n", + "\n", + "As a continuing example, we will replicate part of the analysis in a recent paper, \"[Off the beaten path: Gaia reveals GD-1 stars outside of the main stream](https://arxiv.org/abs/1805.00425)\" by Adrian M. Price-Whelan and Ana Bonaca.\n", + "\n", + "Picking up where we left off, the next step in the analysis is to select candidate stars based on photometry. The following figure from the paper is a color-magnitude diagram for the stars selected based on proper motion:\n", + "\n", + "\n", + "\n", + "In red is a theoretical isochrone, showing where we expect the stars in GD-1 to fall based on the metallicity and age of their original globular cluster. \n", + "\n", + "By selecting stars in the shaded area, we can further distinguish the main sequence of GD-1 from younger background stars." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Outline\n", + "\n", + "Here are the steps in this notebook:\n", + "\n", + "1. We'll reload the candidate stars we identified in the previous notebook.\n", + "\n", + "2. Then we'll run a query on the Gaia server that uploads the table of candidates and uses a `JOIN` operation to select photometry data for the candidate stars.\n", + "\n", + "3. We'll write the results to a file for use in the next notebook.\n", + "\n", + "After completing this lesson, you should be able to\n", + "\n", + "* Upload a table to the Gaia server.\n", + "\n", + "* Write ADQL queries involving `JOIN` operations." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing libraries\n", + "\n", + "If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we'll use.\n", + "\n", + "If you are running this notebook on your own computer, you might have to install these libraries yourself. \n", + "\n", + "If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.\n", + "\n", + "TODO: Add a link to the instructions." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# If we're running on Colab, install libraries\n", + "\n", + "import sys\n", + "IN_COLAB = 'google.colab' in sys.modules\n", + "\n", + "if IN_COLAB:\n", + " !pip install astroquery astro-gala pyia python-wget" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reloading the data\n", + "\n", + "The following cell downloads the data from the previous notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from wget import download\n", + "\n", + "filename = 'gd1_candidates.hdf5'\n", + "path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'\n", + "\n", + "if not os.path.exists(filename):\n", + " print(download(path+filename))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And we can read it back." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "candidate_df = pd.read_hdf(filename, 'candidate_df')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`candidate_df` is the Pandas DataFrame that contains results from the query in the previous notebook, which selects stars likely to be in GD-1 based on proper motion. It also includes position and proper motion transformed to the ICRS frame." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "x = candidate_df['phi1']\n", + "y = candidate_df['phi2']\n", + "\n", + "plt.plot(x, y, 'ko', markersize=0.3, alpha=0.3)\n", + "\n", + "plt.xlabel('ra (degree GD1)')\n", + "plt.ylabel('dec (degree GD1)');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the same figure we saw at the end of the previous notebook. GD-1 is visible against the background stars, but we will be able to see it more clearly after selecting based on photometry data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Getting photometry data\n", + "\n", + "The Gaia dataset contains some photometry data, including the variable `bp_rp`, which we used in the original query to select stars with BP - RP color between -0.75 and 2.\n", + "\n", + "Selecting stars with `bp-rp` less than 2 excludes many class M dwarf stars, which are low temperature, low luminosity. A star like that at GD-1's distance would be hard to detect, so if it is detected, it it more likely to be in the foreground.\n", + "\n", + "Now, to select stars with the age and metal richness we expect in GD-1, we will use `g − i` color and apparent `g`-band magnitude, which are available from the Pan-STARRS survey." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Conveniently, the Gaia server provides data from Pan-STARRS as a table in the same database we have been using, so we can access it by making ADQL queries.\n", + "\n", + "In general, looking up a star from the Gaia catalog and finding the corresponding star in the Pan-STARRS catalog is not easy. This kind of cross matching is not always possible, because a star might appear in one catalog and not the other. And even when both stars are present, there might not be a clear one-to-one relationship between stars in the two catalogs.\n", + "\n", + "Fortunately, smart people have worked on this problem, and the Gaia database includes cross-matching tables that suggest a best neighbor in the Pan-STARRS catalog for many stars in the Gaia catalog.\n", + "\n", + "[This document describes the cross matching process](https://gea.esac.esa.int/archive/documentation/GDR2/Catalogue_consolidation/chap_cu9val_cu9val/ssec_cu9xma/sssec_cu9xma_extcat.html). Briefly, it uses a cone search to find possible matches in approximately the right position, then uses attributes like color and magnitude to choose pairs of stars most likely to be identical." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So the hard part of cross-matching has been done for us. However, using the results is a little tricky.\n", + "\n", + "But, it is also an opportunity to learn about one of the most important tools for working with databases: \"joining\" tables.\n", + "\n", + "In general, a \"join\" is an operation where you match up records from one table with records from another table using as a \"key\" a piece of information that is common to both tables, usually some kind of ID code.\n", + "\n", + "In this example:\n", + "\n", + "* Stars in the Gaia dataset are identified by `source_id`.\n", + "\n", + "* Stars in the Pan-STARRS dataset are identified by `obj_id`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For each candidate star we have selected so far, we have the `source_id`; the goal is to find the `obj_id` for the same star (we hope) in the Pan-STARRS catalog.\n", + "\n", + "To do that we will:\n", + "\n", + "1. Make a table that contains the `source_id` for each candidate star and upload the table to the Gaia server;\n", + "\n", + "2. Use the `JOIN` operator to look up each `source_id` in the `gaiadr2.panstarrs1_best_neighbour` table, which contains the `obj_id` of the best match for each star in the Gaia catalog; then\n", + "\n", + "3. Use the `JOIN` operator again to look up each `obj_id` in the `panstarrs1_original_valid` table, which contains the Pan-STARRS photometry data we want.\n", + "\n", + "Let's start with the first step, uploading a table." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preparing a table for uploading\n", + "\n", + "For each candidate star, we want to find the corresponding row in the `gaiadr2.panstarrs1_best_neighbour` table.\n", + "\n", + "In order to do that, we have to:\n", + "\n", + "1. Write the table in a local file as an XML VOTable, which is a format suitable for transmitting a table over a network.\n", + "\n", + "2. Write an ADQL query that refers to the uploaded table.\n", + "\n", + "3. Change the way we submit the job so it uploads the table before running the query." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first step is not too difficult because Astropy provides a function called `writeto` that can write a `Table` in `XML`.\n", + "\n", + "[The documentation of this process is here](https://docs.astropy.org/en/stable/io/votable/).\n", + "\n", + "First we have to convert our Pandas `DataFrame` to an Astropy `Table`." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.table.table.Table" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from astropy.table import Table\n", + "\n", + "candidate_table = Table.from_pandas(candidate_df)\n", + "type(candidate_table)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To write the file, we can use `Table.write` with `format='votable'`, [as described here](https://docs.astropy.org/en/stable/io/unified.html#vo-tables)." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "table = candidate_table[['source_id']]\n", + "table.write('candidate_df.xml', format='votable', overwrite=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that we select a single column from the table, `source_id`.\n", + "We could write the entire table to a file, but that would take longer to transmit over the network, and we really only need one column.\n", + "\n", + "This process, taking a structure like a `Table` and translating it into a form that can be transmitted over a network, is called [serialization](https://en.wikipedia.org/wiki/Serialization).\n", + "\n", + "XML is one of the most common serialization formats. One nice feature is that XML data is plain text, as opposed to binary digits, so you can read the file we just wrote:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n" + ] + } + ], + "source": [ + "!head candidate_df.xml" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "XML is a general format, so different XML files contain different kinds of data. In order to read an XML file, it's not enough to know that it's XML; you also have to know the data format, which is called a [schema](https://en.wikipedia.org/wiki/XML_schema).\n", + "\n", + "In this example, the schema is VOTable; notice that one of the first tags in the file specifies the schema, and even includes the URL where you can get its definition.\n", + "\n", + "So this is an example of a self-documenting format.\n", + "\n", + "A drawback of XML is that it tends to be big, which is why we wrote just the `source_id` column rather than the whole table.\n", + "The size of the file is about 750 KB, so that's not too bad." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-rw-rw-r-- 1 downey downey 396K Oct 19 14:48 candidate_df.xml\r\n" + ] + } + ], + "source": [ + "!ls -lh candidate_df.xml" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you are using Windows, `ls` might not work; in that case, try:\n", + "\n", + "```\n", + "!dir candidate_df.xml\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** There's a gotcha here we want to warn you about. Why do you think we used double brackets to specify the column we wanted? What happens if you use single brackets?\n", + "\n", + "Run these cells to find out." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.table.table.Table" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table = candidate_table[['source_id']]\n", + "type(table)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.table.column.Column" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "column = candidate_table['source_id']\n", + "type(column)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# writeto(column, 'candidate_df.xml')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Uploading a table\n", + "\n", + "The next step is to upload this table to the Gaia server and use it as part of a query.\n", + "\n", + "[Here's the documentation that explains how to run a query with an uploaded table](https://astroquery.readthedocs.io/en/latest/gaia/gaia.html#synchronous-query-on-an-on-the-fly-uploaded-table).\n", + "\n", + "In the spirit of incremental development and testing, let's start with the simplest possible query." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "query = \"\"\"SELECT *\n", + "FROM tap_upload.candidate_df\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This query downloads all rows and all columns from the uploaded table. The name of the table has two parts: `tap_upload` specifies a table that was uploaded using TAP+ (remember that's the name of the protocol we're using to talk to the Gaia server).\n", + "\n", + "And `candidate_df` is the name of the table, which we get to choose (unlike `tap_upload`, which we didn't get to choose).\n", + "\n", + "Here's how we run the query:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: gea.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n", + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: geadata.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n", + "INFO: Query finished. [astroquery.utils.tap.core]\n" + ] + } + ], + "source": [ + "from astroquery.gaia import Gaia\n", + "\n", + "job = Gaia.launch_job_async(query=query, \n", + " upload_resource='candidate_df.xml', \n", + " upload_table_name='candidate_df')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`upload_resource` specifies the name of the file we want to upload, which is the file we just wrote.\n", + "\n", + "`upload_table_name` is the name we assign to this table, which is the name we used in the query.\n", + "\n", + "And here are the results:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "Table length=7346\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_id
int64
635559124339440000
635860218726658176
635674126383965568
635535454774983040
635497276810313600
635614168640132864
635821843194387840
635551706931167104
635518889086133376
635580294233854464
...
612282738058264960
612485911486166656
612386332668697600
612296172717818624
612250375480101760
612394926899159168
612288854091187712
612428870024913152
612256418500423168
612429144902815104
" + ], + "text/plain": [ + "\n", + " source_id \n", + " int64 \n", + "------------------\n", + "635559124339440000\n", + "635860218726658176\n", + "635674126383965568\n", + "635535454774983040\n", + "635497276810313600\n", + "635614168640132864\n", + "635821843194387840\n", + "635551706931167104\n", + "635518889086133376\n", + "635580294233854464\n", + " ...\n", + "612282738058264960\n", + "612485911486166656\n", + "612386332668697600\n", + "612296172717818624\n", + "612250375480101760\n", + "612394926899159168\n", + "612288854091187712\n", + "612428870024913152\n", + "612256418500423168\n", + "612429144902815104" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results = job.get_results()\n", + "results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If things go according to plan, the result should contain the same rows and columns as the uploaded table." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(7346, 7346)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(candidate_table), len(results)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "set(candidate_table['source_id']) == set(results['source_id'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, we uploaded a table and then downloaded it again, so that's not too useful.\n", + "\n", + "But now that we can upload a table, we can join it with other tables on the Gaia server." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Joining with an uploaded table\n", + "\n", + "Here's the first example of a query that contains a `JOIN` clause." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "query1 = \"\"\"SELECT *\n", + "FROM gaiadr2.panstarrs1_best_neighbour as best\n", + "JOIN tap_upload.candidate_df as candidate_df\n", + "ON best.source_id = candidate_df.source_id\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's break that down one clause at a time:\n", + "\n", + "* `SELECT *` means we will download all columns from both tables.\n", + "\n", + "* `FROM gaiadr2.panstarrs1_best_neighbour as best` means that we'll get the columns from the Pan-STARRS best neighbor table, which we'll refer to using the short name `best`.\n", + "\n", + "* `JOIN tap_upload.candidate_df as candidate_df` means that we'll also get columns from the uploaded table, which we'll refer to using the short name `candidate_df`.\n", + "\n", + "* `ON best.source_id = candidate_df.source_id` specifies that we will use `source_id ` to match up the rows from the two tables.\n", + "\n", + "Here's the [documentation of the best neighbor table](https://gea.esac.esa.int/archive/documentation/GDR2/Gaia_archive/chap_datamodel/sec_dm_crossmatches/ssec_dm_panstarrs1_best_neighbour.html).\n", + "\n", + "Let's run the query:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO: Query finished. [astroquery.utils.tap.core]\n" + ] + } + ], + "source": [ + "job1 = Gaia.launch_job_async(query=query1, \n", + " upload_resource='candidate_df.xml', \n", + " upload_table_name='candidate_df')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And get the results." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Table length=3724\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_idoriginal_ext_source_idangular_distancenumber_of_neighboursnumber_of_matesbest_neighbour_multiplicitygaia_astrometric_paramssource_id_2
arcsec
int64int64float64int32int16int16int16int64
6358602187266581761309113851876713490.0536670358954670841015635860218726658176
6356741263839655681308313884284887200.0388102681415775161015635674126383965568
6355354547749830401306313783776573690.0343230288289910761015635535454774983040
6354972768103136001308113804456319300.047202554132500061015635497276810313600
6356141686401328641305713959221401350.0203041897099641431015635614168640132864
6355986079743697921303413920912795130.0365246268534030541015635598607974369792
6357376618354965761310013993335021360.0366268278207166061015635737661835496576
6358509458927486721320113986549341470.0211787423933783961015635850945892748672
6356005321197136641304213922858936230.045188209150430151015635600532119713664
........................
6122417812491246081297513437559955610.042357158300018151015612241781249124608
6123321473614430721301413414585387770.022652498590129771015612332147361443072
6124267440168024321305213468524656560.032476530099618431015612426744016802432
6123317393403417601301113412177938390.0360642408180257351015612331739340341760
6122827380582649601297413404459335190.0252932373534968981015612282738058264960
6123863326686976001303513545702197740.020103160014030861015612386332668697600
6122961727178186241296913380061687800.0512642120258362051015612296172717818624
6122503754801017601297413464758974640.0317837403475309051015612250375480101760
6123949268991591681305813551997517950.040191748305466981015612394926899159168
6122564185004231681299313490752973100.0092427896695131561015612256418500423168
" + ], + "text/plain": [ + "\n", + " source_id original_ext_source_id ... source_id_2 \n", + " ... \n", + " int64 int64 ... int64 \n", + "------------------ ---------------------- ... ------------------\n", + "635860218726658176 130911385187671349 ... 635860218726658176\n", + "635674126383965568 130831388428488720 ... 635674126383965568\n", + "635535454774983040 130631378377657369 ... 635535454774983040\n", + "635497276810313600 130811380445631930 ... 635497276810313600\n", + "635614168640132864 130571395922140135 ... 635614168640132864\n", + "635598607974369792 130341392091279513 ... 635598607974369792\n", + "635737661835496576 131001399333502136 ... 635737661835496576\n", + "635850945892748672 132011398654934147 ... 635850945892748672\n", + "635600532119713664 130421392285893623 ... 635600532119713664\n", + " ... ... ... ...\n", + "612241781249124608 129751343755995561 ... 612241781249124608\n", + "612332147361443072 130141341458538777 ... 612332147361443072\n", + "612426744016802432 130521346852465656 ... 612426744016802432\n", + "612331739340341760 130111341217793839 ... 612331739340341760\n", + "612282738058264960 129741340445933519 ... 612282738058264960\n", + "612386332668697600 130351354570219774 ... 612386332668697600\n", + "612296172717818624 129691338006168780 ... 612296172717818624\n", + "612250375480101760 129741346475897464 ... 612250375480101760\n", + "612394926899159168 130581355199751795 ... 612394926899159168\n", + "612256418500423168 129931349075297310 ... 612256418500423168" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results1 = job1.get_results()\n", + "results1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This table contains all of the columns from the best neighbor table, plus the single column from the uploaded table." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['source_id',\n", + " 'original_ext_source_id',\n", + " 'angular_distance',\n", + " 'number_of_neighbours',\n", + " 'number_of_mates',\n", + " 'best_neighbour_multiplicity',\n", + " 'gaia_astrometric_params',\n", + " 'source_id_2']" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results1.colnames" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Because one of the column names appears in both tables, the second instance of `source_id` has been appended with the suffix `_2`.\n", + "\n", + "The length of the results table is about 2000, which means we were not able to find matches for all stars in the list of candidate_df." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3724" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(results1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To get more information about the matching process, we can inspect `best_neighbour_multiplicity`, which indicates for each star in Gaia how many stars in Pan-STARRS are equally likely matches.\n", + "\n", + "For this kind of data exploration, we'll convert a column from the table to a Pandas `Series` so we can use `value_counts`, which counts the number of times each value appears in a `Series`, like a histogram." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1 3724\n", + "dtype: int64" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "nn = pd.Series(results1['best_neighbour_multiplicity'])\n", + "nn.value_counts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result shows that `1` is the only value in the `Series`, appearing xxx times.\n", + "\n", + "That means that in every case where a match was found, the matching algorithm identified a single neighbor as the most likely match.\n", + "\n", + "Similarly, `number_of_mates` indicates the number of other stars in Gaia that match with the same star in Pan-STARRS." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 3724\n", + "dtype: int64" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nm = pd.Series(results1['number_of_mates'])\n", + "nm.value_counts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this set of candidate_df, almost all of the stars we've selected from Pan-STARRS are only matched with a single star in the Gaia catalog.\n", + "\n", + "**Detail** The table also contains `number_of_neighbors` which is the number of stars in Pan-STARRS that match in terms of position, before using other critieria to choose the most likely match." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Getting the photometry data\n", + "\n", + "The most important column in `results1` is `original_ext_source_id` which is the `obj_id` we will use to look up the likely matches in Pan-STARRS to get photometry data.\n", + "\n", + "The process is similar to what we just did to look up the matches. We will:\n", + "\n", + "1. Make a table that contains `source_id` and `original_ext_source_id`.\n", + "\n", + "2. Write the table to an XML VOTable file.\n", + "\n", + "3. Write a query that joins the uploaded table with `gaiadr2.panstarrs1_original_valid` and selects the photometry data we want.\n", + "\n", + "4. Run the query using the uploaded table.\n", + "\n", + "Since we've done everything here before, we'll do these steps as an exercise.\n", + "\n", + "**Exercise:** Select `source_id` and `original_ext_source_id` from `results1` and write the resulting table as a file named `external.xml`." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "table = results1[['source_id', 'original_ext_source_id']]\n", + "table.write('external.xml', format='votable', overwrite=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use `!head` to confirm that the file exists and contains an XML VOTable." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r\n", + "\r\n", + "\r\n", + " \r\n", + "
\r\n", + " \r\n", + " \r\n", + " Unique Gaia source identifier\r\n", + " \r\n" + ] + } + ], + "source": [ + "!head external.xml" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Read [the documentation of the Pan-STARRS table](https://gea.esac.esa.int/archive/documentation/GDR2/Gaia_archive/chap_datamodel/sec_dm_external_catalogues/ssec_dm_panstarrs1_original_valid.html) and make note of `obj_id`, which contains the object IDs we'll use to find the rows we want.\n", + "\n", + "Write a query that uses each value of `original_ext_source_id` from the uploaded table to find a row in `gaiadr2.panstarrs1_original_valid` with the same value in `obj_id`, and select all columns from both tables.\n", + "\n", + "Suggestion: Develop and test your query incrementally. For example:\n", + "\n", + "1. Write a query that downloads all columns from the uploaded table. Test to make sure we can read the uploaded table.\n", + "\n", + "2. Write a query that downloads the first 10 rows from `gaiadr2.panstarrs1_original_valid`. Test to make sure we can access Pan-STARRS data.\n", + "\n", + "3. Write a query that joins the two tables and selects all columns. Test that the join works as expected.\n", + "\n", + "\n", + "As a bonus exercise, write a query that joins the two tables and selects just the columns we need:\n", + "\n", + "* `source_id` from the uploaded table\n", + "\n", + "* `g_mean_psf_mag` from `gaiadr2.panstarrs1_original_valid`\n", + "\n", + "* `i_mean_psf_mag` from `gaiadr2.panstarrs1_original_valid`\n", + "\n", + "Hint: When you select a column from a join, you have to specify which table the column is in." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "query2 = \"\"\"SELECT *\n", + "FROM tap_upload.external as external\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "query2 = \"\"\"SELECT TOP 10 *\n", + "FROM gaiadr2.panstarrs1_original_valid\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "query2 = \"\"\"SELECT *\n", + "FROM gaiadr2.panstarrs1_original_valid as ps\n", + "JOIN tap_upload.external as external\n", + "ON ps.obj_id = external.original_ext_source_id\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "query2 = \"\"\"SELECT\n", + "external.source_id, ps.g_mean_psf_mag, ps.i_mean_psf_mag\n", + "FROM gaiadr2.panstarrs1_original_valid as ps\n", + "JOIN tap_upload.external as external\n", + "ON ps.obj_id = external.original_ext_source_id\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SELECT\n", + "external.source_id, ps.g_mean_psf_mag, ps.i_mean_psf_mag\n", + "FROM gaiadr2.panstarrs1_original_valid as ps\n", + "JOIN tap_upload.external as external\n", + "ON ps.obj_id = external.original_ext_source_id\n", + "\n" + ] + } + ], + "source": [ + "print(query2)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO: Query finished. [astroquery.utils.tap.core]\n" + ] + } + ], + "source": [ + "job2 = Gaia.launch_job_async(query=query2, \n", + " upload_resource='external.xml', \n", + " upload_table_name='external')" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Table length=3724\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_idg_mean_psf_magi_mean_psf_mag
mag
int64float64float64
63586021872665817617.897800445556617.5174007415771
63567412638396556819.287300109863317.6781005859375
63553545477498304016.923799514770516.478099822998
63549727681031360019.924200057983418.3339996337891
63561416864013286416.151599884033214.6662998199463
63559860797436979216.522399902343816.1375007629395
63573766183549657614.503299713134813.9849004745483
63585094589274867216.517499923706116.0450000762939
63560053211971366420.450599670410219.5177001953125
.........
61224178124912460820.234399795532218.6518001556396
61233214736144307221.384899139404320.3076000213623
61242674401680243217.828100204467817.4281005859375
61233173934034176021.865699768066419.5223007202148
61228273805826496022.515199661254919.9743995666504
61238633266869760019.379299163818417.9923000335693
61229617271781862417.494400024414116.926700592041
61225037548010176015.333000183105514.6280002593994
61239492689915916816.441400527954115.8212003707886
61225641850042316820.871599197387719.9612007141113
" + ], + "text/plain": [ + "\n", + " source_id g_mean_psf_mag i_mean_psf_mag \n", + " mag \n", + " int64 float64 float64 \n", + "------------------ ---------------- ----------------\n", + "635860218726658176 17.8978004455566 17.5174007415771\n", + "635674126383965568 19.2873001098633 17.6781005859375\n", + "635535454774983040 16.9237995147705 16.478099822998\n", + "635497276810313600 19.9242000579834 18.3339996337891\n", + "635614168640132864 16.1515998840332 14.6662998199463\n", + "635598607974369792 16.5223999023438 16.1375007629395\n", + "635737661835496576 14.5032997131348 13.9849004745483\n", + "635850945892748672 16.5174999237061 16.0450000762939\n", + "635600532119713664 20.4505996704102 19.5177001953125\n", + " ... ... ...\n", + "612241781249124608 20.2343997955322 18.6518001556396\n", + "612332147361443072 21.3848991394043 20.3076000213623\n", + "612426744016802432 17.8281002044678 17.4281005859375\n", + "612331739340341760 21.8656997680664 19.5223007202148\n", + "612282738058264960 22.5151996612549 19.9743995666504\n", + "612386332668697600 19.3792991638184 17.9923000335693\n", + "612296172717818624 17.4944000244141 16.926700592041\n", + "612250375480101760 15.3330001831055 14.6280002593994\n", + "612394926899159168 16.4414005279541 15.8212003707886\n", + "612256418500423168 20.8715991973877 19.9612007141113" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results2 = job2.get_results()\n", + "results2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Challenge exercise**\n", + "\n", + "Do both joins in one query.\n", + "\n", + "There's an [example here](https://github.com/smoh/Getting-started-with-Gaia/blob/master/gaia-adql-snippets.md) you could start with." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Write the data\n", + "\n", + "Since we have the data in an Astropy `Table`, let's store it in a FITS file." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "filename = 'gd1_photo.fits'\n", + "results2.write(filename, overwrite=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can check that the file exists, and see how big it is." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-rw-rw-r-- 1 downey downey 96K Oct 19 14:49 gd1_photo.fits\r\n" + ] + } + ], + "source": [ + "!ls -lh gd1_photo.fits" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "At around 175 KB, it is smaller than some of the other files we've been working with.\n", + "\n", + "If you are using Windows, `ls` might not work; in that case, try:\n", + "\n", + "```\n", + "!dir gd1_photo.fits\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "In this notebook, we used database `JOIN` operations to select photometry data for the stars we've identified as candidates to be in GD-1.\n", + "\n", + "In the next notebook, we'll use this data for a second round of selection, identifying stars that have photometry data consistent with GD-1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Best practice\n", + "\n", + "* Use `JOIN` operations to combine data from multiple tables in a databased, using some kind of identifier to match up records from one table with records from another.\n", + "\n", + "* This is another example of a practice we saw in the previous notebook, moving the computation to the data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_sources/06_photo.ipynb b/_sources/06_photo.ipynb new file mode 100644 index 0000000..1375ac2 --- /dev/null +++ b/_sources/06_photo.ipynb @@ -0,0 +1,1372 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 6\n", + "\n", + "This is the sixth in a series of notebooks related to astronomy data.\n", + "\n", + "As a continuing example, we will replicate part of the analysis in a recent paper, \"[Off the beaten path: Gaia reveals GD-1 stars outside of the main stream](https://arxiv.org/abs/1805.00425)\" by Adrian M. Price-Whelan and Ana Bonaca.\n", + "\n", + "In the previous lesson we downloaded photometry data from Pan-STARRS, which is available from the same server we've been using to get Gaia data. \n", + "\n", + "The next step in the analysis is to select candidate stars based on the photometry data. The following figure from the paper is a color-magnitude diagram for the stars selected based on proper motion:\n", + "\n", + "\n", + "\n", + "In red is a theoretical isochrone, showing where we expect the stars in GD-1 to fall based on the metallicity and age of their original globular cluster. \n", + "\n", + "By selecting stars in the shaded area, we can further distinguish the main sequence of GD-1 from younger background stars." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Outline\n", + "\n", + "Here are the steps in this notebook:\n", + "\n", + "1. We'll reload the data from the previous notebook and make a color-magnitude diagram.\n", + "\n", + "2. Then we'll specify a polygon in the diagram that contains stars with the photometry we expect.\n", + "\n", + "3. Then we'll merge the photometry data with the list of candidate stars, storing the result in a Pandas `DataFrame`.\n", + "\n", + "After completing this lesson, you should be able to\n", + "\n", + "* Use Matplotlib to specify a `Polygon` and determine which points fall inside it.\n", + "\n", + "* Use Pandas to merge data from multiple `DataFrames`, much like a database `JOIN` operation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing libraries\n", + "\n", + "If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we'll use.\n", + "\n", + "If you are running this notebook on your own computer, you might have to install these libraries yourself. \n", + "\n", + "If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.\n", + "\n", + "TODO: Add a link to the instructions." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# If we're running on Colab, install libraries\n", + "\n", + "import sys\n", + "IN_COLAB = 'google.colab' in sys.modules\n", + "\n", + "if IN_COLAB:\n", + " !pip install astroquery astro-gala pyia python-wget" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reload the data\n", + "\n", + "The following cell downloads the photometry data we created in the previous notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from wget import download\n", + "\n", + "filename = 'gd1_photo.fits'\n", + "filepath = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'\n", + "\n", + "if not os.path.exists(filename):\n", + " print(download(filepath+filename))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can read the data back into an Astropy `Table`." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from astropy.table import Table\n", + "\n", + "photo_table = Table.read(filename)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plotting photometry data\n", + "\n", + "Now that we have photometry data from Pan-STARRS, we can replicate the [color-magnitude diagram](https://en.wikipedia.org/wiki/Galaxy_color%E2%80%93magnitude_diagram) from the original paper:\n", + "\n", + "\n", + "\n", + "The y-axis shows the apparent magnitude of each source with the [g filter](https://en.wikipedia.org/wiki/Photometric_system).\n", + "\n", + "The x-axis shows the difference in apparent magnitude between the g and i filters, which indicates color.\n", + "\n", + "Stars with lower values of (g-i) are brighter in g-band than in i-band, compared to other stars, which means they are bluer.\n", + "\n", + "Stars in the lower-left quadrant of this diagram are less bright and less metallic than the others, which means they are [likely to be older](http://spiff.rit.edu/classes/ladder/lectures/ordinary_stars/ordinary.html).\n", + "\n", + "Since we expect the stars in GD-1 to be older than the background stars, the stars in the lower-left are more likely to be in GD-1." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def plot_cmd(table):\n", + " \"\"\"Plot a color magnitude diagram.\n", + " \n", + " table: Table or DataFrame with photometry data\n", + " \"\"\"\n", + " y = table['g_mean_psf_mag']\n", + " x = table['g_mean_psf_mag'] - table['i_mean_psf_mag']\n", + "\n", + " plt.plot(x, y, 'ko', markersize=0.3, alpha=0.3)\n", + "\n", + " plt.xlim([0, 1.5])\n", + " plt.ylim([14, 22])\n", + " plt.gca().invert_yaxis()\n", + "\n", + " plt.ylabel('$g_0$')\n", + " plt.xlabel('$(g-i)_0$')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`plot_cmd` uses a new function, `invert_yaxis`, to invert the `y` axis, which is conventional when plotting magnitudes, since lower magnitude indicates higher brightness.\n", + "\n", + "`invert_yaxis` is a little different from the other functions we've used. You can't call it like this:\n", + "\n", + "```\n", + "plt.invert_yaxis() # doesn't work\n", + "```\n", + "\n", + "You have to call it like this:\n", + "\n", + "```\n", + "plt.gca().invert_yaxis() # works\n", + "```\n", + "\n", + "`gca` stands for \"get current axis\". It returns an object that represents the axes of the current figure, and that object provides `invert_yaxis`.\n", + "\n", + "**In case anyone asks:** The most likely reason for this inconsistency in the interface is that `invert_yaxis` is a lesser-used function, so it's not made available at the top level of the interface." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's what the results look like." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_cmd(photo_table)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our figure does not look exactly like the one in the paper because we are working with a smaller region of the sky, so we don't have as many stars. But we can see an overdense region in the lower left that contains stars with the photometry we expect for GD-1.\n", + "\n", + "The authors of the original paper derive a detailed polygon that defines a boundary between stars that are likely to be in GD-1 or not.\n", + "\n", + "As a simplification, we'll choose a boundary by eye that seems to contain the overdense region." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Drawing a polygon\n", + "\n", + "Matplotlib provides a function called `ginput` that lets us click on the figure and make a list of coordinates.\n", + "\n", + "It's a little tricky to use `ginput` in a Jupyter notebook. \n", + "Before calling `plt.ginput` we have to tell Matplotlib to use `TkAgg` to draw the figure in a new window.\n", + "\n", + "When you run the following cell, a figure should appear in a new window. Click on it 10 times to draw a polygon around the overdense area. A red cross should appear where you click." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib as mpl\n", + "\n", + "if IN_COLAB:\n", + " coords = None\n", + "else:\n", + " mpl.use('TkAgg')\n", + " plot_cmd(photo_table)\n", + " coords = plt.ginput(10)\n", + " mpl.use('agg')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The argument to `ginput` is the number of times the user has to click on the figure.\n", + "\n", + "The result from `ginput` is a list of coordinate pairs." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(0.2150537634408602, 17.548197203826344),\n", + " (0.3897849462365591, 18.94628403237675),\n", + " (0.5376344086021505, 19.902869757174393),\n", + " (0.7034050179211468, 20.601913171449596),\n", + " (0.8288530465949819, 21.300956585724798),\n", + " (0.6630824372759856, 21.52170713760118),\n", + " (0.4301075268817204, 20.785871964679913),\n", + " (0.27329749103942647, 19.71891096394408),\n", + " (0.17473118279569888, 18.688741721854306),\n", + " (0.17473118279569888, 17.95290654893304)]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coords" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If `ginput` doesn't work for you, you could use the following coordinates." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "if coords is None:\n", + " coords = [(0.2, 17.5), \n", + " (0.2, 19.5), \n", + " (0.65, 22),\n", + " (0.75, 21),\n", + " (0.4, 19),\n", + " (0.4, 17.5)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next step is to convert the coordinates to a format we can use to plot them, which is a sequence of `x` coordinates and a sequence of `y` coordinates. The NumPy function `transpose` does what we want. " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([0.21505376, 0.38978495, 0.53763441, 0.70340502, 0.82885305,\n", + " 0.66308244, 0.43010753, 0.27329749, 0.17473118, 0.17473118]),\n", + " array([17.5481972 , 18.94628403, 19.90286976, 20.60191317, 21.30095659,\n", + " 21.52170714, 20.78587196, 19.71891096, 18.68874172, 17.95290655]))" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "\n", + "xs, ys = np.transpose(coords)\n", + "xs, ys" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To display the polygon, we'll draw the figure again and use `plt.plot` to draw the polygon." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_cmd(photo_table)\n", + "plt.plot(xs, ys);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If it looks like your polygon does a good job surrounding the overdense area, go on to the next section. Otherwise you can try again.\n", + "\n", + "If you want a polygon with more points (or fewer), you can change the argument to `ginput`.\n", + "\n", + "The polygon does not have to be \"closed\". When we use this polygon in the next section, the last and first points will be connected by a straight line.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Which points are in the polygon?\n", + "\n", + "Matplotlib provides a `Path` object that we can use to check which points fall in the polygon we selected.\n", + "\n", + "Here's how we make a `Path` using a list of coordinates." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Path(array([[ 0.21505376, 17.5481972 ],\n", + " [ 0.38978495, 18.94628403],\n", + " [ 0.53763441, 19.90286976],\n", + " [ 0.70340502, 20.60191317],\n", + " [ 0.82885305, 21.30095659],\n", + " [ 0.66308244, 21.52170714],\n", + " [ 0.43010753, 20.78587196],\n", + " [ 0.27329749, 19.71891096],\n", + " [ 0.17473118, 18.68874172],\n", + " [ 0.17473118, 17.95290655]]), None)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from matplotlib.path import Path\n", + "\n", + "path = Path(coords)\n", + "path" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`Path` provides `contains_points`, which figures out which points are inside the polygon.\n", + "\n", + "To test it, we'll create a list with two points, one inside the polygon and one outside." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "points = [(0.4, 20), \n", + " (0.4, 30)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can make sure `contains_points` does what we expect." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ True, False])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "inside = path.contains_points(points)\n", + "inside" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is an array of Boolean values.\n", + "\n", + "We are almost ready to select stars whose photometry data falls in this polygon. But first we need to do some data cleaning." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reloading the data\n", + "\n", + "Now we need to combine the photometry data with the list of candidate stars we identified in a previous notebook. The following cell downloads it:\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from wget import download\n", + "\n", + "filename = 'gd1_candidates.hdf5'\n", + "filepath = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'\n", + "\n", + "if not os.path.exists(filename):\n", + " print(download(filepath+filename))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "candidate_df = pd.read_hdf(filename, 'candidate_df')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`candidate_df` is the Pandas DataFrame that contains the results from Notebook XX, which selects stars likely to be in GD-1 based on proper motion. It also includes position and proper motion transformed to the ICRS frame." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Merging photometry data\n", + "\n", + "Before we select stars based on photometry data, we have to solve two problems:\n", + "\n", + "1. We only have Pan-STARRS data for some stars in `candidate_df`.\n", + "\n", + "2. Even for the stars where we have Pan-STARRS data in `photo_table`, some photometry data is missing.\n", + "\n", + "We will solve these problems in two step:\n", + "\n", + "1. We'll merge the data from `candidate_df` and `photo_table` into a single Pandas `DataFrame`.\n", + "\n", + "2. We'll use Pandas functions to deal with missing data.\n", + "\n", + "`candidate_df` is already a `DataFrame`, but `results` is an Astropy `Table`. Let's convert it to Pandas:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "source_id\n", + "g_mean_psf_mag\n", + "i_mean_psf_mag\n" + ] + } + ], + "source": [ + "photo_df = photo_table.to_pandas()\n", + "\n", + "for colname in photo_df.columns:\n", + " print(colname)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we want to combine `candidate_df` and `photo_df` into a single table, using `source_id` to match up the rows.\n", + "\n", + "You might recognize this task; it's the same as the JOIN operation in ADQL/SQL.\n", + "\n", + "Pandas provides a function called `merge` that does what we want. Here's how we use it." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
source_idradecpmrapmdecparallaxparallax_errorradial_velocityphi1phi2pm_phi1pm_phi2g_mean_psf_magi_mean_psf_mag
0635559124339440000137.58671719.196544-3.770522-12.4904820.7913930.271754NaN-59.630489-1.216485-7.361363-0.592633NaNNaN
1635860218726658176138.51870719.092339-5.941679-11.3464090.3074560.199466NaN-59.247330-2.016078-7.5271261.74877917.897817.517401
2635674126383965568138.84287419.031798-3.897001-12.7027800.7794630.223692NaN-59.133391-2.306901-7.560608-0.74180019.287317.678101
3635535454774983040137.83775218.864007-4.335041-14.4923090.3145140.102775NaN-59.785300-1.594569-9.357536-1.21849216.923816.478100
4635497276810313600138.04451619.009471-7.172931-12.2914990.4254040.337689NaN-59.557744-1.682147-9.0008312.33440719.924218.334000
\n", + "" + ], + "text/plain": [ + " source_id ra dec pmra pmdec parallax \\\n", + "0 635559124339440000 137.586717 19.196544 -3.770522 -12.490482 0.791393 \n", + "1 635860218726658176 138.518707 19.092339 -5.941679 -11.346409 0.307456 \n", + "2 635674126383965568 138.842874 19.031798 -3.897001 -12.702780 0.779463 \n", + "3 635535454774983040 137.837752 18.864007 -4.335041 -14.492309 0.314514 \n", + "4 635497276810313600 138.044516 19.009471 -7.172931 -12.291499 0.425404 \n", + "\n", + " parallax_error radial_velocity phi1 phi2 pm_phi1 pm_phi2 \\\n", + "0 0.271754 NaN -59.630489 -1.216485 -7.361363 -0.592633 \n", + "1 0.199466 NaN -59.247330 -2.016078 -7.527126 1.748779 \n", + "2 0.223692 NaN -59.133391 -2.306901 -7.560608 -0.741800 \n", + "3 0.102775 NaN -59.785300 -1.594569 -9.357536 -1.218492 \n", + "4 0.337689 NaN -59.557744 -1.682147 -9.000831 2.334407 \n", + "\n", + " g_mean_psf_mag i_mean_psf_mag \n", + "0 NaN NaN \n", + "1 17.8978 17.517401 \n", + "2 19.2873 17.678101 \n", + "3 16.9238 16.478100 \n", + "4 19.9242 18.334000 " + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "merged = pd.merge(candidate_df, \n", + " photo_df, \n", + " on='source_id', \n", + " how='left')\n", + "merged.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first argument is the \"left\" table, the second argument is the \"right\" table, and the keyword argument `on='source_id'` specifies a column to use to match up the rows.\n", + "\n", + "The argument `how='left'` means that the result should have all rows from the left table, even if some of them don't match up with a row in the right table.\n", + "\n", + "If you are interested in the other options for `how`, you can [read the documentation of `merge`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html).\n", + "\n", + "You can also do different types of join in ADQL/SQL; [you can read about that here](https://www.w3schools.com/sql/sql_join.asp).\n", + "\n", + "The result is a `DataFrame` that contains the same number of rows as `candidate_df`. " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(7346, 3724, 7346)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(candidate_df), len(photo_df), len(merged)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And all columns from both tables." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "source_id\n", + "ra\n", + "dec\n", + "pmra\n", + "pmdec\n", + "parallax\n", + "parallax_error\n", + "radial_velocity\n", + "phi1\n", + "phi2\n", + "pm_phi1\n", + "pm_phi2\n", + "g_mean_psf_mag\n", + "i_mean_psf_mag\n" + ] + } + ], + "source": [ + "for colname in merged.columns:\n", + " print(colname)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Detail** You might notice that Pandas also provides a function called `join`; it does almost the same thing, but the interface is slightly different. We think `merge` is a little easier to use, so that's what we chose. It's also more consistent with JOIN in SQL, so if you learn how to use `pd.merge`, you are also learning how to use SQL JOIN.\n", + "\n", + "Also, someone might ask why we have to use Pandas to do this join; why didn't we do it in ADQL. The answer is that we could have done that, but since we already have the data we need, we should probably do the computation locally rather than make another round trip to the Gaia server." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Missing data\n", + "\n", + "Let's add columns to the merged table for magnitude and color." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "merged['mag'] = merged['g_mean_psf_mag']\n", + "merged['color'] = merged['g_mean_psf_mag'] - merged['i_mean_psf_mag']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These columns contain the special value `NaN` where we are missing data.\n", + "\n", + "We can use `notnull` to see which rows contain value data, that is, not null values." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 False\n", + "1 True\n", + "2 True\n", + "3 True\n", + "4 True\n", + " ... \n", + "7341 True\n", + "7342 False\n", + "7343 False\n", + "7344 True\n", + "7345 False\n", + "Name: color, Length: 7346, dtype: bool" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "merged['color'].notnull()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And `sum` to count the number of valid values." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3724" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "merged['color'].notnull().sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For scientific purposes, it's not obvious what we should do with candidate stars if we don't have photometry data. Should we give them the benefit of the doubt or leave them out?\n", + "\n", + "In part the answer depends on the goal: are we trying to identify more stars that might be in GD-1, or a smaller set of stars that have higher probability?\n", + "\n", + "In the next section, we'll leave them out, but you can experiment with the alternative." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting based on photometry\n", + "\n", + "Now let's see how many of these points are inside the polygon we chose.\n", + "\n", + "We can use a list of column names to select `color` and `mag`." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
colormag
0NaNNaN
10.380417.8978
21.609219.2873
30.445716.9238
41.590219.9242
\n", + "
" + ], + "text/plain": [ + " color mag\n", + "0 NaN NaN\n", + "1 0.3804 17.8978\n", + "2 1.6092 19.2873\n", + "3 0.4457 16.9238\n", + "4 1.5902 19.9242" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "points = merged[['color', 'mag']]\n", + "points.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a `DataFrame` that can be treated as a sequence of coordinates, so we can pass it to `contains_points`:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([False, False, False, ..., False, False, False])" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "inside = path.contains_points(points)\n", + "inside" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a Boolean array. We can use `sum` to see how many stars fall in the polygon." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "496" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "inside.sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can use `inside` as a mask to select stars that fall inside the polygon." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "selected = merged[inside]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's make a color-magnitude plot one more time, highlighting the selected stars with green `x` marks." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_cmd(photo_table)\n", + "plt.plot(xs, ys)\n", + "\n", + "plt.plot(selected['color'], selected['mag'], 'gx');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It looks like the selected stars are, in fact, inside the polygon, which means they have photometry data consistent with GD-1.\n", + "\n", + "Finally, we can plot the coordinates of the selected stars:" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmkAAAC1CAYAAAAEEmivAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAm2klEQVR4nO3de5gdVZnv8e+LacW0kOikQZBLEEUHFRUiohmdZkwQnRk5HjkMYsSYeQaDl1HEGWVyHqS1mfaIyhnHMyiOPjhGRuMxaCuNdKL2Gc0jl3ALIOAglxFkJDhGIF66I+/5Y9duKju19669d11W7f37PE893bt2Ve1VtWpVvbXWqipzd0REREQkLHuVnQARERER2ZOCNBEREZEAKUgTERERCZCCNBEREZEAKUgTERERCZCCNBEREZEALSg7AXlYsmSJL126tOxkiIiIiLR13XXXPeTuI43j+zJIW7p0KVu3bi07GSIiIiJtmdm9SePV3CkiIiISIAVpIiIiIgFSkCYiIiISIAVpIiIiIgFSkCYiIiISIAVpIiIiIgFSkCYiIiISIAVpIiIiIgEqNUgzs3vM7GYzu9HM9nj6rNV80szuNLNtZnZ0GekUERERKVoIbxw43t0favLda4BnR8NLgYuivyIiIiJ9LfTmzpOAf/Gaq4DFZnZA2YkSkeLNzc2xadMm5ubmyk6K5Ej5LPK4soM0B6bN7DozOyPh+2cAP419vi8aJyIDZmZmhlWrVjEzM1N2UiRHymeRx5Xd3Lnc3X9mZvsBm8zsdnf/t9j3ljCPJy0oCvLOADjkkEOyT6mIlGp0dJT169czOjpadlIkR8pnkceVWpPm7j+L/j4IXAYc2zDJfcDBsc8HAT9rsqyL3X2Zuy8bGRnJI7kiUqKhoSFWrlzJ0NBQ2UmRHCmfRR5XWpBmZsNmtk/9f+AE4JaGySaB06O7PI8DfuXuDxScVBERycDc3BxXXHEFV1xxhfqciaRQZk3a/sAPzOwm4Brgcnf/tpmtNbO10TRTwF3AncBngbeXk1SR6lEHbAnNzMwMp512Gqeddlrl+py1Kk8qa5KX0oI0d7/L3V8YDc9z9/Oj8Z92909H/7u7v8PdD3f3F7j7Hs9SE5Fk6oAtoRkdHeXSSy/l0ksvrVyfs1blqYiypkBwMJl7Yj/8Slu2bJlv3ap4Tgbb3NwcMzMzjI6Oqn+PSI9alaciytqmTZtYtWoV69evZ+XKlanm0TGgOszsOndf1ji+7EdwiEhO1AFbJDutylMRZa2bu143b97MKaecwubNmzv6rU5r7VTLlx8FaSIiIoHrJhDctWsXc3Nz7Nq1q6Pf6rT5Vl0r8qMgTUQkcKqpkG4sWLCAoaEhFizo7JGondba6dl2+VGQJiISONVUSDdWrFjBhg0bWLFiRUfzdVpr12x6XVz0TkGaiEjgVFMh3Si7X6ouLnqX+u7O6IGzv3X33+ebpN7p7k4REZFy6e7S9Dq+u9PM9jKz08zscjN7ELgdeMDMbjWzC8zs2XkmWERERKqr7Jq8ftCqufN7wOHAOcDT3f1gd98PeAVwFfARM1tVQBpFREREBk6rIG2Fu3/Y3be5+2P1ke7+X+7+NXd/A/CV/JMoki11ZhXJR9XLVtXTP2iyyK/Q87xpkObuTVNsZk9pN41IqNJ0Zg294IqEqOodxaue/kGTRX6FnuddvRbKzP7D3Q/JIT2Z0I0D0kqazqzdvIJFZNBVvaN41dNfFVlt5zTLaTdNKHne7MaBpkGamb232bKAde7+tAzTlykFadKrUAquSBXkVV5UDvtTkRfBVbng7ubdnX8PPBXYp2F4Spv5pILUvLc73ZUkkl5eTUahN0VlbVCOw6Ojo1xyySXzr63K0/LlyznrrLNYvnx5rr+Tl1bB1vXA1919rHEAHikofVKQbg6Gg3JAEam6vMtqXg/bHbSH+A5KUFp/VdXq1atzX9ctW7Zw4YUXsmXLllx/Jy+tmjufA/yXu29P+G5/d/953onrlpo7O9dNs0JVqpFFQlZEk57KajUMUvNuUetalW3acZ+0KlOQVoyq7PwiISsigFJZlVBoX0zWTZ80zOwtZna9me2Mhq1mdnp+yZQqUb8tkd4V0aSnsiqhaGzSVbeZ1lq9Fup04D3A2cCBwDOAvwXenUWgZmYHm9n3zOy26FVT706YZtTMfmVmN0bDub3+rohISBRA1ehkPRgaL0oGpR9et1rVpL0deL27f8/df+XuO9z9u8Abou96tQs4293/EDgOeIeZHZkw3ffd/UXR8KEMfldERALTbydrBZ3JGi9KBu3mkE61CtL2dfd7GkdG4/bt9Yfd/QF3vz76/xHgNmq1dSIiMmBCPll3E3D1W9CZl7xqkvslSG4VpP2my+86ZmZLgRcDVyd8/TIzu8nMrjCz57VYxhlRn7mt27fvcUOqdKBfdm6RoqjM9C7kZt9uAq6Qg864ft13O82zULdDqyDtD81sW8JwM/DcrBIQvQf0a8B73P3hhq+vBw519xcC/wh8vdly3P1id1/m7stGRkaySt5A0hWgSGdUZvpbNwHX0NAQo6OjzMzMBHfij+vXfbfTPAt1O7R6TtqhrWZ093t7/nGzIeBbwJXu/okU098DLHP3h1pNp0dw9Ea3SIt0JqQyE1JaBl0Vnk/Xj/tLN+tU9nbo+BEc7n5vqyGDBBnwOeC2ZgGamT09mg4zOzZK7y96/W1pLeRmB8lPqNX9VRBSmQm1RmAQVaHJs6h9t8jjSzdlIKQyHNfqERx/aWZ/E/t8v5k9bGaPmNmZGfz2cuDNwJ/EHrHxWjNba2Zro2lOBm4xs5uATwKnej8+fVckADq594cqBAbt9MsFQ6gn/jIUeXzphzJQ16q581rgRHf/RfT5Bnd/sZntDUy7+ysLTGdH1Nwp0rmyq/uz1m/rM0iq0EwonVF5bK2bNw7sVQ/QIl8FcPffAk/OOH19r1+uDKV/9dtVf5VrBgf9eNFPNSFS03h8GfR9PK1WQdqi+Ad3/3sAM9sL+IM8E9WPqnzCkPzpgJW9Kp/oB/14UfULBpXnxzXbFoO+j6fVKkibNrPxhPEfAqZzSk/fqvIJQ/KnA1b2qnyi1/Gi2jZv3swpp5zC5s2by05K6Zod27SPp9MqSPsb4HAzu9PMvhYNdwLPAt5XTPL6R5VPGJI/HbAkTseL8vVSG7Zr1y7m5ubYtWtXDimrlmbHtqz38X6tvWz1CI6d7v5G4ATgkmh4tbuf6u6PFpM8kcGgk7LU9evJJguhP8ahbsGCBQwNDbFgwYLsE1YxRR3busmvKpS1VjVpALj7Xe7+zWj4SRGJEhEZVGr6bq4qj3FYsWIFGzZsYMWKFdknrCKKDoC6ya8qlLW2QZqIiBSnyKbvKtQk1NWbDy+55JKut019fX/961+3Xe9eaoBUM158ANTNNm9W1kIqFwrSRERSKOrAXeQJPqsTaZpt0+v2m5mZYfXq1fNNid0su76+n/zkJwtrGgvphF+kdhcbIWyXZu9XDaqGzd3bDsAfAW+N/h8BDkszX1nDMccc4yIiWZqenvb99tvPp6enc/+t2dlZn56e9tnZ2VJ+Jz4+TVrSbJu02y9Nmnpd9s6dOzvevt3mf5H7TZVktV16LStJ6Siq/MUBWz0p/koaudsE8EHgm8CPo88HAlvazVfmoCBNpHdlHKjy1Ov6FLk9sjyxd5Pu+O+nSUua30ibjm7WPWnZWedXt8vrt3KUlay2S7dlpZeAPQ+9BGk3AgbcEBu3rd18ZQ4K0kSSdXJg7LcagCqtT5Yn9l6Dnsa0dJK2btYjq3WfmpryxYsX+9TUVE/L6ZWCtHx1u31DOx70EqRdE/29Pvo7rCBNpJo6OTD128mlzIChSL0EVWl0sg+VeSKMB2ll5mNowUAWqlguGoW2Dr0Eae8DPgPcBfwV8EPgXe3mK3NQkCaSLLQDk3uYaaoL7QSbVf+wPNLQSZNjEXke/40y8zHk/btboZWLftB1kFabl5XABcDHgJVp5ilzUJAmEoZeg4qyT3BZ9rXKQlH9w3rtvN9u+fVpp6amCrtBYmpqar5WTXpTdrnsR70GaYcCK6L/FwL7pJmvrEFBmkj3sjwAp+kXlMVde51q9ZtJ3+3cudMnJiZ8586dTdNYRMCRxc0Pk5OTvnr1al+yZMke27W+/KmpqcQ73iYmJnxkZCQxEOuk5qrV72StyN8S6VYvzZ1/BVwL/CT6/GzgO+3mK3NQkFZtukorVye1Ne3ujGoWpKWt7em09iOLOwiTvpuYmHAz84mJiaa/WVQQ0Ev5mJ6e9uHhYTczX7NmzR7LaBVwTk9P+8jIiE9MTLQNxNLWxLUKflvp5gaYomrtGul4Jmn0enfnExvu7ry53XxlDgrSqk39HYoXD7rSBEb1PJqYmEhVY9IsGGiVx2mDgPj/ae/o6/TuxR07dviaNWt8+/btHdXA5WF6etqXLFnia9asSR3cxPN3cnLSx8fHfceOHU37kCUF31nckNCYp42BX7fLabXerfbnIvKsk7R2k5YygsBBCTyLXM9egrSro783RH8XZHV3J3AicAdwJ/CBhO8N+GT0/Tbg6DTLVZDWm7ILYNm/X4Qi17GTfmHxoCtNINOsJq3dCT1NjUraZtD4iX5ycrLjmrs0gV277ZP0W508f6mT/WF2dtbXrFnTtGYvrr5dJycn90h3q5q/xsAiqwAi6XO8CTXt8tpt27S1m0VcECZtu6Rx8bSk3d7x7RcPdPM+vnSz3ap4XC+ywqCXIO2jwN8Bt0c3EFwGnN9uvhTLfQLwE+CZUU3dTcCRDdO8FrgiCtaOqweM7QYFab1RTVa+Oj0xNc7ba+1F47LitWfxk19jIFRvMuqkpi1eYxJvcqr/5uTkpE9NTfn4+Ph80NFuHWdnZ+drg3bu3Lnb9owvP76MVifATvrNJW2f+DapB0X1mq60edxpmUsb1NabacfHxxPT3a4mrf6326bcpO3emDeNFwON+1c3NaWt1jG+rlNTU37ZZZfN70vNtmPSNk4bfKVNX3zetPtD/QKlcV/rtoayk+Awq+NQyKpSk2ZRv7SvAv83+t/azZdiuS8Drox9Pgc4p2GazwBvjH2+Azig3bIVpPWm7CueLJpV8k5TL3o5gHYT3DVL++TkpA8PD/vY2FjLIC5+AqmfJBcvXtwyDc1OvFNTU/MnlUWLFvnw8LAvXrzYJycn54OOxu3TmP7p6en5eesn68aAc2xszBctWuSTk5M+PT3tO3bs8PHxcZ+cnNyjtq3dibfdOsa3ST1/1qxZs0eTZKtld9s3Ky7pJJi03Pq4pObOdsF1uxrTZtsoHni0qo2cnp72xYsX+6JFi3x8fHx+n6lP3+zZZ0mBe7t8rKensVYyaTsm1cwlbZt2+27j8iYnJ33RokU+Nja220VS2prCZtM3His6DR6Tynavx8AQjuMh6ypIo/YC9ltaTdPtAJwM/HPs85uBTzVM8y3gj2KfvwMsa7K8M4CtwNZDDjkkl41YBf1QEJqdKNIEJnmsfy81X82W100ap6c774vUytjYmAO+bt261E2N9YCrXgOWphahsTalXtNUD5qSlhOvGatPHz/xjY+P+7777uurV6/eLdion+QXLlzoe++993wAOjExMR9IjY+P71Ebk3QSTisehMZrCMfHx/eo3Uhz8m/3G2kColaSgqVmy2gXwDbmbWONbPxvu9ra+HrW83d4eHg+0G6sfW0MmFrdENGq1mvHjh277f+t1rOerxs3bkxMR+Oxot2xa2pqyoeHh33hwoXzQX7aGrS0ze6d1My12oda7b9ZHG9DXVZReqlJ+xJwSLvpOh2A/5EQpP1jwzSXJwRpx7Rb9iDXpIVapdxNDUU3NWl5rH/96rh+ZV9EwU+qiUo68ac5QDeOr59YNm7c6MPDw37uuefuEbQ0Nis1Li+p2alZrUtjgJEm0Is3syU158zOPt4va82aNXsECvWatI0bN87XGiUFCe3SniZ/GsVP6GlP/u1+N17D1GkNbLO0d/rOwqS0NgYC8RrF/fbbbz4gHh8fb1tb2zh+fHzcFy1aNL+P1fe5+rIam843btzop59+uu+77757NIf2GmDEg+nFixfP1wA3Bkk7d+6cv/hICmyTPsfLQto8aRWAtQpIu9lvWu0vWR5vQ11WUXoJ0r4LPBIFSJP1od18KZar5s4eZV0Y85RXoUkb0GVxkKoHDEUEa/ET4sTEhC9atGg+KIqvR6uaiMamjnozV31Z9SBiw4YN8zUWdVNTU75o0SI/99xz50868d9JCtJa1Qo1pjN+Qo+nsT5vY9+ypBNE/YS4cePGxGCvcTs0Ez9RJgWOrfInabmN69IYrCVNm+aknHZ90uimPLSr9UuqSas3Lddrw7r5vcYLg8ZlxfOiWZ+1drWAaX4/vo7N9pOkR7WkrdHq9hiV5gKqF3mkOUmoyypKL0HaHycN7eZLsdwF1F41dVjsxoHnNUzzpw03DlyTZtmDEqRV5Wqh3YGt3bztahg6bR7o1uzs7HyQ00uNRppAsjEwHBsb87Gxsfkr9GbLSqpxqa97vRkm3tdnZGTEV69evVuNRXxdFy5c6ICPjY3tUbPXLC/TXDw0LiMelHYSXDXWtsSlrQGNb59m/e2aXQy0qvmoTxO/KaLVNkqjPl9jE12ny+2lPHRTA5XniTep3GSRtvr+00k5T+oDGN/WrX4zq+N51kFaFQOeKuo6SMtziO7e/HF0l+e6aNxaYG30vwH/J/r+5mb90RqHQQnSiio8vf5O/CTY6UGom6vdXqZrJ4sajaR12rlz53xn8/j4eLBWDyCa3cEYT1/S3XGN08d/MymQmZ2d9bGxMV+4cOFutWx5XBw01jakOTlOT+95A0HSMuvBaLPlxbdPs+Cz2Tqn2RbtTtzdaPZw3bTL7fcTb7v1S7P+9QuVXmsuyzhGtbtIknSK3G691KQ9AjzcMPyU2qM4ntlu/jKGQQnSWsnywNDrCaXV3WTt5HUl3s1ye50/aTl19ZNuUqfn+jzxOyTj/X3SNO0kiQdDrZqwij7gd7LvtutMX58u7ck2TW1Nq/FpT/5p0t1Ks7tB+/Fk3M06tTtmDVowW5VWl9AUud16CdLGgLcB+wD7RndRngv8BTDTbv4yhryDtF4LbhEFP8tmwF4fD9Dpjp7X9omnI968lva3ei2wrdar/kT7HTt2pF5Oswe3pm1eySLo7DSoKUsRzYBp59cJszPdbK8satKKkraM5vUb0lxVatL2eIAscFX096Z285cx5B2kFXEg71W3V/RJ82URnHRSc9D4e3kcqOJNYWnXLc9gtV3Q2EmNVjdNh93qpRkwREVcgOmE2Zl+315pjgtVK0dVVPZ+1kuQ9kPglOiZaXtF/9eDtBvbzV/GoJq0dJIOAEnjsmjaS/McqGa1OmlrhrpJWy/BY7v16Oa7Ztup24N1J019adOaZrpQ9nGR0HVyzFC5yk/ZAXEvQdozgW8CDwHbo/+fBTw5/gyzkIaq9kkrugB209+o0zSmbVZsVUAaa4byfpZOL4FHXk2iWQTKWfbpEZHiqVzmp+wAOMi7O/MaqhqkVaEA5tW/LOvpeklbL/lQdkHPSjfr0S/rLhKqfihj/bAOeWgWpFntu+bM7AjgImB/d3++mR0FvM7dx1vOWKJly5b51q1by05Gx+bm5piZmWF0dJShoaGyk5MoqzSGvK4hpy1kmzZtYtWqVaxfv56VK1eWnRyRShmU446OE8nM7Dp3X9Y4fq8U836W2tsA5gDcfRtwarbJE4ChoSFWrlwZdAHNKo0zMzOsWrWKmZmZbBKWoSrkQ4hGR0dZv349o6OjZSdlYMzNzbFp0ybm5ubKTor0KORjYpZ0nOhMmiBtobtf0zBuVx6JkcGxfPlyzjrrLJYvX152UiQjCm6LV/UTu4LMxw1K8KLjRGfSBGkPmdnhQO0VAGYnAw/kmirpe1u2bOHCCy9ky5YtZSdFeqCTbLmqfmKvepCZJQUvkiRNn7RnAhcDLwd+CdwNrHL3e3JPXZeq2idtkAxK/4t+p/4l0gsdB0RqmvVJaxukxRYwDOzl7o9knbisKUgTKYZOsiK9UznKRpW3Y7MgbUGLGd7bZDwA7v6JzFInIpVUb6IRke7Vm31VI92bftyOrfqk7RMNy4AzgWdEw1rgyPyTJiIiRVIfw3JUvW9hKPpxOzYN0tx9zN3HgCXA0e5+trufDRwDHFRUAqV7OuCKSCfUkb8cumkgG/24HdPc3XkIMBv7PAsszSU1kikdcEWkE/1YEyGDpd8qJ9IEaV8ErjGz88zsg8DVwBfyTZZkQQdcEelEP9ZESP9KCsj6rXKibZDm7ucDb6X2+I0dwFvdfSLndEkGdMAVEei/2gURSA7I+q1yommQZmZPqf/v7te7+z9Eww1J03TCzC4ws9vNbJuZXWZmi5tMd4+Z3WxmN5qZnqkhItKFqtYuKLiUVpICsjSVE1Xar1rVpH3DzD5uZq+MnpEG1B5ua2Z/aWZXAid2+bubgOe7+1HAj6m9G7SZ4939RUnPDxERkfaqWrtQ1eBSitFta1GV9quWD7M1s9cCbwKWA0+j9pL1O4DLgc+5+3/2nACz1wMnu/ubEr67B1jm7g91skw9zFZEpPqq/HBSSa/ofA5xv2r2MNuWfdLcfcrd3+TuS919X3f/A3d/ubufn0WAFlkDXNEsCcC0mV1nZme0WoiZnWFmW81s6/bt2zNKmoiIlGXQ+tVWqRkuS73WbHW63aq0X6W5u7MrZrbZzG5JGE6KTbMO2AV8qclilrv70cBrgHeY2Sub/Z67X+zuy9x92cjISKbrIiIikrcqNcNlqdfm+H7ebqnf3Zn5D5u9hdrbC17l7r9OMf15wKPu/rF206q5MxshVgmLyODq92NSv61fUevTD9utq+bOHBNzIvB+4HXNAjQzGzazfer/AycAtxSXSunnq5OiDWozhkiW+v2YlNQMV+VjR1H5VaXmy061DdLM7Lh6sBR93sfMXtrj736K2ntBN0WP1/h0tOwDzWwqmmZ/4AdmdhNwDXC5u3+7x9+VDlT1jrAQ9fvJRaQIg3hMqvKxYxDzK2ttmzvN7AZq7+706PNewNaor1iQ1NwpoemH6ngR7cfF0zYfDL00d5rHIjl3fwxYkGXiRPpdP1fHy+Cocq1OVenYMdjSBGl3mdlfm9lQNLwbuCvvhImISFjUfJVdH7Eq9zUr2iBvqzRB2lrg5cD9wH3AS4GWzywTEZH+06+1Op0EAVnVJqpWMr1B3lalPYIjT+qTJiIiaW3atIlVq1axfv16Vq5c2XLarPqIqa9ZellvqxC3fbM+aWluHDgCuAjY392fb2ZHUXt0xng+Se2dgjQREUkrxJO25KeToLwovdw48FlqL0CfA3D3bcCp2SZPRESkHP3ajCvJqtS3Mk2QttDdr2kYtyuPxIiIiKQ1yB3KpXtVCsrTBGkPmdnh1F52jpmdDDyQa6pEREqkk384WuXFIHcol8GQJkh7B/AZ4Llmdj/wHuDMPBMlIlImnfzD0SovqtRsBQr+pXOp7+6M3p+5l7s/km+SeqcbB0SkF+pIHo5+yosiO6z303YbBB3f3Wlm7221QHf/REZpy5yCNBGRwRRycFJk2noNCEPejv2om7s794mGZdSaN58RDWuBI/NIpIhIP8qimUtNZemE3FRdZIf1XpuCQ96Og6RpkObuY+4+Biyh9oL1s939bOAY4KCiEigiUnVZnPB00kynav3U8tJrQKjtGIY0D7O9HXihu/8u+vwk4CZ3f24B6euKmjtFJCRZNB2p+UkkWyGVqV4eZvtF4BozO8/MPghcDXwh6wSKSD7UTFa+LJq5qvRsJ+lMnmVU5b+5KtROtw3S3P184K3AL4EdwFvdfSLndIlIRqpwIJLBoj56u8uzjKr8N1eFJt00NWm4+/Xu/g/RcEPeiRJJq58O1HmpwoEoLeV3ebLc9uqjt7s8y2g/lf+sVaF2OlWQlrWo6fR+M7sxGl7bZLoTzewOM7vTzD5QdDolfP10oM5LFQ5EaSm/y5Plts8icOin4CPPMtpP5X8QpX6YbaY/anYe8Ki7f6zFNE8AfgysBO4DrgXe6O4/ard83TgwOELq+Cn5U36Xp5Ntr3wS6UwvNw6U5VjgTne/y91ngS8DJ5WcJgmMrhIHi/K7PJ1se9V4ShWF2J2izCDtnWa2zcw+b2ZPTfj+GcBPY5/vi8aJiEjA+qkpsl+EGICEJsSLi9yCNDPbbGa3JAwnARcBhwMvAh4APp60iIRxTdtmzewMM9tqZlu3b9+exSqI7EEHOpH2VOMZnhADkNCEeHGRW5Dm7ivc/fkJwzfc/efu/nt3fwz4LLWmzUb3AQfHPh8E/KzF713s7svcfdnIyEi2KyMS0YFOqkwXGYMrxAAkNCFeXJR1d+cBsY+vB25JmOxa4NlmdpiZPRE4FZgsIn0izehA1zsFCuXRRcbgCjEAkfbK6pP2UTO72cy2AccDZwGY2YFmNgXg7ruAdwJXArcBG9z91pLSKwLoQJcFBQrlKeMiQ0G5SPdKeQRH3vQIDpFw6fEMg2XTpk2sWrWK9evXs3LlyrKTIxKkZo/gUJAmIiK5UVAu0l6zIG1BGYkREZHBUO8iICKdC/lhtiIiIiIDS0GaiIiISIAUpImIiIgESEGaiIiISIAUpImIiIgESEGaiIiISIAUpImIiIgESEGaiIiISIAUpImIiIgESEGaiIiISID68t2dZrYduDfl5EuAh3JMjvROeRQ25U/4lEdhU/6ErYj8OdTdRxpH9mWQ1gkz25r0UlMJh/IobMqf8CmPwqb8CVuZ+aPmThEREZEAKUgTERERCZCCNLi47ARIW8qjsCl/wqc8CpvyJ2yl5c/A90kTERERCZFq0kREREQCNLBBmpl9xcxujIZ7zOzG2HfnmNmdZnaHmb26xGQONDN7V5QHt5rZR2PjlT8BMLPzzOz+WDl6bew75VEgzOx9ZuZmtiQ2TvkTADP7sJlti8rPtJkdGPtOeVQyM7vAzG6P8ugyM1sc+66Q/FFzJ2BmHwd+5e4fMrMjgX8FjgUOBDYDR7j778tM46Axs+OBdcCfuvvvzGw/d39Q+RMOMzsPeNTdP9YwXnkUCDM7GPhn4LnAMe7+kPInHGa2r7s/HP3/18CR7r5WeRQGMzsB+K677zKz/wXg7u8vMn8GtiatzswMOIXaBgc4Cfiyu//O3e8G7qSWEVKsM4GPuPvvANz9wWi88id8yqNwXAj8LRC/Glf+BKIeoEWGeTyflEcBcPdpd98VfbwKOCj6v7D8GfggDXgF8HN3//fo8zOAn8a+vy8aJ8U6AniFmV1tZv/PzF4SjVf+hOWdUVPA583sqdE45VEAzOx1wP3uflPDV8qfgJjZ+Wb2U+BNwLnRaOVReNYAV0T/F5Y/C/JYaCjMbDPw9ISv1rn7N6L/38jjtWgAljC92oRz0Cp/qO2bTwWOA14CbDCzZ6L8KVSbPLoI+DC17f9h4OPUDmTKo4K0yZ+/A05Imi1hnPInJ+3OQ+6+DlhnZucA7wQ+iPKoMGniBDNbB+wCvlSfLWH6XPKnr4M0d1/R6nszWwD8d+CY2Oj7gINjnw8CfpZ96qRV/pjZmcBGr3WavMbMHqP2/jTlT4HalaE6M/ss8K3oo/KoIM3yx8xeABwG3FTr0cFBwPVmdizKn0KlLUPApcDl1II05VFBUsQJbwH+DHiVP96Jv7D8GfTmzhXA7e5+X2zcJHCqmT3JzA4Dng1cU0rqBtvXgT8BMLMjgCdSe8Gt8icQZnZA7OPrgVui/5VHJXP3m919P3df6u5LqZ1Ujnb3/0T5Ewwze3bs4+uA26P/lUcBMLMTgfcDr3P3X8e+Kix/+romLYVT2b2pE3e/1cw2AD+iVr35Dt1RU4rPA583s1uAWeAt0VWM8iccHzWzF1Gr5r8HeBuoDIVO+ROUj5jZc4DHgHuBtaA8CsingCcBm6Ia6avcfW2R+aNHcIiIiIgEaNCbO0VERESCpCBNREREJEAK0kREREQCpCBNREREJEAK0kREREQCpCBNRCrPzP63mb0yYfyomX0raZ4ymNl7zex2M7vZzG4ys0+Y2VD03T3R+JvN7EdmNm5mT4rN+20z29G4Pmb25YbnbYlIn1CQJiLBsZpUxyczexpwnLv/W85pekKP86+l9pqm49z9BdRed/Yg8OTYZMdH3x0LPBO4OPbdBcCbExZ9EbWXqItIn1GQJiJBMLOlZnabmf0TcD1wsJldZGZbzexWMxtrMuvJwLdjyzkxqq36AbXXvtXHD0cvgr/WzG4ws5Oi8QvNbEP0ovivmNnVZrYs+u5RM/uQmV0NvMzMVpnZNWZ2o5l9ph64mdkJZvZDM7vezL5qZk9JSOc64Ex33wHg7rPu/hF3f7hxQnd/lNqDTf9bFITi7t8BHklY7veBFdFr7kSkjyhIE5GQPAf4F3d/sbvfS+0lx8uAo4A/NrOjEuZZDlwHYGZ7A58F/hx4Bbu/OHkd8F13fwlwPHCBmQ0Dbwd+6e5HUXtRfPxdvsPALe7+UuAXwF8Ay939RcDvgTeZ2RLgfwIr3P1oYCvw3ngCzWwf4CnufnfaDREFb3dTe+VMq+keA+4EXph22SJSDQrSRCQk97r7VbHPp5jZ9cANwPOAIxPmOQDYHv3/XOBud//36DVi62PTnQB8wMxuBGaAvYFDgD8Cvgzg7rcA22Lz/B74WvT/q6gFcNdGy3gVtSbJ46J0bYnGvwU4tCGNRu31WbUPZq+OauPuMbOXt9ge1uK7uAeBA1NOKyIVoepxEQnJzvo/0YuL3we8xN1/aWaXUAusGv2mYXyzd90Z8AZ3v2O3kdFL+Zr4beydfAZ8wd3PaZj/z4FN7v7GZgtx94fNbKeZHebud7v7lcCV0U0AT0xMbK32bSnw4xbpq9ub2nYQkT6imjQRCdW+1IK2X5nZ/sBrmkx3G/Cs6P/bgcPM7PDoczxwuhJ4Vz0oM7MXR+N/AJwSjTsSeEGT3/kOcLKZ7RdN+zQzOxS4ClhuZs+Kxi80syMS5p8ALjKzxdF0RnLQSdSn7Z+Ar7v7L5ukJ+4I4NYU04lIhShIE5EguftN1Jo5bwU+D2xpMunlwGg0z2+BM4DLoxsH7o1N92FgCNhmZrdEn6EWDI2Y2Tbg/dSaO3+VkJ4fUet7Nh1Nuwk4wN23A6uBf43GX0Wt2bXRRcBm4Opoui3R+t0Qm+Z7UdquAf4DeFv9CzP7PvBV4FVmdp+ZvToavz/wG3d/oMn2EZGKslq3DRGR6ooCsj+r3znZ4bxPAIbc/bdRDdx3gCPcfTbjZObCzM4CHnb3z5WdFhHJlvqkiUg/OJvaTQA7uph3IbUarCFq/c7OrEqAFtkBfLHsRIhI9lSTJiIiIhIg9UkTERERCZCCNBEREZEAKUgTERERCZCCNBEREZEAKUgTERERCZCCNBEREZEA/X+VQj/VxCID1QAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10,2.5))\n", + "\n", + "x = selected['phi1']\n", + "y = selected['phi2']\n", + "\n", + "plt.plot(x, y, 'ko', markersize=0.7, alpha=0.9)\n", + "\n", + "plt.xlabel('ra (degree GD1)')\n", + "plt.ylabel('dec (degree GD1)')\n", + "\n", + "plt.axis('equal');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This example includes two new Matplotlib commands:\n", + "\n", + "* `figure` creates the figure. In previous examples, we didn't have to use this function; the figure was created automatically. But when we call it explicitly, we can provide arguments like `figsize`, which sets the size of the figure.\n", + "\n", + "* `axis` with the parameter `equal` sets up the axes so a unit is the same size along the `x` and `y` axes.\n", + "\n", + "In an example like this, where `x` and `y` represent coordinates in space, equal axes ensures that the distance between points is represented accurately. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Write the data\n", + "\n", + "Let's write the merged DataFrame to a file." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "filename = 'gd1_merged.hdf5'\n", + "\n", + "merged.to_hdf(filename, 'merged')\n", + "selected.to_hdf(filename, 'selected')" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-rw-rw-r-- 1 downey downey 2.0M Oct 19 17:21 gd1_merged.hdf5\r\n" + ] + } + ], + "source": [ + "!ls -lh gd1_merged.hdf5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you are using Windows, `ls` might not work; in that case, try:\n", + "\n", + "```\n", + "!dir gd1_merged.hdf5\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Save the polygon\n", + "\n", + "[Reproducibile research](https://en.wikipedia.org/wiki/Reproducibility#Reproducible_research) is \"the idea that ... the full computational environment used to produce the results in the paper such as the code, data, etc. can be used to reproduce the results and create new work based on the research.\"\n", + "\n", + "This Jupyter notebook is an example of reproducible research because it contains all of the code needed to reproduce the results, including the database queries that download the data and and analysis.\n", + "\n", + "However, when we used `ginput` to define a polygon by hand, we introduced a non-reproducible element to the analysis. If someone running this notebook chooses a different polygon, they will get different results. So it is important to record the polygon we chose as part of the data analysis pipeline.\n", + "\n", + "Since `coords` is a NumPy array, we can't use `to_hdf` to save it in a file. But we can convert it to a Pandas `DataFrame` and save that.\n", + "\n", + "As an alternative, we could use [PyTables](http://www.pytables.org/index.html), which is the library Pandas uses to read and write files. It is a powerful library, but not easy to use directly. So let's take advantage of Pandas." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "coords_df = pd.DataFrame(coords)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "filename = 'gd1_polygon.hdf5'\n", + "coords_df.to_hdf(filename, 'coords_df')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can read it back like this." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "coords2_df = pd.read_hdf(filename, 'coords_df')\n", + "coords2 = coords2_df.to_numpy()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And verify that the data we read back is the same." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.all(coords2 == coords)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "In this notebook, we worked with two datasets: the list of candidate stars from Gaia and the photometry data from Pan-STARRS.\n", + "\n", + "We drew a color-magnitude diagram and used it to identify stars we think are likely to be in GD-1.\n", + "\n", + "Then we used a Pandas `merge` operation to combine the data into a single `DataFrame`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Best practices\n", + "\n", + "* If you want to perform something like a database `JOIN` operation with data that is in a Pandas `DataFrame`, you can use the `join` or `merge` function. In many cases, `merge` is easier to use because the arguments are more like SQL.\n", + "\n", + "* Use Matplotlib options to control the size and aspect ratio of figures to make them easier to interpret. In this example, we scaled the axes so the size of a degree is equal along both axes.\n", + "\n", + "* Matplotlib also provides operations for working with points, polygons, and other geometric entities, so it's not just for making figures.\n", + "\n", + "* Be sure to record every element of the data analysis pipeline that would be needed to replicate the results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/_sources/07_plot.ipynb b/_sources/07_plot.ipynb new file mode 100644 index 0000000..77778eb --- /dev/null +++ b/_sources/07_plot.ipynb @@ -0,0 +1,1174 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 7\n", + "\n", + "This is the seventh in a series of notebooks related to astronomy data.\n", + "\n", + "As a continuing example, we will replicate part of the analysis in a recent paper, \"[Off the beaten path: Gaia reveals GD-1 stars outside of the main stream](https://arxiv.org/abs/1805.00425)\" by Adrian M. Price-Whelan and Ana Bonaca.\n", + "\n", + "In the previous notebook we selected photometry data from Pan-STARRS and used it to identify stars we think are likely to be in GD-1\n", + "\n", + "In this notebook, we'll take the results from previous lessons and use them to make a figure that tells a compelling scientific story." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Outline\n", + "\n", + "Here are the steps in this notebook:\n", + "\n", + "1. Starting with the figure from the previous notebook, we'll add annotations to present the results more clearly.\n", + "\n", + "2. The we'll see several ways to customize figures to make them more appealing and effective.\n", + "\n", + "3. Finally, we'll see how to make a figure with multiple panels or subplots.\n", + "\n", + "After completing this lesson, you should be able to\n", + "\n", + "* Design a figure that tells a compelling story.\n", + "\n", + "* Use Matplotlib features to customize the appearance of figures.\n", + "\n", + "* Generate a figure with multiple subplots." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing libraries\n", + "\n", + "If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we'll use.\n", + "\n", + "If you are running this notebook on your own computer, you might have to install these libraries yourself. \n", + "\n", + "If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.\n", + "\n", + "TODO: Add a link to the instructions." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# If we're running on Colab, install libraries\n", + "\n", + "import sys\n", + "IN_COLAB = 'google.colab' in sys.modules\n", + "\n", + "if IN_COLAB:\n", + " !pip install astroquery astro-gala pyia python-wget" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Making Figures That Tell a Story\n", + "\n", + "So far the figure we've made have been \"quick and dirty\". Mostly we have used Matplotlib's default style, although we have adjusted a few parameters, like `markersize` and `alpha`, to improve legibility.\n", + "\n", + "Now that the analysis is done, it's time to think more about:\n", + "\n", + "1. Making professional-looking figures that are ready for publication, and\n", + "\n", + "2. Making figures that communicate a scientific result clearly and compellingly.\n", + "\n", + "Not necessarily in that order." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start by reviewing Figure 1 from the original paper. We've seen the individual panels, but now let's look at the whole thing, along with the caption:\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Think about the following questions:\n", + "\n", + "1. What is the primary scientific result of this work?\n", + "\n", + "2. What story is this figure telling?\n", + "\n", + "3. In the design of this figure, can you identify 1-2 choices the authors made that you think are effective? Think about big-picture elements, like the number of panels and how they are arranged, as well as details like the choice of typeface.\n", + "\n", + "4. Can you identify 1-2 elements that could be improved, or that you might have done differently?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Some topics that might come up in this discussion:\n", + "\n", + "1. The primary result is that the multiple stages of selection make it possible to separate likely candidates from the background more effectively than in previous work, which makes it possible to see the structure of GD-1 in \"unprecedented detail\".\n", + "\n", + "2. The figure documents the selection process as a sequence of steps. Reading right-to-left, top-to-bottom, we see selection based on proper motion, the results of the first selection, selection based on color and magnitude, and the results of the second selection. So this figure documents the methodology and presents the primary result.\n", + "\n", + "3. It's mostly black and white, with minimal use of color, so it will work well in print. The annotations in the bottom left panel guide the reader to the most important results. It contains enough technical detail for a professional audience, but most of it is also comprehensible to a more general audience. The two left panels have the same dimensions and their axes are aligned.\n", + "\n", + "4. Since the panels represent a sequence, it might be better to arrange them left-to-right. The placement and size of the axis labels could be tweaked. The entire figure could be a little bigger to match the width and proportion of the caption. The top left panel has unnused white space (but that leaves space for the annotations in the bottom left)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plotting GD-1\n", + "\n", + "Let's start with the panel in the lower left. The following cell reloads the data." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from wget import download\n", + "\n", + "filename = 'gd1_merged.hdf5'\n", + "path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'\n", + "\n", + "if not os.path.exists(filename):\n", + " print(download(path+filename))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "selected = pd.read_hdf(filename, 'selected')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def plot_second_selection(df):\n", + " x = df['phi1']\n", + " y = df['phi2']\n", + "\n", + " plt.plot(x, y, 'ko', markersize=0.7, alpha=0.9)\n", + "\n", + " plt.xlabel('$\\phi_1$ [deg]')\n", + " plt.ylabel('$\\phi_2$ [deg]')\n", + " plt.title('Proper motion + photometry selection', fontsize='medium')\n", + "\n", + " plt.axis('equal')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's what it looks like." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10,2.5))\n", + "plot_second_selection(selected)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Annotations\n", + "\n", + "The figure in the paper uses three other features to present the results more clearly and compellingly:\n", + "\n", + "* A vertical dashed line to distinguish the previously undetected region of GD-1,\n", + "\n", + "* A label that identifies the new region, and\n", + "\n", + "* Several annotations that combine text and arrows to identify features of GD-1.\n", + "\n", + "As an exercise, choose any or all of these features and add them to the figure:\n", + "\n", + "* To draw vertical lines, see [`plt.vlines`](https://matplotlib.org/3.3.1/api/_as_gen/matplotlib.pyplot.vlines.html) and [`plt.axvline`](https://matplotlib.org/3.3.1/api/_as_gen/matplotlib.pyplot.axvline.html#matplotlib.pyplot.axvline).\n", + "\n", + "* To add text, see [`plt.text`](https://matplotlib.org/3.3.1/api/_as_gen/matplotlib.pyplot.text.html).\n", + "\n", + "* To add an annotation with text and an arrow, see [plt.annotate]().\n", + "\n", + "And here is some [additional information about text and arrows](https://matplotlib.org/3.3.1/tutorials/text/annotations.html#plotting-guide-annotation)." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "# plt.axvline(-55, ls='--', color='gray', \n", + "# alpha=0.4, dashes=(6,4), lw=2)\n", + "# plt.text(-60, 5.5, 'Previously\\nundetected', \n", + "# fontsize='small', ha='right', va='top');\n", + "\n", + "# arrowprops=dict(color='gray', shrink=0.05, width=1.5, \n", + "# headwidth=6, headlength=8, alpha=0.4)\n", + "\n", + "# plt.annotate('Spur', xy=(-33, 2), xytext=(-35, 5.5),\n", + "# arrowprops=arrowprops,\n", + "# fontsize='small')\n", + "\n", + "# plt.annotate('Gap', xy=(-22, -1), xytext=(-25, -5.5),\n", + "# arrowprops=arrowprops,\n", + "# fontsize='small')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Customization\n", + "\n", + "Matplotlib provides a default style that determines things like the colors of lines, the placement of labels and ticks on the axes, and many other properties.\n", + "\n", + "There are several ways to override these defaults and customize your figures:\n", + "\n", + "* To customize only the current figure, you can call functions like `tick_params`, which we'll demonstrate below.\n", + "\n", + "* To customize all figures in a notebook, you use `rcParams`.\n", + "\n", + "* To override more than a few defaults at the same time, you can use a style sheet." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As a simple example, notice that Matplotlib puts ticks on the outside of the figures by default, and only on the left and bottom sides of the axes.\n", + "\n", + "To change this behavior, you can use `gca()` to get the current axes and `tick_params` to change the settings.\n", + "\n", + "Here's how you can put the ticks on the inside of the figure:\n", + "\n", + "```\n", + "plt.gca().tick_params(direction='in')\n", + "```\n", + "\n", + "**Exercise:** Read the documentation of [`tick_params`](https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.axes.Axes.tick_params.html) and use it to put ticks on the top and right sides of the axes." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "# plt.gca().tick_params(top=True, right=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## rcParams\n", + "\n", + "If you want to make a customization that applies to all figures in a notebook, you can use `rcParams`.\n", + "\n", + "Here's an example that reads the current font size from `rcParams`:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10.0" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plt.rcParams['font.size']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And sets it to a new value:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "plt.rcParams['font.size'] = 14" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Plot the previous figure again, and see what font sizes have changed. Look up any other element of `rcParams`, change its value, and check the effect on the figure." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you find yourself making the same customizations in several notebooks, you can put changes to `rcParams` in a `matplotlibrc` file, [which you can read about here](https://matplotlib.org/3.3.1/tutorials/introductory/customizing.html#customizing-with-matplotlibrc-files)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Style sheets\n", + "\n", + "The `matplotlibrc` file is read when you import Matplotlib, so it is not easy to switch from one set of options to another.\n", + "\n", + "The solution to this problem is style sheets, [which you can read about here](https://matplotlib.org/3.1.1/tutorials/introductory/customizing.html).\n", + "\n", + "Matplotlib provides a set of predefined style sheets, or you can make your own.\n", + "\n", + "The following cell displays a list of style sheets installed on your system." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Solarize_Light2',\n", + " '_classic_test_patch',\n", + " 'bmh',\n", + " 'classic',\n", + " 'dark_background',\n", + " 'fast',\n", + " 'fivethirtyeight',\n", + " 'ggplot',\n", + " 'grayscale',\n", + " 'seaborn',\n", + " 'seaborn-bright',\n", + " 'seaborn-colorblind',\n", + " 'seaborn-dark',\n", + " 'seaborn-dark-palette',\n", + " 'seaborn-darkgrid',\n", + " 'seaborn-deep',\n", + " 'seaborn-muted',\n", + " 'seaborn-notebook',\n", + " 'seaborn-paper',\n", + " 'seaborn-pastel',\n", + " 'seaborn-poster',\n", + " 'seaborn-talk',\n", + " 'seaborn-ticks',\n", + " 'seaborn-white',\n", + " 'seaborn-whitegrid',\n", + " 'tableau-colorblind10']" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plt.style.available" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that `seaborn-paper`, `seaborn-talk` and `seaborn-poster` are particularly intended to prepare versions of a figure with text sizes and other features that work well in papers, talks, and posters.\n", + "\n", + "To use any of these style sheets, run `plt.style.use` like this:\n", + "\n", + "```\n", + "plt.style.use('fivethirtyeight')\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The style sheet you choose will affect the appearance of all figures you plot after calling `use`, unless you override any of the options or call `use` again.\n", + "\n", + "**Exercise:** Choose one of the styles on the list and select it by calling `use`. Then go back and plot one of the figures above and see what effect it has." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you can't find a style sheet that's exactly what you want, you can make your own. This repository includes a style sheet called `az-paper-twocol.mplstyle`, with customizations chosen by Azalee Bostroem for publication in astronomy journals.\n", + "\n", + "The following cell downloads the style sheet." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "filename = 'az-paper-twocol.mplstyle'\n", + "path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'\n", + "\n", + "if not os.path.exists(filename):\n", + " print(download(path+filename))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can use it like this:\n", + "\n", + "```\n", + "plt.style.use('./az-paper-twocol.mplstyle')\n", + "```\n", + "\n", + "The prefix `./` tells Matplotlib to look for the file in the current directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As an alternative, you can install a style sheet for your own use by putting it in your configuration directory. To find out where that is, you can run the following command:\n", + "\n", + "```\n", + "import matplotlib as mpl\n", + "\n", + "mpl.get_configdir()\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## LaTeX fonts\n", + "\n", + "When you include mathematical expressions in titles, labels, and annotations, Matplotlib uses [`mathtext`](https://matplotlib.org/3.1.0/tutorials/text/mathtext.html) to typeset them. `mathtext` uses the same syntax as LaTeX, but it provides only a subset of its features.\n", + "\n", + "If you need features that are not provided by `mathtext`, or you prefer the way LaTeX typesets mathematical expressions, you can customize Matplotlib to use LaTeX.\n", + "\n", + "In `matplotlibrc` or in a style sheet, you can add the following line:\n", + "\n", + "```\n", + "text.usetex : true\n", + "```\n", + "\n", + "Or in a notebook you can run the following code.\n", + "\n", + "```\n", + "plt.rcParams['text.usetex'] = True\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "plt.rcParams['text.usetex'] = True" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you go back and draw the figure again, you should see the difference.\n", + "\n", + "If you get an error message like\n", + "\n", + "```\n", + "LaTeX Error: File `type1cm.sty' not found.\n", + "```\n", + "\n", + "You might have to install a package that contains the fonts LaTeX needs. On some systems, the packages `texlive-latex-extra` or `cm-super` might be what you need. [See here for more help with this](https://stackoverflow.com/questions/11354149/python-unable-to-render-tex-in-matplotlib).\n", + "\n", + "In case you are curious, `cm` stands for [Computer Modern](https://en.wikipedia.org/wiki/Computer_Modern), the font LaTeX uses to typeset math." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Multiple panels\n", + "\n", + "So far we've been working with one figure at a time, but the figure we are replicating contains multiple panels, also known as \"subplots\".\n", + "\n", + "Confusingly, Matplotlib provides *three* functions for making figures like this: `subplot`, `subplots`, and `subplot2grid`.\n", + "\n", + "* [`subplot`](https://matplotlib.org/3.3.1/api/_as_gen/matplotlib.pyplot.subplot.html) is simple and similar to MATLAB, so if you are familiar with that interface, you might like `subplot`\n", + "\n", + "* [`subplots`](https://matplotlib.org/3.3.1/api/_as_gen/matplotlib.pyplot.subplots.html) is more object-oriented, which some people prefer.\n", + "\n", + "* [`subplot2grid`](https://matplotlib.org/3.3.1/api/_as_gen/matplotlib.pyplot.subplot2grid.html) is most convenient if you want to control the relative sizes of the subplots. \n", + "\n", + "So we'll use `subplot2grid`.\n", + "\n", + "All of these functions are easier to use if we put the code that generates each panel in a function." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Upper right\n", + "\n", + "To make the panel in the upper right, we have to reload `centerline`." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "filename = 'gd1_dataframe.hdf5'\n", + "path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'\n", + "\n", + "if not os.path.exists(filename):\n", + " print(download(path+filename))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "centerline = pd.read_hdf(filename, 'centerline')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And define the coordinates of the rectangle we selected." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "pm1_min = -8.9\n", + "pm1_max = -6.9\n", + "pm2_min = -2.2\n", + "pm2_max = 1.0\n", + "\n", + "pm1_rect = [pm1_min, pm1_min, pm1_max, pm1_max]\n", + "pm2_rect = [pm2_min, pm2_max, pm2_max, pm2_min]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To plot this rectangle, we'll use a feature we have not seen before: `Polygon`, which is provided by Matplotlib.\n", + "\n", + "To create a `Polygon`, we have to put the coordinates in an array with `x` values in the first column and `y` values in the second column. " + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-8.9, -2.2],\n", + " [-8.9, 1. ],\n", + " [-6.9, 1. ],\n", + " [-6.9, -2.2]])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "\n", + "vertices = np.transpose([pm1_rect, pm2_rect])\n", + "vertices" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following function takes a `DataFrame` as a parameter, plots the proper motion for each star, and adds a shaded `Polygon` to show the region we selected." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "from matplotlib.patches import Polygon\n", + "\n", + "def plot_proper_motion(df):\n", + " pm1 = df['pm_phi1']\n", + " pm2 = df['pm_phi2']\n", + "\n", + " plt.plot(pm1, pm2, 'ko', markersize=0.3, alpha=0.3)\n", + " \n", + " poly = Polygon(vertices, closed=True, \n", + " facecolor='C1', alpha=0.4)\n", + " plt.gca().add_patch(poly)\n", + " \n", + " plt.xlabel('$\\mu_{\\phi_1} [\\mathrm{mas~yr}^{-1}]$')\n", + " plt.ylabel('$\\mu_{\\phi_2} [\\mathrm{mas~yr}^{-1}]$')\n", + "\n", + " plt.xlim(-12, 8)\n", + " plt.ylim(-10, 10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that `add_patch` is like `invert_yaxis`; in order to call it, we have to use `gca` to get the current axes.\n", + "\n", + "Here's what the new version of the figure looks like. We've changed the labels on the axes to be consistent with the paper." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.rcParams['text.usetex'] = False\n", + "plt.style.use('default')\n", + "\n", + "plot_proper_motion(centerline)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Upper left\n", + "\n", + "Now let's work on the panel in the upper left. We have to reload `candidates`." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "filename = 'gd1_candidates.hdf5'\n", + "path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'\n", + "\n", + "if not os.path.exists(filename):\n", + " print(download(path+filename))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "filename = 'gd1_candidates.hdf5'\n", + "\n", + "candidate_df = pd.read_hdf(filename, 'candidate_df')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's a function that takes a `DataFrame` of candidate stars and plots their positions in GD-1 coordindates. " + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "def plot_first_selection(df):\n", + " x = df['phi1']\n", + " y = df['phi2']\n", + "\n", + " plt.plot(x, y, 'ko', markersize=0.3, alpha=0.3)\n", + "\n", + " plt.xlabel('$\\phi_1$ [deg]')\n", + " plt.ylabel('$\\phi_2$ [deg]')\n", + " plt.title('Proper motion selection', fontsize='medium')\n", + "\n", + " plt.axis('equal')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's what it looks like." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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ii984Qu44YYb4PP58A//8A946qmnJqvIhBBCCJlieCzLsia7EFOZnp4epKSkoLu7m5okQggh5DIh0vV7Sp0aI4QQQgiZSCgIEUIIISRqoSBECCGEkKiFghAhhBBCohYKQoQQQgiJWigIEUIIISRqoSBECCGEkKiFghAhhBBCohYKQoQQQgiJWigIEUIIISRqoSBECCGEkKiFghAhhBBCohYKQoQQQgiJWigIEUIIISRqoSBECCGEkKiFghAhhBBCohYKQoQQQgiJWigIEUIIISRqoSBECCGEkKiFghAhhBBCohYKQoQQQgiJWigIEUIIISRqoSBECCGEkKiFghAhhBBCohYKQoQQQgiJWigIEUIIISRqoSBECCGEkKiFghAhhBBCohYKQoQQQgiJWigIEUIIISRqoSBECCGEkKiFghAhhBBCohYKQoQQQgiJWigIEUIIISRquWwFoW3btuH6669HQkICUlNTHa/xeDwhfz/84Q8ntqCEEEIImbLETnYBLpRAIID169ejrKwML7zwgut1O3bswG233ab+nZKSMhHFI4QQQshlwGUrCH3zm98EAPz4xz8Oe11qaiqys7MnoESEEEIIudy4bE1jkbJ161ZkZGTgmmuuwQ9/+EOMjIyEvX5oaAg9PT22P0IIIYRcmVy2GqFI+Na3voVbbrkFPp8Pf/jDH3Dffffh1KlTePjhh11/8/jjjyttEyGEEEKubKaURujRRx91dHDW/yorKyO+38MPP4yysjIUFxfjvvvuw2OPPYYnn3wy7G8eeughdHd3q7+mpqaLrRYhhBBCpihTSiO0detWbNiwIew18+bNu+D7X3fddejp6cGHH36IWbNmOV4THx+P+Pj4C34GIYQQQi4fppQglJGRgYyMjEt2/+rqakyfPt31uD0hhBBCoospJQidD42Njejs7ERjYyOCwSBqamoAAEVFRUhKSsJvf/tb+P1+lJWVwefzoaKiAl//+tfxj//4j9T4EEIIIQTAZSwIfeMb38BLL72k/l1SUgIAqKiowJo1azBt2jR8//vfx5e//GWMjIygsLAQjz32GP7pn/5psopMCCGEkCmGx7Isa7ILMZXp6elBSkoKuru7MWPGjMkuDiGEEEIiINL1e0qdGiOEEEIImUgoCBFCCCEkaqEgRAghhJCohYIQIYQQQqIWCkKEEEIIiVooCBFCCCEk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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_first_selection(candidate_df)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lower right\n", + "\n", + "For the figure in the lower right, we need to reload the merged `DataFrame`, which contains data from Gaia and photometry data from Pan-STARRS." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "filename = 'gd1_merged.hdf5'\n", + "\n", + "merged = pd.read_hdf(filename, 'merged')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the previous notebook, here's the function that plots the color-magnitude diagram." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def plot_cmd(table):\n", + " \"\"\"Plot a color magnitude diagram.\n", + " \n", + " table: Table or DataFrame with photometry data\n", + " \"\"\"\n", + " y = table['g_mean_psf_mag']\n", + " x = table['g_mean_psf_mag'] - table['i_mean_psf_mag']\n", + "\n", + " plt.plot(x, y, 'ko', markersize=0.3, alpha=0.3)\n", + "\n", + " plt.xlim([0, 1.5])\n", + " plt.ylim([14, 22])\n", + " plt.gca().invert_yaxis()\n", + "\n", + " plt.ylabel('$g_0$')\n", + " plt.xlabel('$(g-i)_0$')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's what it looks like." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_cmd(merged)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Add a few lines to `plot_cmd` to show the Polygon we selected as a shaded area. \n", + "\n", + "Run these cells to get the polygon coordinates we saved in the previous notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "filename = 'gd1_polygon.hdf5'\n", + "path = 'https://github.com/AllenDowney/AstronomicalData/raw/main/data/'\n", + "\n", + "if not os.path.exists(filename):\n", + " print(download(path+filename))" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.21505376, 17.5481972 ],\n", + " [ 0.38978495, 18.94628403],\n", + " [ 0.53763441, 19.90286976],\n", + " [ 0.70340502, 20.60191317],\n", + " [ 0.82885305, 21.30095659],\n", + " [ 0.66308244, 21.52170714],\n", + " [ 0.43010753, 20.78587196],\n", + " [ 0.27329749, 19.71891096],\n", + " [ 0.17473118, 18.68874172],\n", + " [ 0.17473118, 17.95290655]])" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coords_df = pd.read_hdf(filename, 'coords_df')\n", + "coords = coords_df.to_numpy()\n", + "coords" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "#poly = Polygon(coords, closed=True, \n", + "# facecolor='C1', alpha=0.4)\n", + "#plt.gca().add_patch(poly)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Subplots\n", + "\n", + "Now we're ready to put it all together. To make a figure with four subplots, we'll use `subplot2grid`, [which requires two arguments](https://matplotlib.org/3.3.1/api/_as_gen/matplotlib.pyplot.subplot2grid.html):\n", + "\n", + "* `shape`, which is a tuple with the number of rows and columns in the grid, and\n", + "\n", + "* `loc`, which is a tuple identifying the location in the grid we're about to fill.\n", + "\n", + "In this example, `shape` is `(2, 2)` to create two rows and two columns.\n", + "\n", + "For the first panel, `loc` is `(0, 0)`, which indicates row 0 and column 0, which is the upper-left panel.\n", + "\n", + "Here's how we use it to draw the four panels." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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TU147rnn8O9///u0xnXHHXego6MDP/7xj9HQ0ID/+7//w0MPPYR7770XYWGnvg7Jyck4dOgQTpw4gZ6eHvj9/mltdyb86Ec/gsPhwDe/+U0cPnwYra2t2L59O7773e9S4ybUeCYjMzMTl112GX7+85/jm9/8JqRS6YTrfvzxx/jf//1fVFZWor29Ha+//jr8fj8WLFgAhUKB++67D/fccw9ee+01HD9+HCaTCc899xxee+21kPv7+c9/jgMHDuBHP/oRKisr0dzcjA8//BA//vGP6bnceuut+O53v4sPPvgAbW1t2LVrF9555x0Apwx9gUCAjz/+GN3d3XC5XOOOkZ6ejuuuuw6bN2/Gvn37UFVVhW9961swGo247rrrpjXvDAaDMWeZlcy+c0ioqlg+wYUChPb2du7aa6/lIiMjOYVCwd14442czWYbt93zzz/PxcXFcREREdzGjRs5h8MRsJ9//vOfXEFBAScWizm1Ws2tWLGCe++99ziO+2/RgclkmvI8EFTkEGrbUInmzz//PJeamsqFh4dz8+fP515//fWA/X744YdcWloaJxKJuKSkpJBz4vP5uEceeYQzGo1ceHg4l5+fT4sPJhpLX18fB4ArKyub8tz453i6xROPPPII9/Wvf52TyWRcbGzsuEKU4HnjOI5TqVTcli1b6N+7du3iFi1axInFYk6v13M///nPA6p5Gxsbucsuu4yTSqUBY5xqu1BFDklJSdxTTz016Ribmpq466+/nouKiuKkUimXkZHB3X333bRQI9R4JioyILz88ssBxT8TsXfvXm7lypWcWq3mpFIpl5eXx7399tv0c7/fzz3zzDPcggULuPDwcE6r1XLr16/ndu/ezXFc6Hvw8OHD3Nq1azm5XM5FRkZyeXl5AcU4brebu+eeeziDwcCJxWIuLS2Ne+WVV+jnjz76KKfX6zmBQMDdeuutIefW4XBwmzZt4lQqFSeVSrn169fTqm2OO1U8oVKpAs71/fff5+bgTx6DwWAEIOA4lnQyHR5++GF88MEHqKysnO2hXLIkJyfj7rvvvmS6MJwNjz32GN566y3U1NTM9lAYDAaDcR5hoVgGYw7hcrlw5MgRPPvssyELGBgMBoMxt2GGHYMxh7jzzjuxfPlyrFy5Et/97ndnezgMBoPBOM+wUCyDwWAwGAzGHIF57BgMBuMCY8+ePbjm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61vfwu9///sJXaOrqwvxeDzN7aHVarF48WL6+6FDhzA0NISrrroKKpWK/vz+979HV1cXuru7MTw8jBUrVtBzNBpN2hgMBoORD9FoFIWFhfT3EydOYPv27Xj00UfTjpPL5YKJZI899hjNvs/1k8vb0d7enjWmQqEAAEQiESQSCTzwwAN49913sW/fPvzsZz9DIBCY7C0zZogzG2XOYADYtWsXUqkUGhoa0NnZiWg0ioaGBpw8eRK9vb249NJLAQBr1qzB9u3bJ3QNjuPGPCaVSgEA3nrrLZjN5rR9crkcfr8fACASicY9NoPBYPApKytDX18f/X3//v2QyWSoq6tLO+7w4cO4/fbbs86/77778IUvfGHUa+TKtt2/fz+uu+66tG1EuOn1euzZswd1dXX038Grr74a77zzDv75n/95zPtizD6YsGOcceLxOABgaGgI7e3tqKiogE6nw7PPPoulS5eioaFh0teoqalBQUEBdu3aBYvFAgDo6+vD0aNHcfnllwMAli5dCrlcDofDQbfxKSkpQUFBAfbs2YP58+cDAAYGBnDs2DHB4xkMBiMXjY2NeOWVV+jvEokEiUQCQ0ND1JL33nvvCbpNgRFhWFZWNu7rDgwM4MSJE1ljHjx4EBUVFSgrK8P27dvT/ritqKiAy+Ua97UYswMm7BhnnIsvvhhSqRSPP/44wuEwzjvvPDz33HN49tlnsW3btim5hkqlwle/+lV897vfhU6nQ3l5Ob73ve9BLP4k+kCtVuPf/u3f8O1vfxupVAqXXXYZBgYGsHPnTqhUKtx+++24/fbb8d3vfhdarRYGgwE//OEPIRaLs6x4DAaDMRrNzc14+OGH0dfXh9LSUixfvhwFBQX47ne/i29/+9s4dOgQzbafij9uCfv374dEIsmyDL7//vtYt24dAGEvBPs3bu7ChB3jjGOxWPDSSy/h3//93+F2uyGVShGJRPD222+nxbNNlp///OcIh8O47rrroFar8Z3vfAfBYDDtmP/3//4fDAYDnnjiCXR3d6OkpAQXXHABHnnkEQDAM888g3vuuQef+cxnUFxcjAcffBAnT55Mi5VhMBiMsaivr0dTUxP+93//F3fffTdMJhNeeuklPPTQQ3j55Zexbt06/Mu//At++9vfQqvVTtl19+/fj9raWsjlcrptaGgImzZtwjvvvANgJJGCb6FzOp246KKLpmwOjDMMx2DMIKWlpdymTZty7t+2bRv3uc99bsxxLr/8cu5f//Vfp25iOQiHw5xGo+FeeOGFrH0ARr0XBoNxbvPWW29xS5Ys4ZLJZNa+ZDLJrVq1inv44YenfR6//OUvuauuuor+Pjw8zNXU1HBOp5MbGBjgampquN7e3mmfB2N6YBY7xozhdDrR19eH+vp6wf3Nzc3Yt28fBgcHUVFRgU2bNuHCCy/MOd5zzz2HF154AR999FHOMcdLW1sbOjs7sWLFCgSDQTz++OMAgOuvv54ec88996TFzjAYDIYQV199NY4dOwaXy4Wenh74fD40Njait7cXP//5z3HixAls2rRp2udRUFCAX/ziF/R3qVSKp59+GmvWrEEqlcKDDz4InU437fNgTA8ijmMpfoyZ4W9/+xtuvvlmhEKhScdzuFwuRKNRACOu3qmqAdXW1oavfe1rOHLkCGQyGZYvX45nnnkmTTh6vV7ac9FkMtG2PQwGg5GLjRs34qGHHoLL5UJ5eTnWrl2L9evXo7y8fKanxpjjMGHHYDAYDAaDcZbAChQzGAwGg8FgnCUwYcdgMBgMBoNxlsCEHYPBYDAYDMZZAhN2DAaDwWAwGGcJTNgxGAwGg8FgnCUwYcdgMBgMBoNxlsCEHYPBYDAYDMZZAhN2DAaDwWAwGGcJTNgxGAwGg8FgnCUwYcdgMBgMBoNxlvD/A8CcBOTPOA/kAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "shape = (2, 2)\n", + "plt.subplot2grid(shape, (0, 0))\n", + "plot_first_selection(candidate_df)\n", + "\n", + "plt.subplot2grid(shape, (0, 1))\n", + "plot_proper_motion(centerline)\n", + "\n", + "plt.subplot2grid(shape, (1, 0))\n", + "plot_second_selection(selected)\n", + "\n", + "plt.subplot2grid(shape, (1, 1))\n", + "plot_cmd(merged)\n", + "poly = Polygon(coords, closed=True, \n", + " facecolor='C1', alpha=0.4)\n", + "plt.gca().add_patch(poly)\n", + "\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We use [`plt.tight_layout`](https://matplotlib.org/3.3.1/tutorials/intermediate/tight_layout_guide.html) at the end, which adjusts the sizes of the panels to make sure the titles and axis labels don't overlap.\n", + "\n", + "**Exercise:** See what happens if you leave out `tight_layout`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adjusting proportions\n", + "\n", + "In the previous figure, the panels are all the same size. To get a better view of GD-1, we'd like to stretch the panels on the left and compress the ones on the right.\n", + "\n", + "To do that, we'll use the `colspan` argument to make a panel that spans multiple columns in the grid.\n", + "\n", + "In the following example, `shape` is `(2, 4)`, which means 2 rows and 4 columns.\n", + "\n", + "The panels on the left span three columns, so they are three times wider than the panels on the right.\n", + "\n", + "At the same time, we use `figsize` to adjust the aspect ratio of the whole figure." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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R4+ira0N2dnZ/Lz6+nqcPn0aiYmJAIA9e/YgKCgIs2bNQnx8PEwmE2pqanDzzTeP7AMFSHZ2Nnbv3o3bbruNH/vqq688niE4OBhut9trGREREUhMTMTu3btx0UUXeZSzcOHCc6qfnDCXmprqVcskx969ewf9zTRfgTBnzhxs2rTJQyD46quvoNPpeP3UavWgNgrkuuFw3nnnYdOmTUhLS4NKJf/pkKuPL+666y7MnTsXr7zyCnp7e3Hdddf5PF+lUmHFihVYsWIFnnzySURFReHzzz/HypUrodFoUF9fH7Dm7bzzzkNFRYXX8Tdv3jz09/dj586dWLFixaDf1Wo1APh83jlz5qCvrw/79u3DkiVLAADNzc04ceKEx7tOEARBECMNmWsSxCRixYoVyM3Nxc0334xDhw5h//79uO2227Bs2TIPc7iQkBDcfvvtOHz4ML744gvcd999uOGGG2A0GgEMRKl87rnn8NJLL+HEiRMoLy/Hxo0b8cILL4zJczz88MN488038ec//xlVVVV44YUXsHnzZo/0EWlpafjss89gs9nQ0tLitZznn38e7777Lo4fP45HH30UpaWl+MEPfjAmz+GLL7/8Er/61a9w4sQJ/PGPf8S//vWvIdXrnnvuQUNDA77//e/j2LFj+Pe//40nn3wSDzzwAIKCBqbutLQ07Nu3D6dOnUJTUxP6+/sDum44fO9734PD4cCNN96I/fv3o6amBtu2bcO3v/1tLujI1ccX2dnZuOCCC/CjH/0IN954I0JDQ72e+/HHH+P3v/89SktLUVdXh7fffhv9/f2YPXs2dDodHnroIdx///146623cPLkSZSUlOCPf/wj3nrrLdnyfvSjH2HPnj343ve+h9LSUlRVVeHDDz/E97//ff4st99+O7797W/jgw8+QG1tLXbs2IF//vOfAAaEfoVCgY8//hh2ux2dnZ2D7jFz5kxcffXVWL9+PXbv3o3Dhw/jlltugclkwtVXXx1QuxMEQRDEcCAhjyAmESxBeHR0NC666CKsWLECGRkZePfddz3Oy8zMxHXXXYfLLrsMq1at4toSxl133YXXX38db775JubNm4dly5bhzTffRHp6+pg8xzXXXIOXXnoJv/71r5GTk4NXX30VGzduxPLly/k5v/3tb/Hpp58iOTkZ+fn5suXcd999ePDBB/Hggw9i3rx5+OST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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(9, 4.5))\n", + "\n", + "shape = (2, 4)\n", + "plt.subplot2grid(shape, (0, 0), colspan=3)\n", + "plot_first_selection(candidate_df)\n", + "\n", + "plt.subplot2grid(shape, (0, 3))\n", + "plot_proper_motion(centerline)\n", + "\n", + "plt.subplot2grid(shape, (1, 0), colspan=3)\n", + "plot_second_selection(selected)\n", + "\n", + "plt.subplot2grid(shape, (1, 3))\n", + "plot_cmd(merged)\n", + "poly = Polygon(coords, closed=True, \n", + " facecolor='C1', alpha=0.4)\n", + "plt.gca().add_patch(poly)\n", + "\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is looking more and more like the figure in the paper.\n", + "\n", + "**Exercise:** In this example, the ratio of the widths of the panels is 3:1. How would you adjust it if you wanted the ratio to be 3:2?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "In this notebook, we reverse-engineered the figure we've been replicating, identifying elements that seem effective and others that could be improved.\n", + "\n", + "We explored features Matplotlib provides for adding annotations to figures -- including text, lines, arrows, and polygons -- and several ways to customize the appearance of figures. And we learned how to create figures that contain multiple panels." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Best practices\n", + "\n", + "* The most effective figures focus on telling a single story clearly and compellingly.\n", + "\n", + "* Consider using annotations to guide the readers attention to the most important elements of a figure.\n", + "\n", + "* The default Matplotlib style generates good quality figures, but there are several ways you can override the defaults.\n", + "\n", + "* If you find yourself making the same customizations on several projects, you might want to create your own style sheet." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/_sources/AstronomicalData/01_query.ipynb b/_sources/AstronomicalData/01_query.ipynb new file mode 100644 index 0000000..9a7f17d --- /dev/null +++ b/_sources/AstronomicalData/01_query.ipynb @@ -0,0 +1,1642 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lesson 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "This workshop is an introduction to tools and practices for working with astronomical data. Topics covered include:\n", + "\n", + "* Writing queries that select and download data from a database.\n", + "\n", + "* Using data stored in an Astropy `Table` or Pandas `DataFrame`.\n", + "\n", + "* Working with coordinates and other quantities with units.\n", + "\n", + "* Storing data in various formats.\n", + "\n", + "* Performing database join operations that combine data from multiple tables.\n", + "\n", + "* Visualizing data and preparing publication-quality figures." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As a running example, we will replicate part of the analysis in a recent paper, \"[Off the beaten path: Gaia reveals GD-1 stars outside of the main stream](https://arxiv.org/abs/1805.00425)\" by Adrian M. Price-Whelan and Ana Bonaca.\n", + "\n", + "As the abstract explains, \"Using data from the Gaia second data release combined with Pan-STARRS photometry, we present a sample of highly-probable members of the longest cold stream in the Milky Way, GD-1.\"\n", + "\n", + "GD-1 is a [stellar stream](https://en.wikipedia.org/wiki/List_of_stellar_streams), which is \"an association of stars orbiting a galaxy that was once a globular cluster or dwarf galaxy that has now been torn apart and stretched out along its orbit by tidal forces.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[This article in *Science* magazine](https://www.sciencemag.org/news/2018/10/streams-stars-reveal-galaxy-s-violent-history-and-perhaps-its-unseen-dark-matter) explains some of the background, including the process that led to the paper and an discussion of the scientific implications:\n", + "\n", + "* \"The streams are particularly useful for ... galactic archaeology --- rewinding the cosmic clock to reconstruct the assembly of the Milky Way.\"\n", + "\n", + "* \"They also are being used as exquisitely sensitive scales to measure the galaxy's mass.\"\n", + "\n", + "* \"... the streams are well-positioned to reveal the presence of dark matter ... because the streams are so fragile, theorists say, collisions with marauding clumps of dark matter could leave telltale scars, potential clues to its nature.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "This workshop is meant for people who are familiar with basic Python, but not necessarily the libraries we will use, like Astropy or Pandas. If you are familiar with Python lists and dictionaries, and you know how to write a function that takes parameters and returns a value, you know enough Python for this workshop.\n", + "\n", + "We assume that you have some familiarity with operating systems, like the ability to use a command-line interface. But we don't assume you have any prior experience with databases.\n", + "\n", + "We assume that you are familiar with astronomy at the undergraduate level, but we will not assume specialized knowledge of the datasets or analysis methods we'll use. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data\n", + "\n", + "The datasets we will work with are:\n", + " \n", + "* [Gaia](https://en.wikipedia.org/wiki/Gaia_(spacecraft)), which is \"a space observatory of the European Space Agency (ESA), launched in 2013 ... designed for astrometry: measuring the positions, distances and motions of stars with unprecedented precision\", and\n", + "\n", + "* [Pan-STARRS](https://en.wikipedia.org/wiki/Pan-STARRS), The Panoramic Survey Telescope and Rapid Response System, which is a survey designed to monitor the sky for transient objects, producing a catalog with accurate astronometry and photometry of detected sources.\n", + "\n", + "Both of these datasets are very large, which can make them challenging to work with. It might not be possible, or practical, to download the entire dataset.\n", + "One of the goals of this workshop is to provide tools for working with large datasets." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lesson 1\n", + "\n", + "The first lesson demonstrates the steps for selecting and downloading data from the Gaia Database:\n", + "\n", + "1. First we'll make a connection to the Gaia server,\n", + "\n", + "2. We will explore information about the database and the tables it contains,\n", + "\n", + "3. We will write a query and send it to the server, and finally\n", + "\n", + "4. We will download the response from the server.\n", + "\n", + "After completing this lesson, you should be able to\n", + "\n", + "* Compose a basic query in ADQL.\n", + "\n", + "* Use queries to explore a database and its tables.\n", + "\n", + "* Use queries to download data.\n", + "\n", + "* Develop, test, and debug a query incrementally." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Query Language\n", + "\n", + "In order to select data from a database, you have to compose a query, which is like a program written in a \"query language\".\n", + "The query language we'll use is ADQL, which stands for \"Astronomical Data Query Language\".\n", + "\n", + "ADQL is a dialect of [SQL](https://en.wikipedia.org/wiki/SQL) (Structured Query Language), which is by far the most commonly used query language. Almost everything you will learn about ADQL also works in SQL.\n", + "\n", + "[The reference manual for ADQL is here](http://www.ivoa.net/documents/ADQL/20180112/PR-ADQL-2.1-20180112.html).\n", + "But you might find it easier to learn from [this ADQL Cookbook](https://www.gaia.ac.uk/data/gaia-data-release-1/adql-cookbook)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing libraries\n", + "\n", + "The library we'll use to get Gaia data is [Astroquery](https://astroquery.readthedocs.io/en/latest/).\n", + "\n", + "If you are running this notebook on Colab, you can run the following cell to install Astroquery and the other libraries we'll use.\n", + "\n", + "If you are running this notebook on your own computer, you might have to install these libraries yourself. \n", + "\n", + "If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.\n", + "\n", + "TODO: Add a link to the instructions.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# If we're running on Colab, install libraries\n", + "\n", + "import sys\n", + "IN_COLAB = 'google.colab' in sys.modules\n", + "\n", + "if IN_COLAB:\n", + " !pip install astroquery astro-gala pyia" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Connecting to Gaia\n", + "\n", + "Astroquery provides `Gaia`, which is an [object that represents a connection to the Gaia database](https://astroquery.readthedocs.io/en/latest/gaia/gaia.html).\n", + "\n", + "We can connect to the Gaia database like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: gea.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n", + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: geadata.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n" + ] + } + ], + "source": [ + "from astroquery.gaia import Gaia" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Optional detail \n", + "\n", + "> Running this import statement has the effect of creating a [TAP+](http://www.ivoa.net/documents/TAP/) connection; TAP stands for \"Table Access Protocol\". It is a network protocol for sending queries to the database and getting back the results. We're not sure why it seems to create two connections." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Databases and Tables\n", + "\n", + "What is a database, anyway? Most generally, it can be any collection of data, but when we are talking about ADQL or SQL:\n", + "\n", + "* A database is a collection of one or more named tables.\n", + "\n", + "* Each table is a 2-D array with one or more named columns of data.\n", + "\n", + "We can use `Gaia.load_tables` to get the names of the tables in the Gaia database. With the option `only_names=True`, it loads information about the tables, called the \"metadata\", not the data itself." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO: Retrieving tables... [astroquery.utils.tap.core]\n", + "INFO: Parsing tables... [astroquery.utils.tap.core]\n", + "INFO: Done. [astroquery.utils.tap.core]\n" + ] + } + ], + "source": [ + "tables = Gaia.load_tables(only_names=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "external.external.apassdr9\n", + "external.external.gaiadr2_geometric_distance\n", + "external.external.galex_ais\n", + "external.external.ravedr5_com\n", + "external.external.ravedr5_dr5\n", + "external.external.ravedr5_gra\n", + "external.external.ravedr5_on\n", + "external.external.sdssdr13_photoprimary\n", + "external.external.skymapperdr1_master\n", + "external.external.tmass_xsc\n", + "public.public.hipparcos\n", + "public.public.hipparcos_newreduction\n", + "public.public.hubble_sc\n", + "public.public.igsl_source\n", + "public.public.igsl_source_catalog_ids\n", + "public.public.tycho2\n", + "public.public.dual\n", + "tap_config.tap_config.coord_sys\n", + "tap_config.tap_config.properties\n", + "tap_schema.tap_schema.columns\n", + "tap_schema.tap_schema.key_columns\n", + "tap_schema.tap_schema.keys\n", + "tap_schema.tap_schema.schemas\n", + "tap_schema.tap_schema.tables\n", + "gaiadr1.gaiadr1.aux_qso_icrf2_match\n", + "gaiadr1.gaiadr1.ext_phot_zero_point\n", + "gaiadr1.gaiadr1.allwise_best_neighbour\n", + "gaiadr1.gaiadr1.allwise_neighbourhood\n", + "gaiadr1.gaiadr1.gsc23_best_neighbour\n", + "gaiadr1.gaiadr1.gsc23_neighbourhood\n", + "gaiadr1.gaiadr1.ppmxl_best_neighbour\n", + "gaiadr1.gaiadr1.ppmxl_neighbourhood\n", + "gaiadr1.gaiadr1.sdss_dr9_best_neighbour\n", + "gaiadr1.gaiadr1.sdss_dr9_neighbourhood\n", + "gaiadr1.gaiadr1.tmass_best_neighbour\n", + "gaiadr1.gaiadr1.tmass_neighbourhood\n", + "gaiadr1.gaiadr1.ucac4_best_neighbour\n", + "gaiadr1.gaiadr1.ucac4_neighbourhood\n", + "gaiadr1.gaiadr1.urat1_best_neighbour\n", + "gaiadr1.gaiadr1.urat1_neighbourhood\n", + "gaiadr1.gaiadr1.cepheid\n", + "gaiadr1.gaiadr1.phot_variable_time_series_gfov\n", + "gaiadr1.gaiadr1.phot_variable_time_series_gfov_statistical_parameters\n", + "gaiadr1.gaiadr1.rrlyrae\n", + "gaiadr1.gaiadr1.variable_summary\n", + "gaiadr1.gaiadr1.allwise_original_valid\n", + "gaiadr1.gaiadr1.gsc23_original_valid\n", + "gaiadr1.gaiadr1.ppmxl_original_valid\n", + "gaiadr1.gaiadr1.sdssdr9_original_valid\n", + "gaiadr1.gaiadr1.tmass_original_valid\n", + "gaiadr1.gaiadr1.ucac4_original_valid\n", + "gaiadr1.gaiadr1.urat1_original_valid\n", + "gaiadr1.gaiadr1.gaia_source\n", + "gaiadr1.gaiadr1.tgas_source\n", + "gaiadr2.gaiadr2.aux_allwise_agn_gdr2_cross_id\n", + "gaiadr2.gaiadr2.aux_iers_gdr2_cross_id\n", + "gaiadr2.gaiadr2.aux_sso_orbit_residuals\n", + "gaiadr2.gaiadr2.aux_sso_orbits\n", + "gaiadr2.gaiadr2.dr1_neighbourhood\n", + "gaiadr2.gaiadr2.allwise_best_neighbour\n", + "gaiadr2.gaiadr2.allwise_neighbourhood\n", + "gaiadr2.gaiadr2.apassdr9_best_neighbour\n", + "gaiadr2.gaiadr2.apassdr9_neighbourhood\n", + "gaiadr2.gaiadr2.gsc23_best_neighbour\n", + "gaiadr2.gaiadr2.gsc23_neighbourhood\n", + "gaiadr2.gaiadr2.hipparcos2_best_neighbour\n", + "gaiadr2.gaiadr2.hipparcos2_neighbourhood\n", + "gaiadr2.gaiadr2.panstarrs1_best_neighbour\n", + "gaiadr2.gaiadr2.panstarrs1_neighbourhood\n", + "gaiadr2.gaiadr2.ppmxl_best_neighbour\n", + "gaiadr2.gaiadr2.ppmxl_neighbourhood\n", + "gaiadr2.gaiadr2.ravedr5_best_neighbour\n", + "gaiadr2.gaiadr2.ravedr5_neighbourhood\n", + "gaiadr2.gaiadr2.sdssdr9_best_neighbour\n", + "gaiadr2.gaiadr2.sdssdr9_neighbourhood\n", + "gaiadr2.gaiadr2.tmass_best_neighbour\n", + "gaiadr2.gaiadr2.tmass_neighbourhood\n", + "gaiadr2.gaiadr2.tycho2_best_neighbour\n", + "gaiadr2.gaiadr2.tycho2_neighbourhood\n", + "gaiadr2.gaiadr2.urat1_best_neighbour\n", + "gaiadr2.gaiadr2.urat1_neighbourhood\n", + "gaiadr2.gaiadr2.sso_observation\n", + "gaiadr2.gaiadr2.sso_source\n", + "gaiadr2.gaiadr2.vari_cepheid\n", + "gaiadr2.gaiadr2.vari_classifier_class_definition\n", + "gaiadr2.gaiadr2.vari_classifier_definition\n", + "gaiadr2.gaiadr2.vari_classifier_result\n", + "gaiadr2.gaiadr2.vari_long_period_variable\n", + "gaiadr2.gaiadr2.vari_rotation_modulation\n", + "gaiadr2.gaiadr2.vari_rrlyrae\n", + "gaiadr2.gaiadr2.vari_short_timescale\n", + "gaiadr2.gaiadr2.vari_time_series_statistics\n", + "gaiadr2.gaiadr2.panstarrs1_original_valid\n", + "gaiadr2.gaiadr2.gaia_source\n", + "gaiadr2.gaiadr2.ruwe\n" + ] + } + ], + "source": [ + "for table in (tables):\n", + " print(table.get_qualified_name())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So that's a lot of tables. The ones we'll use are:\n", + "\n", + "* `gaiadr2.gaia_source`, which contains Gaia data from [data release 2](https://www.cosmos.esa.int/web/gaia/data-release-2),\n", + "\n", + "* `gaiadr2.panstarrs1_original_valid`, which contains the photometry data we'll use from PanSTARRS, and\n", + "\n", + "* `gaiadr2.panstarrs1_best_neighbour`, which we'll use to cross-match each star observed by Gaia with the same star observed by PanSTARRS.\n", + "\n", + "We can use `load_table` (not `load_tables`) to get the metadata for a single table. The name of this function is misleading, because it only downloads metadata. " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Retrieving table 'gaiadr2.gaia_source'\n", + "Parsing table 'gaiadr2.gaia_source'...\n", + "Done.\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "meta = Gaia.load_table('gaiadr2.gaia_source')\n", + "meta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jupyter shows that the result is an object of type `TapTableMeta`, but it does not display the contents.\n", + "\n", + "To see the metadata, we have to print the object." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TAP Table name: gaiadr2.gaiadr2.gaia_source\n", + "Description: This table has an entry for every Gaia observed source as listed in the\n", + "Main Database accumulating catalogue version from which the catalogue\n", + "release has been generated. It contains the basic source parameters,\n", + "that is only final data (no epoch data) and no spectra (neither final\n", + "nor epoch).\n", + "Num. columns: 96\n" + ] + } + ], + "source": [ + "print(meta)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice one gotcha: in the list of table names, this table appears as `gaiadr2.gaiadr2.gaia_source`, but when we load the metadata, we refer to it as `gaiadr2.gaia_source`.\n", + "\n", + "**Exercise:** Go back and try\n", + "\n", + "```\n", + "meta = Gaia.load_table('gaiadr2.gaiadr2.gaia_source')\n", + "```\n", + "\n", + "What happens? Is the error message helpful? If you had not made this error deliberately, would you have been able to figure it out?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Columns\n", + "\n", + "The following loop prints the names of the columns in the table." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "solution_id\n", + "designation\n", + "source_id\n", + "random_index\n", + "ref_epoch\n", + "ra\n", + "ra_error\n", + "dec\n", + "dec_error\n", + "parallax\n", + "parallax_error\n", + "parallax_over_error\n", + "pmra\n", + "pmra_error\n", + "pmdec\n", + "pmdec_error\n", + "ra_dec_corr\n", + "ra_parallax_corr\n", + "ra_pmra_corr\n", + "ra_pmdec_corr\n", + "dec_parallax_corr\n", + "dec_pmra_corr\n", + "dec_pmdec_corr\n", + "parallax_pmra_corr\n", + "parallax_pmdec_corr\n", + "pmra_pmdec_corr\n", + "astrometric_n_obs_al\n", + "astrometric_n_obs_ac\n", + "astrometric_n_good_obs_al\n", + "astrometric_n_bad_obs_al\n", + "astrometric_gof_al\n", + "astrometric_chi2_al\n", + "astrometric_excess_noise\n", + "astrometric_excess_noise_sig\n", + "astrometric_params_solved\n", + "astrometric_primary_flag\n", + "astrometric_weight_al\n", + "astrometric_pseudo_colour\n", + "astrometric_pseudo_colour_error\n", + "mean_varpi_factor_al\n", + "astrometric_matched_observations\n", + "visibility_periods_used\n", + "astrometric_sigma5d_max\n", + "frame_rotator_object_type\n", + "matched_observations\n", + "duplicated_source\n", + "phot_g_n_obs\n", + "phot_g_mean_flux\n", + "phot_g_mean_flux_error\n", + "phot_g_mean_flux_over_error\n", + "phot_g_mean_mag\n", + "phot_bp_n_obs\n", + "phot_bp_mean_flux\n", + "phot_bp_mean_flux_error\n", + "phot_bp_mean_flux_over_error\n", + "phot_bp_mean_mag\n", + "phot_rp_n_obs\n", + "phot_rp_mean_flux\n", + "phot_rp_mean_flux_error\n", + "phot_rp_mean_flux_over_error\n", + "phot_rp_mean_mag\n", + "phot_bp_rp_excess_factor\n", + "phot_proc_mode\n", + "bp_rp\n", + "bp_g\n", + "g_rp\n", + "radial_velocity\n", + "radial_velocity_error\n", + "rv_nb_transits\n", + "rv_template_teff\n", + "rv_template_logg\n", + "rv_template_fe_h\n", + "phot_variable_flag\n", + "l\n", + "b\n", + "ecl_lon\n", + "ecl_lat\n", + "priam_flags\n", + "teff_val\n", + "teff_percentile_lower\n", + "teff_percentile_upper\n", + "a_g_val\n", + "a_g_percentile_lower\n", + "a_g_percentile_upper\n", + "e_bp_min_rp_val\n", + "e_bp_min_rp_percentile_lower\n", + "e_bp_min_rp_percentile_upper\n", + "flame_flags\n", + "radius_val\n", + "radius_percentile_lower\n", + "radius_percentile_upper\n", + "lum_val\n", + "lum_percentile_lower\n", + "lum_percentile_upper\n", + "datalink_url\n", + "epoch_photometry_url\n" + ] + } + ], + "source": [ + "for column in meta.columns:\n", + " print(column.name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can probably guess what many of these columns are by looking at the names, but you should resist the temptation to guess.\n", + "To find out what the columns mean, [read the documentation](https://gea.esac.esa.int/archive/documentation/GDR2/Gaia_archive/chap_datamodel/sec_dm_main_tables/ssec_dm_gaia_source.html).\n", + "\n", + "If you want to know what can go wrong when you don't read the documentation, [you might like this article](https://www.vox.com/future-perfect/2019/6/4/18650969/married-women-miserable-fake-paul-dolan-happiness)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** One of the other tables we'll use is `gaiadr2.gaiadr2.panstarrs1_original_valid`. Use `load_table` to get the metadata for this table. How many columns are there and what are their names?\n", + "\n", + "Hint: Remember the gotcha we mentioned earlier." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Retrieving table 'gaiadr2.panstarrs1_original_valid'\n", + "Parsing table 'gaiadr2.panstarrs1_original_valid'...\n", + "Done.\n", + "TAP Table name: gaiadr2.gaiadr2.panstarrs1_original_valid\n", + "Description: The Panoramic Survey Telescope and Rapid Response System (Pan-STARRS) is\n", + "a system for wide-field astronomical imaging developed and operated by\n", + "the Institute for Astronomy at the University of Hawaii. Pan-STARRS1\n", + "(PS1) is the first part of Pan-STARRS to be completed and is the basis\n", + "for Data Release 1 (DR1). The PS1 survey used a 1.8 meter telescope and\n", + "its 1.4 Gigapixel camera to image the sky in five broadband filters (g,\n", + "r, i, z, y).\n", + "\n", + "The current table contains a filtered subsample of the 10 723 304 629\n", + "entries listed in the original ObjectThin table.\n", + "We used only ObjectThin and MeanObject tables to extract\n", + "panstarrs1OriginalValid table, this means that objects detected only in\n", + "stack images are not included here. The main reason for us to avoid the\n", + "use of objects detected in stack images is that their astrometry is not\n", + "as good as the mean objects astrometry: “The stack positions (raStack,\n", + "decStack) have considerably larger systematic astrometric errors than\n", + "the mean epoch positions (raMean, decMean).” The astrometry for the\n", + "MeanObject positions uses Gaia DR1 as a reference catalog, while the\n", + "stack positions use 2MASS as a reference catalog.\n", + "\n", + "In details, we filtered out all objects where:\n", + "\n", + "- nDetections = 1\n", + "\n", + "- no good quality data in Pan-STARRS, objInfoFlag 33554432 not set\n", + "\n", + "- mean astrometry could not be measured, objInfoFlag 524288 set\n", + "\n", + "- stack position used for mean astrometry, objInfoFlag 1048576 set\n", + "\n", + "- error on all magnitudes equal to 0 or to -999;\n", + "\n", + "- all magnitudes set to -999;\n", + "\n", + "- error on RA or DEC greater than 1 arcsec.\n", + "\n", + "The number of objects in panstarrs1OriginalValid is 2 264 263 282.\n", + "\n", + "The panstarrs1OriginalValid table contains only a subset of the columns\n", + "available in the combined ObjectThin and MeanObject tables. A\n", + "description of the original ObjectThin and MeanObjects tables can be\n", + "found at:\n", + "https://outerspace.stsci.edu/display/PANSTARRS/PS1+Database+object+and+detection+tables\n", + "\n", + "Download:\n", + "http://mastweb.stsci.edu/ps1casjobs/home.aspx\n", + "Documentation:\n", + "https://outerspace.stsci.edu/display/PANSTARRS\n", + "http://pswww.ifa.hawaii.edu/pswww/\n", + "References:\n", + "The Pan-STARRS1 Surveys, Chambers, K.C., et al. 2016, arXiv:1612.05560\n", + "Pan-STARRS Data Processing System, Magnier, E. A., et al. 2016,\n", + "arXiv:1612.05240\n", + "Pan-STARRS Pixel Processing: Detrending, Warping, Stacking, Waters, C.\n", + "Z., et al. 2016, arXiv:1612.05245\n", + "Pan-STARRS Pixel Analysis: Source Detection and Characterization,\n", + "Magnier, E. A., et al. 2016, arXiv:1612.05244\n", + "Pan-STARRS Photometric and Astrometric Calibration, Magnier, E. A., et\n", + "al. 2016, arXiv:1612.05242\n", + "The Pan-STARRS1 Database and Data Products, Flewelling, H. A., et al.\n", + "2016, arXiv:1612.05243\n", + "\n", + "Catalogue curator:\n", + "SSDC - ASI Space Science Data Center\n", + "https://www.ssdc.asi.it/\n", + "Num. columns: 26\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "meta2 = Gaia.load_table('gaiadr2.panstarrs1_original_valid')\n", + "print(meta2)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "obj_name\n", + "obj_id\n", + "ra\n", + "dec\n", + "ra_error\n", + "dec_error\n", + "epoch_mean\n", + "g_mean_psf_mag\n", + "g_mean_psf_mag_error\n", + "g_flags\n", + "r_mean_psf_mag\n", + "r_mean_psf_mag_error\n", + "r_flags\n", + "i_mean_psf_mag\n", + "i_mean_psf_mag_error\n", + "i_flags\n", + "z_mean_psf_mag\n", + "z_mean_psf_mag_error\n", + "z_flags\n", + "y_mean_psf_mag\n", + "y_mean_psf_mag_error\n", + "y_flags\n", + "n_detections\n", + "zone_id\n", + "obj_info_flag\n", + "quality_flag\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "for column in meta2.columns:\n", + " print(column.name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Writing queries\n", + "\n", + "By now you might be wondering how we actually download the data. With tables this big, you generally don't. Instead, you use queries to select only the data you want.\n", + "\n", + "A query is a string written in a query language like SQL; for the Gaia database, the query language is a dialect of SQL called ADQL.\n", + "\n", + "Here's an example of an ADQL query." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "query1 = \"\"\"SELECT \n", + "TOP 10\n", + "source_id, ref_epoch, ra, dec, parallax \n", + "FROM gaiadr2.gaia_source\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Python note:** We use a [triple-quoted string](https://docs.python.org/3/tutorial/introduction.html#strings) here so we can include line breaks in the query, which makes it easier to read.\n", + "\n", + "The words in uppercase are ADQL keywords:\n", + "\n", + "* `SELECT` indicates that we are selecting data (as opposed to adding or modifying data).\n", + "\n", + "* `TOP` indicates that we only want the first 10 rows of the table, which is useful for testing a query before asking for all of the data.\n", + "\n", + "* `FROM` specifies which table we want data from.\n", + "\n", + "The third line is a list of column names, indicating which columns we want. \n", + "\n", + "In this example, the keywords are capitalized and the column names are lowercase. This is a common style, but it is not required. ADQL and SQL are not case-sensitive." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To run this query, we use the `Gaia` object, which represents our connection to the Gaia database, and invoke `launch_job`:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "job1 = Gaia.launch_job(query1)\n", + "job1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is an object that represents the job running on a Gaia server.\n", + "\n", + "If you print it, it displays metadata for the forthcoming table." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " name dtype unit description \n", + "--------- ------- ---- ------------------------------------------------------------------\n", + "source_id int64 Unique source identifier (unique within a particular Data Release)\n", + "ref_epoch float64 yr Reference epoch\n", + " ra float64 deg Right ascension\n", + " dec float64 deg Declination\n", + " parallax float64 mas Parallax\n", + "Jobid: None\n", + "Phase: COMPLETED\n", + "Owner: None\n", + "Output file: sync_20201005090721.xml.gz\n", + "Results: None\n" + ] + } + ], + "source": [ + "print(job1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Don't worry about `Results: None`. That does not actually mean there are no results.\n", + "\n", + "However, `Phase: COMPLETED` indicates that the job is complete, so we can get the results like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.table.table.Table" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results1 = job1.get_results()\n", + "type(results1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Optional detail:** Why is `table` repeated three times? The first is the name of the module, the second is the name of the submodule, and the third is the name of the class. Most of the time we only care about the last one. It's like the Linnean name for gorilla, which is *Gorilla Gorilla Gorilla*." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is an [Astropy Table](https://docs.astropy.org/en/stable/table/), which is similar to a table in an SQL database except:\n", + "\n", + "* SQL databases are stored on disk drives, so they are persistent; that is, they \"survive\" even if you turn off the computer. An Astropy `Table` is stored in memory; it disappears when you turn off the computer (or shut down this Jupyter notebook).\n", + "\n", + "* SQL databases are designed to process queries. An Astropy `Table` can perform some query-like operations, like selecting columns and rows. But these operations use Python syntax, not SQL.\n", + "\n", + "Jupyter knows how to display the contents of a `Table`." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Table length=10\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_idref_epochradecparallax
yrdegdegmas
int64float64float64float64float64
45307383617937696002015.5281.5672536244872520.406821174303780.9785380604519425
45307526511350812162015.5281.086156535525720.5233504963518460.2674800612552977
45307433439514055682015.5281.3711441829917720.474147574053124-0.43911323550176806
45307550606271623682015.5281.267623626829920.5585239223461581.1422630184554958
45307468443413159682015.5281.137043174954120.3778523888981841.0092247424630945
45307684566150264322015.5281.872092143634720.31829694530366-0.06900136127674149
45307635131191372802015.5281.921180886411620.209568295785240.1266016679823622
45307363646185392642015.5281.491347561327420.3465790413276930.3894019486060072
45307359523051777282015.5281.408554916570420.3110309037199280.2041189982608354
45307512810560226562015.5281.058532837763820.4603095562147530.10294642821734962
" + ], + "text/plain": [ + "\n", + " source_id ref_epoch ... dec parallax \n", + " yr ... deg mas \n", + " int64 float64 ... float64 float64 \n", + "------------------- --------- ... ------------------ --------------------\n", + "4530738361793769600 2015.5 ... 20.40682117430378 0.9785380604519425\n", + "4530752651135081216 2015.5 ... 20.523350496351846 0.2674800612552977\n", + "4530743343951405568 2015.5 ... 20.474147574053124 -0.43911323550176806\n", + "4530755060627162368 2015.5 ... 20.558523922346158 1.1422630184554958\n", + "4530746844341315968 2015.5 ... 20.377852388898184 1.0092247424630945\n", + "4530768456615026432 2015.5 ... 20.31829694530366 -0.06900136127674149\n", + "4530763513119137280 2015.5 ... 20.20956829578524 0.1266016679823622\n", + "4530736364618539264 2015.5 ... 20.346579041327693 0.3894019486060072\n", + "4530735952305177728 2015.5 ... 20.311030903719928 0.2041189982608354\n", + "4530751281056022656 2015.5 ... 20.460309556214753 0.10294642821734962" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each column has a name, units, and a data type.\n", + "\n", + "For example, the units of `ra` and `dec` are degrees, and their data type is `float64`, which is a 64-bit floating-point number, used to store measurements with a fraction part.\n", + "\n", + "This information comes from the Gaia database, and has been stored in the Astropy `Table` by Astroquery." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Read [the documentation of this table](https://gea.esac.esa.int/archive/documentation/GDR2/Gaia_archive/chap_datamodel/sec_dm_main_tables/ssec_dm_gaia_source.html) and choose a column that looks interesting to you. Add the column name to the query and run it again. What are the units of the column you selected? What is its data type?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Asynchronous queries\n", + "\n", + "`launch_job` asks the server to run the job \"synchronously\", which normally means it runs immediately. But synchronous jobs are limited to 2000 rows. For queries that return more rows, you should run \"asynchronously\", which mean they might take longer to get started.\n", + "\n", + "If you are not sure how many rows a query will return, you can use the SQL command `COUNT` to find out how many rows are in the result without actually returning them. We'll see an example of this later.\n", + "\n", + "The results of an asynchronous query are stored in a file on the server, so you can start a query and come back later to get the results.\n", + "\n", + "For anonymous users, files are kept for three days.\n", + "\n", + "As an example, let's try a query that's similar to `query1`, with two changes:\n", + "\n", + "* It selects the first 3000 rows, so it is bigger than we should run synchronously.\n", + "\n", + "* It uses a new keyword, `WHERE`." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "query2 = \"\"\"SELECT TOP 3000\n", + "source_id, ref_epoch, ra, dec, parallax\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A `WHERE` clause indicates which rows we want; in this case, the query selects only rows \"where\" `parallax` is less than 1. This has the effect of selecting stars with relatively low parallax, which are farther away. We'll use this clause to exclude nearby stars that are unlikely to be part of GD-1.\n", + "\n", + "`WHERE` is one of the most common clauses in ADQL/SQL, and one of the most useful, because it allows us to select only the rows we need from the database.\n", + "\n", + "We use `launch_job_async` to submit an asynchronous query." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO: Query finished. [astroquery.utils.tap.core]\n", + "
\n", + " name dtype unit description \n", + "--------- ------- ---- ------------------------------------------------------------------\n", + "source_id int64 Unique source identifier (unique within a particular Data Release)\n", + "ref_epoch float64 yr Reference epoch\n", + " ra float64 deg Right ascension\n", + " dec float64 deg Declination\n", + " parallax float64 mas Parallax\n", + "Jobid: 1601903242219O\n", + "Phase: COMPLETED\n", + "Owner: None\n", + "Output file: async_20201005090722.vot\n", + "Results: None\n" + ] + } + ], + "source": [ + "job2 = Gaia.launch_job_async(query2)\n", + "print(job2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here are the results." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Table length=3000\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_idref_epochradecparallax
yrdegdegmas
int64float64float64float64float64
45307383617937696002015.5281.5672536244872520.406821174303780.9785380604519425
45307526511350812162015.5281.086156535525720.5233504963518460.2674800612552977
45307433439514055682015.5281.3711441829917720.474147574053124-0.43911323550176806
45307684566150264322015.5281.872092143634720.31829694530366-0.06900136127674149
45307635131191372802015.5281.921180886411620.209568295785240.1266016679823622
45307363646185392642015.5281.491347561327420.3465790413276930.3894019486060072
45307359523051777282015.5281.408554916570420.3110309037199280.2041189982608354
45307512810560226562015.5281.058532837763820.4603095562147530.10294642821734962
45307409387744093442015.5281.376256953641620.4361400589412060.9242670062090182
...............
44677109150118026242015.5269.96809693073471.14290850381608820.42361471245557913
44677065513286795522015.5270.0331645898811.05657473236899270.922888231734588
44677122550373000962015.5270.77247179230470.6581664892880896-2.669179465293931
44677350011817617922015.5270.36286062483080.89470793235991240.6117399163086398
44677371014219166722015.5270.51108346614440.9806225910160181-0.39818224846127004
44677075477573274882015.5269.887462805949271.02127599401369620.7741412301054209
44677327720945730562015.5270.559971827601260.9037072088489417-1.7920417800164183
44677323554910877442015.5270.67307907024910.9197224705139885-0.3464446494840354
44677170997669445122015.5270.576671731208250.7262776590095680.05443955111134051
44677190582657812482015.5270.72480529715140.82055519217827850.3733943917490343
" + ], + "text/plain": [ + "\n", + " source_id ref_epoch ... dec parallax \n", + " yr ... deg mas \n", + " int64 float64 ... float64 float64 \n", + "------------------- --------- ... ------------------ --------------------\n", + "4530738361793769600 2015.5 ... 20.40682117430378 0.9785380604519425\n", + "4530752651135081216 2015.5 ... 20.523350496351846 0.2674800612552977\n", + "4530743343951405568 2015.5 ... 20.474147574053124 -0.43911323550176806\n", + "4530768456615026432 2015.5 ... 20.31829694530366 -0.06900136127674149\n", + "4530763513119137280 2015.5 ... 20.20956829578524 0.1266016679823622\n", + "4530736364618539264 2015.5 ... 20.346579041327693 0.3894019486060072\n", + "4530735952305177728 2015.5 ... 20.311030903719928 0.2041189982608354\n", + "4530751281056022656 2015.5 ... 20.460309556214753 0.10294642821734962\n", + "4530740938774409344 2015.5 ... 20.436140058941206 0.9242670062090182\n", + " ... ... ... ... ...\n", + "4467710915011802624 2015.5 ... 1.1429085038160882 0.42361471245557913\n", + "4467706551328679552 2015.5 ... 1.0565747323689927 0.922888231734588\n", + "4467712255037300096 2015.5 ... 0.6581664892880896 -2.669179465293931\n", + "4467735001181761792 2015.5 ... 0.8947079323599124 0.6117399163086398\n", + "4467737101421916672 2015.5 ... 0.9806225910160181 -0.39818224846127004\n", + "4467707547757327488 2015.5 ... 1.0212759940136962 0.7741412301054209\n", + "4467732772094573056 2015.5 ... 0.9037072088489417 -1.7920417800164183\n", + "4467732355491087744 2015.5 ... 0.9197224705139885 -0.3464446494840354\n", + "4467717099766944512 2015.5 ... 0.726277659009568 0.05443955111134051\n", + "4467719058265781248 2015.5 ... 0.8205551921782785 0.3733943917490343" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results2 = job2.get_results()\n", + "results2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You might notice that some values of `parallax` are negative. As [this FAQ explains](https://www.cosmos.esa.int/web/gaia/archive-tips#negative%20parallax), \"Negative parallaxes are caused by errors in the observations.\" Negative parallaxes have \"no physical meaning,\" but they can be a \"useful diagnostic on the quality of the astrometric solution.\"\n", + "\n", + "Later we will see an example where we use `parallax` and `parallax_error` to identify stars where the distance estimate is likely to be inaccurate." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** The clauses in a query have to be in the right order. Go back and change the order of the clauses in `query2` and run it again. \n", + "\n", + "The query should fail, but notice that you don't get much useful debugging information. \n", + "\n", + "For this reason, developing and debugging ADQL queries can be really hard. A few suggestions that might help:\n", + "\n", + "* Whenever possible, start with a working query, either an example you find online or a query you have used in the past.\n", + "\n", + "* Make small changes and test each change before you continue.\n", + "\n", + "* While you are debugging, use `TOP` to limit the number of rows in the result. That will make each attempt run faster, which reduces your testing time. \n", + "\n", + "* Launching test queries synchronously might make them start faster, too." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Operators\n", + "\n", + "In a `WHERE` clause, you can use any of the [SQL comparison operators](https://www.w3schools.com/sql/sql_operators.asp); here are the most common ones:\n", + "\n", + "| Symbol | Operation\n", + "|--------| :---\n", + "| `>` | greater than\n", + "| `<` | less than\n", + "| `>=` | greater than or equal\n", + "| `<=` | less than or equal\n", + "| `=` | equal\n", + "| `!=` or `<>` | not equal\n", + "\n", + "Most of these are the same as Python, but some are not. In particular, notice that the equality operator is `=`, not `==`.\n", + "Be careful to keep your Python out of your ADQL!\n", + "\n", + "You can combine comparisons using the logical operators:\n", + "\n", + "* AND: true if both comparisons are true\n", + "* OR: true if either or both comparisons are true\n", + "\n", + "Finally, you can use `NOT` to invert the result of a comparison. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** [Read about SQL operators here](https://www.w3schools.com/sql/sql_operators.asp) and then modify the previous query to select rows where `bp_rp` is between `-0.75` and `2`.\n", + "\n", + "You can [read about this variable here](https://gea.esac.esa.int/archive/documentation/GDR2/Gaia_archive/chap_datamodel/sec_dm_main_tables/ssec_dm_gaia_source.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "# This is what most people will probably do\n", + "\n", + "query = \"\"\"SELECT TOP 10\n", + "source_id, ref_epoch, ra, dec, parallax\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1 \n", + " AND bp_rp > -0.75 AND bp_rp < 2\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "# But if someone notices the BETWEEN operator, \n", + "# they might do this\n", + "\n", + "query = \"\"\"SELECT TOP 10\n", + "source_id, ref_epoch, ra, dec, parallax\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1 \n", + " AND bp_rp BETWEEN -0.75 AND 2\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This [Hertzsprung-Russell diagram](https://sci.esa.int/web/gaia/-/60198-gaia-hertzsprung-russell-diagram) shows the BP-RP color and luminosity of stars in the Gaia catalog.\n", + "\n", + "Selecting stars with `bp-rp` less than 2 excludes many [class M dwarf stars](https://xkcd.com/2360/), which are low temperature, low luminosity. A star like that at GD-1's distance would be hard to detect, so if it is detected, it it more likely to be in the foreground." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cleaning up\n", + "\n", + "Asynchronous jobs have a `jobid`." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(None, '1601903242219O')" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "job1.jobid, job2.jobid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Which you can use to remove the job from the server." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Removed jobs: '['1601903242219O']'.\n" + ] + } + ], + "source": [ + "Gaia.remove_jobs([job2.jobid])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you don't remove it job from the server, it will be removed eventually, so don't feel too bad if you don't clean up after yourself." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Formatting queries\n", + "\n", + "So far the queries have been string \"literals\", meaning that the entire string is part of the program.\n", + "But writing queries yourself can be slow, repetitive, and error-prone.\n", + "\n", + "It is often a good idea to write Python code that assembles a query for you. One useful tool for that is the [string `format` method](https://www.w3schools.com/python/ref_string_format.asp).\n", + "\n", + "As an example, we'll divide the previous query into two parts; a list of column names and a \"base\" for the query that contains everything except the column names.\n", + "\n", + "Here's the list of columns we'll select. " + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "columns = 'source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's the base; it's a string that contains at least one format specifier in curly brackets (braces)." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "query3_base = \"\"\"SELECT TOP 10 \n", + "{columns}\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This base query contains one format specifier, `{columns}`, which is a placeholder for the list of column names we will provide.\n", + "\n", + "To assemble the query, we invoke `format` on the base string and provide a keyword argument that assigns a value to `columns`." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "query3 = query3_base.format(columns=columns)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a string with line breaks. If you display it, the line breaks appear as `\\n`." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'SELECT TOP 10 \\nsource_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\\nFROM gaiadr2.gaia_source\\nWHERE parallax < 1\\n AND bp_rp BETWEEN -0.75 AND 2\\n'" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "query3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But if you print it, the line breaks appear as... line breaks." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SELECT TOP 10 \n", + "source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2\n", + "\n" + ] + } + ], + "source": [ + "print(query3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that the format specifier has been replaced with the value of `columns`.\n", + "\n", + "Let's run it and see if it works:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "
\n", + " name dtype unit description n_bad\n", + "--------------- ------- -------- ------------------------------------------------------------------ -----\n", + " source_id int64 Unique source identifier (unique within a particular Data Release) 0\n", + " ra float64 deg Right ascension 0\n", + " dec float64 deg Declination 0\n", + " pmra float64 mas / yr Proper motion in right ascension direction 0\n", + " pmdec float64 mas / yr Proper motion in declination direction 0\n", + " parallax float64 mas Parallax 0\n", + " parallax_error float64 mas Standard error of parallax 0\n", + "radial_velocity float64 km / s Radial velocity 10\n", + "Jobid: None\n", + "Phase: COMPLETED\n", + "Owner: None\n", + "Output file: sync_20201005090726.xml.gz\n", + "Results: None\n" + ] + } + ], + "source": [ + "job3 = Gaia.launch_job(query3)\n", + "print(job3)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Table length=10\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_idradecpmrapmdecparallaxparallax_errorradial_velocity
degdegmas / yrmas / yrmasmaskm / s
int64float64float64float64float64float64float64float64
4467710915011802624269.96809693073471.14290850381608822.0233280236600626-2.56924278755102660.423614712455579130.470352406647465--
4467706551328679552270.0331645898811.0565747323689927-3.414829591355289-3.84372158574957370.9228882317345880.927008559859825--
4467712255037300096270.77247179230470.6581664892880896-3.5620173752896025-6.595792323153987-2.6691794652939310.9719742773203504--
4467735001181761792270.36286062483080.89470793235991242.13070799264892050.88267277109107120.61173991630863980.509812721702093--
4467737101421916672270.51108346614440.98062259101601810.17532366511560785-5.113270239706202-0.398182248461270040.7549581886719651--
4467707547757327488269.887462805949271.0212759940136962-2.6382230817672987-3.7077765320492870.77414123010542090.3022057897812064--
4467732355491087744270.67307907024910.9197224705139885-2.2735991502653037-11.864952855984358-0.34644464948403540.4937921513912002--
4467717099766944512270.576671731208250.726277659009568-3.4598362614808367-4.6014268933659210.054439551111340510.8867339293525688--
4467719058265781248270.72480529715140.8205551921782785-3.255079498426542-9.2492850691110850.37339439174903430.390952370410666--
4467722326741572352270.874312918885040.85955659758691580.106963983518598261.2035993780158853-0.118509434328643730.1660452431882023--
" + ], + "text/plain": [ + "\n", + " source_id ra ... parallax_error radial_velocity\n", + " deg ... mas km / s \n", + " int64 float64 ... float64 float64 \n", + "------------------- ------------------ ... ------------------ ---------------\n", + "4467710915011802624 269.9680969307347 ... 0.470352406647465 --\n", + "4467706551328679552 270.033164589881 ... 0.927008559859825 --\n", + "4467712255037300096 270.7724717923047 ... 0.9719742773203504 --\n", + "4467735001181761792 270.3628606248308 ... 0.509812721702093 --\n", + "4467737101421916672 270.5110834661444 ... 0.7549581886719651 --\n", + "4467707547757327488 269.88746280594927 ... 0.3022057897812064 --\n", + "4467732355491087744 270.6730790702491 ... 0.4937921513912002 --\n", + "4467717099766944512 270.57667173120825 ... 0.8867339293525688 --\n", + "4467719058265781248 270.7248052971514 ... 0.390952370410666 --\n", + "4467722326741572352 270.87431291888504 ... 0.1660452431882023 --" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results3 = job3.get_results()\n", + "results3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Good so far." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** This query always selects sources with `parallax` less than 1. But suppose you want to take that upper bound as an input.\n", + "\n", + "Modify `query3_base` to replace `1` with a format specifier like `{max_parallax}`. Now, when you call `format`, add a keyword argument that assigns a value to `max_parallax`, and confirm that the format specifier gets replaced with the value you provide." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "query4_base = \"\"\"SELECT TOP 10\n", + "{columns}\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < {max_parallax} AND \n", + "bp_rp BETWEEN -0.75 AND 2\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SELECT TOP 10\n", + "source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 0.5 AND \n", + "bp_rp BETWEEN -0.75 AND 2\n", + "\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "query4 = query4_base.format(columns=columns,\n", + " max_parallax=0.5)\n", + "print(query)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Style note:** You might notice that the variable names in this notebook are numbered, like `query1`, `query2`, etc. \n", + "\n", + "The advantage of this style is that it isolates each section of the notebook from the others, so if you go back and run the cells out of order, it's less likely that you will get unexpected interactions.\n", + "\n", + "A drawback of this style is that it can be a nuisance to update the notebook if you add, remove, or reorder a section.\n", + "\n", + "What do you think of this choice? Are there alternatives you prefer?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "This notebook demonstrates the following steps:\n", + "\n", + "1. Making a connection to the Gaia server,\n", + "\n", + "2. Exploring information about the database and the tables it contains,\n", + "\n", + "3. Writing a query and sending it to the server, and finally\n", + "\n", + "4. Downloading the response from the server as an Astropy `Table`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Best practices\n", + "\n", + "* If you can't download an entire dataset (or it's not practical) use queries to select the data you need.\n", + "\n", + "* Read the metadata and the documentation to make sure you understand the tables, their columns, and what they mean.\n", + "\n", + "* Develop queries incrementally: start with something simple, test it, and add a little bit at a time.\n", + "\n", + "* Use ADQL features like `TOP` and `COUNT` to test before you run a query that might return a lot of data.\n", + "\n", + "* If you know your query will return fewer than 3000 rows, you can run it synchronously, which might complete faster (but it doesn't seem to make much difference). If it might return more than 3000 rows, you should run it asynchronously.\n", + "\n", + "* ADQL and SQL are not case-sensitive, so you don't have to capitalize the keywords, but you should.\n", + "\n", + "* ADQL and SQL don't require you to break a query into multiple lines, but you should.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jupyter notebooks can be good for developing and testing code, but they have some drawbacks. In particular, if you run the cells out of order, you might find that variables don't have the values you expect.\n", + "\n", + "There are a few things you can do to mitigate these problems:\n", + "\n", + "* Make each section of the notebook self-contained. Try not to use the same variable name in more than one section.\n", + "\n", + "* Keep notebooks short. Look for places where you can break your analysis into phases with one notebook per phase." + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/_sources/AstronomicalData/02_coords.ipynb b/_sources/AstronomicalData/02_coords.ipynb new file mode 100644 index 0000000..54821b3 --- /dev/null +++ b/_sources/AstronomicalData/02_coords.ipynb @@ -0,0 +1,1970 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lesson 2\n", + "\n", + "This is the second in a series of lessons related to astronomy data.\n", + "\n", + "As a running example, we are replicating parts of the analysis in a recent paper, \"[Off the beaten path: Gaia reveals GD-1 stars outside of the main stream](https://arxiv.org/abs/1805.00425)\" by Adrian M. Price-Whelan and Ana Bonaca.\n", + "\n", + "In the first notebook, we wrote ADQL queries and used them to select and download data from the Gaia server.\n", + "\n", + "In this notebook, we'll pick up where we left off and write a query to select stars from the region of the sky where we expect GD-1 to be." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll start with an example that does a \"cone search\"; that is, it selects stars that appear in a circular region of the sky.\n", + "\n", + "Then, to select stars in the vicinity of GD-1, we'll:\n", + "\n", + "* Use `Quantity` objects to represent measurements with units.\n", + "\n", + "* Use the `Gala` library to convert coordinates from one frame to another.\n", + "\n", + "* Use the ADQL keywords `POLYGON`, `CONTAINS`, and `POINT` to select stars that fall within a polygonal region.\n", + "\n", + "* Submit a query and download the results.\n", + "\n", + "* Store the results in a FITS file.\n", + "\n", + "After completing this lesson, you should be able to\n", + "\n", + "* Use Python string formatting to compose more complex ADQL queries.\n", + "\n", + "* Work with coordinates and other quantities that have units.\n", + "\n", + "* Download the results of a query and store them in a file." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing libraries\n", + "\n", + "If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we'll use.\n", + "\n", + "If you are running this notebook on your own computer, you might have to install these libraries yourself. \n", + "\n", + "If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.\n", + "\n", + "TODO: Add a link to the instructions.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# If we're running on Colab, install libraries\n", + "\n", + "import sys\n", + "IN_COLAB = 'google.colab' in sys.modules\n", + "\n", + "if IN_COLAB:\n", + " !pip install astroquery astro-gala pyia" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting a region" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One of the most common ways to restrict a query is to select stars in a particular region of the sky.\n", + "\n", + "For example, here's a query from the [Gaia archive documentation](https://gea.esac.esa.int/archive-help/adql/examples/index.html) that selects \"all the objects ... in a circular region centered at (266.41683, -29.00781) with a search radius of 5 arcmin (0.08333 deg).\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "query = \"\"\"\n", + "SELECT \n", + "TOP 10 source_id\n", + "FROM gaiadr2.gaia_source\n", + "WHERE 1=CONTAINS(\n", + " POINT(ra, dec),\n", + " CIRCLE(266.41683, -29.00781, 0.08333333))\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This query uses three keywords that are specific to ADQL (not SQL):\n", + "\n", + "* `POINT`: a location in [ICRS coordinates](https://en.wikipedia.org/wiki/International_Celestial_Reference_System), specified in degrees of right ascension and declination.\n", + "\n", + "* `CIRCLE`: a circle where the first two values are the coordinates of the center and the third is the radius in degrees.\n", + "\n", + "* `CONTAINS`: a function that returns `1` if a `POINT` is contained in a shape and `0` otherwise.\n", + "\n", + "Here is the [documentation of `CONTAINS`](http://www.ivoa.net/documents/ADQL/20180112/PR-ADQL-2.1-20180112.html#tth_sEc4.2.12).\n", + "\n", + "A query like this is called a cone search because it selects stars in a cone.\n", + "\n", + "Here's how we run it." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: gea.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n", + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: geadata.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n" + ] + }, + { + "data": { + "text/html": [ + "Table length=10\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_id
int64
4057468321929794432
4057468287575835392
4057482027171038976
4057470349160630656
4057470039924301696
4057469868125641984
4057468351995073024
4057469661959554560
4057470520960672640
4057470555320409600
" + ], + "text/plain": [ + "\n", + " source_id \n", + " int64 \n", + "-------------------\n", + "4057468321929794432\n", + "4057468287575835392\n", + "4057482027171038976\n", + "4057470349160630656\n", + "4057470039924301696\n", + "4057469868125641984\n", + "4057468351995073024\n", + "4057469661959554560\n", + "4057470520960672640\n", + "4057470555320409600" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from astroquery.gaia import Gaia\n", + "\n", + "job = Gaia.launch_job(query)\n", + "result = job.get_results()\n", + "result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** When you are debugging queries like this, you can use `TOP` to limit the size of the results, but then you still don't know how big the results will be.\n", + "\n", + "An alternative is to use `COUNT`, which asks for the number of rows that would be selected, but it does not return them.\n", + "\n", + "In the previous query, replace `TOP 10 source_id` with `COUNT(source_id)` and run the query again. How many stars has Gaia identified in the cone we searched?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Getting GD-1 Data\n", + "\n", + "From the Price-Whelan and Bonaca paper, we will try to reproduce Figure 1, which includes this representation of stars likely to belong to GD-1:\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Along the axis of right ascension ($\\phi_1$) the figure extends from -100 to 20 degrees.\n", + "\n", + "Along the axis of declination ($\\phi_2$) the figure extends from about -8 to 4 degrees.\n", + "\n", + "Ideally, we would select all stars from this rectangle, but there are more than 10 million of them, so\n", + "\n", + "* That would be difficult to work with,\n", + "\n", + "* As anonymous users, we are limited to 3 million rows in a single query, and\n", + "\n", + "* While we are developing and testing code, it will be faster to work with a smaller dataset.\n", + "\n", + "So we'll start by selecting stars in a smaller rectangle, from -55 to -45 degrees right ascension and -8 to 4 degrees of declination.\n", + "\n", + "But first we let's see how to represent quantities with units like degrees." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Working with coordinates\n", + "\n", + "Coordinates are physical quantities, which means that they have two parts, a value and a unit.\n", + "\n", + "For example, the coordinate $30^{\\circ}$ has value 30 and its units are degrees.\n", + "\n", + "Until recently, most scientific computation was done with values only; units were left out of the program altogether, [often with disastrous results](https://en.wikipedia.org/wiki/Mars_Climate_Orbiter#Cause_of_failure).\n", + "\n", + "Astropy provides tools for including units explicitly in computations, which makes it possible to detect errors before they cause disasters.\n", + "\n", + "To use Astropy units, we import them like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import astropy.units as u\n", + "\n", + "u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`u` is an object that contains most common units and all SI units.\n", + "\n", + "You can use `dir` to list them, but you should also [read the documentation](https://docs.astropy.org/en/stable/units/)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['A',\n", + " 'AA',\n", + " 'AB',\n", + " 'ABflux',\n", + " 'ABmag',\n", + " 'AU',\n", + " 'Angstrom',\n", + " 'B',\n", + " 'Ba',\n", + " 'Barye',\n", + " 'Bi',\n", + " 'Biot',\n", + " 'Bol',\n", + " 'Bq',\n", + " 'C',\n", + " 'Celsius',\n", + " 'Ci',\n", + " 'CompositeUnit',\n", + " 'D',\n", + " 'Da',\n", + " 'Dalton',\n", + " 'Debye',\n", + " 'Decibel',\n", + " 'DecibelUnit',\n", + " 'Dex',\n", + " 'DexUnit',\n", + " 'EA',\n", + " 'EAU',\n", + " 'EB',\n", + " 'EBa',\n", + " 'EC',\n", + " 'ED',\n", + " 'EF',\n", + " 'EG',\n", + " 'EGal',\n", + " 'EH',\n", + " 'EHz',\n", + " 'EJ',\n", + " 'EJy',\n", + " 'EK',\n", + " 'EL',\n", + " 'EN',\n", + " 'EOhm',\n", + " 'EP',\n", + " 'EPa',\n", + " 'ER',\n", + " 'ERy',\n", + " 'ES',\n", + " 'ESt',\n", + " 'ET',\n", + " 'EV',\n", + " 'EW',\n", + " 'EWb',\n", + " 'Ea',\n", + " 'Eadu',\n", + " 'Earcmin',\n", + " 'Earcsec',\n", + " 'Eau',\n", + " 'Eb',\n", + " 'Ebarn',\n", + " 'Ebeam',\n", + " 'Ebin',\n", + " 'Ebit',\n", + " 'Ebyte',\n", + " 'Ecd',\n", + " 'Echan',\n", + " 'Ecount',\n", + " 'Ect',\n", + " 'Ed',\n", + " 'Edeg',\n", + " 'Edyn',\n", + " 'EeV',\n", + " 'Eerg',\n", + " 'Eg',\n", + " 'Eh',\n", + " 'EiB',\n", + " 'Eib',\n", + " 'Eibit',\n", + " 'Eibyte',\n", + " 'Ek',\n", + " 'El',\n", + " 'Elm',\n", + " 'Elx',\n", + " 'Elyr',\n", + " 'Em',\n", + " 'Emag',\n", + " 'Emin',\n", + " 'Emol',\n", + " 'Eohm',\n", + " 'Epc',\n", + " 'Eph',\n", + " 'Ephoton',\n", + " 'Epix',\n", + " 'Epixel',\n", + " 'Erad',\n", + " 'Es',\n", + " 'Esr',\n", + " 'Eu',\n", + " 'Evox',\n", + " 'Evoxel',\n", + " 'Eyr',\n", + " 'F',\n", + " 'Farad',\n", + " 'Fr',\n", + " 'Franklin',\n", + " 'FunctionQuantity',\n", + " 'FunctionUnitBase',\n", + " 'G',\n", + " 'GA',\n", + " 'GAU',\n", + " 'GB',\n", + " 'GBa',\n", + " 'GC',\n", + " 'GD',\n", + " 'GF',\n", + " 'GG',\n", + " 'GGal',\n", + " 'GH',\n", + " 'GHz',\n", + " 'GJ',\n", + " 'GJy',\n", + " 'GK',\n", + " 'GL',\n", + " 'GN',\n", + " 'GOhm',\n", + " 'GP',\n", + " 'GPa',\n", + " 'GR',\n", + " 'GRy',\n", + " 'GS',\n", + " 'GSt',\n", + " 'GT',\n", + " 'GV',\n", + " 'GW',\n", + " 'GWb',\n", + " 'Ga',\n", + " 'Gadu',\n", + " 'Gal',\n", + " 'Garcmin',\n", + " 'Garcsec',\n", + " 'Gau',\n", + " 'Gauss',\n", + " 'Gb',\n", + " 'Gbarn',\n", + " 'Gbeam',\n", + " 'Gbin',\n", + " 'Gbit',\n", + " 'Gbyte',\n", + " 'Gcd',\n", + " 'Gchan',\n", + " 'Gcount',\n", + " 'Gct',\n", + " 'Gd',\n", + " 'Gdeg',\n", + " 'Gdyn',\n", + " 'GeV',\n", + " 'Gerg',\n", + " 'Gg',\n", + " 'Gh',\n", + " 'GiB',\n", + " 'Gib',\n", + " 'Gibit',\n", + " 'Gibyte',\n", + " 'Gk',\n", + " 'Gl',\n", + " 'Glm',\n", + " 'Glx',\n", + " 'Glyr',\n", + " 'Gm',\n", + " 'Gmag',\n", + " 'Gmin',\n", + " 'Gmol',\n", + " 'Gohm',\n", + " 'Gpc',\n", + " 'Gph',\n", + " 'Gphoton',\n", + " 'Gpix',\n", + " 'Gpixel',\n", + " 'Grad',\n", + " 'Gs',\n", + " 'Gsr',\n", + " 'Gu',\n", + " 'Gvox',\n", + " 'Gvoxel',\n", + " 'Gyr',\n", + " 'H',\n", + " 'Henry',\n", + " 'Hertz',\n", + " 'Hz',\n", + " 'IrreducibleUnit',\n", + " 'J',\n", + " 'Jansky',\n", + " 'Joule',\n", + " 'Jy',\n", + " 'K',\n", + " 'Kayser',\n", + " 'Kelvin',\n", + " 'KiB',\n", + " 'Kib',\n", + " 'Kibit',\n", + " 'Kibyte',\n", + " 'L',\n", + " 'L_bol',\n", + " 'L_sun',\n", + " 'LogQuantity',\n", + " 'LogUnit',\n", + " 'Lsun',\n", + " 'MA',\n", + " 'MAU',\n", + " 'MB',\n", + " 'MBa',\n", + " 'MC',\n", + " 'MD',\n", + " 'MF',\n", + " 'MG',\n", + " 'MGal',\n", + " 'MH',\n", + " 'MHz',\n", + " 'MJ',\n", + " 'MJy',\n", + " 'MK',\n", + " 'ML',\n", + " 'MN',\n", + " 'MOhm',\n", + " 'MP',\n", + " 'MPa',\n", + " 'MR',\n", + " 'MRy',\n", + " 'MS',\n", + " 'MSt',\n", + " 'MT',\n", + " 'MV',\n", + " 'MW',\n", + " 'MWb',\n", + " 'M_bol',\n", + " 'M_e',\n", + " 'M_earth',\n", + " 'M_jup',\n", + " 'M_jupiter',\n", + " 'M_p',\n", + " 'M_sun',\n", + " 'Ma',\n", + " 'Madu',\n", + " 'MagUnit',\n", + " 'Magnitude',\n", + " 'Marcmin',\n", + " 'Marcsec',\n", + " 'Mau',\n", + " 'Mb',\n", + " 'Mbarn',\n", + " 'Mbeam',\n", + " 'Mbin',\n", + " 'Mbit',\n", + " 'Mbyte',\n", + " 'Mcd',\n", + " 'Mchan',\n", + " 'Mcount',\n", + " 'Mct',\n", + " 'Md',\n", + " 'Mdeg',\n", + " 'Mdyn',\n", + " 'MeV',\n", + " 'Mearth',\n", + " 'Merg',\n", + " 'Mg',\n", + " 'Mh',\n", + " 'MiB',\n", + " 'Mib',\n", + " 'Mibit',\n", + " 'Mibyte',\n", + " 'Mjup',\n", + " 'Mjupiter',\n", + " 'Mk',\n", + " 'Ml',\n", + " 'Mlm',\n", + " 'Mlx',\n", + " 'Mlyr',\n", + " 'Mm',\n", + " 'Mmag',\n", + " 'Mmin',\n", + " 'Mmol',\n", + " 'Mohm',\n", + " 'Mpc',\n", + " 'Mph',\n", + " 'Mphoton',\n", + " 'Mpix',\n", + " 'Mpixel',\n", + " 'Mrad',\n", + " 'Ms',\n", + " 'Msr',\n", + " 'Msun',\n", + " 'Mu',\n", + " 'Mvox',\n", + " 'Mvoxel',\n", + " 'Myr',\n", + " 'N',\n", + " 'NamedUnit',\n", + " 'Newton',\n", + " 'Ohm',\n", + " 'P',\n", + " 'PA',\n", + " 'PAU',\n", + " 'PB',\n", + " 'PBa',\n", + " 'PC',\n", + " 'PD',\n", + " 'PF',\n", + " 'PG',\n", + " 'PGal',\n", + " 'PH',\n", + " 'PHz',\n", + " 'PJ',\n", + " 'PJy',\n", + " 'PK',\n", + " 'PL',\n", + " 'PN',\n", + " 'POhm',\n", + " 'PP',\n", + " 'PPa',\n", + " 'PR',\n", + " 'PRy',\n", + " 'PS',\n", + " 'PSt',\n", + " 'PT',\n", + " 'PV',\n", + " 'PW',\n", + " 'PWb',\n", + " 'Pa',\n", + " 'Padu',\n", + " 'Parcmin',\n", + " 'Parcsec',\n", + " 'Pascal',\n", + " 'Pau',\n", + " 'Pb',\n", + " 'Pbarn',\n", + " 'Pbeam',\n", + " 'Pbin',\n", + " 'Pbit',\n", + " 'Pbyte',\n", + " 'Pcd',\n", + " 'Pchan',\n", + " 'Pcount',\n", + " 'Pct',\n", + " 'Pd',\n", + " 'Pdeg',\n", + " 'Pdyn',\n", + " 'PeV',\n", + " 'Perg',\n", + " 'Pg',\n", + " 'Ph',\n", + " 'PiB',\n", + " 'Pib',\n", + " 'Pibit',\n", + " 'Pibyte',\n", + " 'Pk',\n", + " 'Pl',\n", + " 'Plm',\n", + " 'Plx',\n", + " 'Plyr',\n", + " 'Pm',\n", + " 'Pmag',\n", + " 'Pmin',\n", + " 'Pmol',\n", + " 'Pohm',\n", + " 'Ppc',\n", + " 'Pph',\n", + " 'Pphoton',\n", + " 'Ppix',\n", + " 'Ppixel',\n", + " 'Prad',\n", + " 'PrefixUnit',\n", + " 'Ps',\n", + " 'Psr',\n", + " 'Pu',\n", + " 'Pvox',\n", + " 'Pvoxel',\n", + " 'Pyr',\n", + " 'Quantity',\n", + " 'QuantityInfo',\n", + " 'QuantityInfoBase',\n", + " 'R',\n", + " 'R_earth',\n", + " 'R_jup',\n", + " 'R_jupiter',\n", + " 'R_sun',\n", + " 'Rayleigh',\n", + " 'Rearth',\n", + " 'Rjup',\n", + " 'Rjupiter',\n", + " 'Rsun',\n", + " 'Ry',\n", + " 'S',\n", + " 'ST',\n", + " 'STflux',\n", + " 'STmag',\n", + " 'Siemens',\n", + " 'SpecificTypeQuantity',\n", + " 'St',\n", + " 'Sun',\n", + " 'T',\n", + " 'TA',\n", + " 'TAU',\n", + " 'TB',\n", + " 'TBa',\n", + " 'TC',\n", + " 'TD',\n", + " 'TF',\n", + " 'TG',\n", + " 'TGal',\n", + " 'TH',\n", + " 'THz',\n", + " 'TJ',\n", + " 'TJy',\n", + " 'TK',\n", + " 'TL',\n", + " 'TN',\n", + " 'TOhm',\n", + " 'TP',\n", + " 'TPa',\n", + " 'TR',\n", + " 'TRy',\n", + " 'TS',\n", + " 'TSt',\n", + " 'TT',\n", + " 'TV',\n", + " 'TW',\n", + " 'TWb',\n", + " 'Ta',\n", + " 'Tadu',\n", + " 'Tarcmin',\n", + " 'Tarcsec',\n", + " 'Tau',\n", + " 'Tb',\n", + " 'Tbarn',\n", + " 'Tbeam',\n", + " 'Tbin',\n", + " 'Tbit',\n", + " 'Tbyte',\n", + " 'Tcd',\n", + " 'Tchan',\n", + " 'Tcount',\n", + " 'Tct',\n", + " 'Td',\n", + " 'Tdeg',\n", + " 'Tdyn',\n", + " 'TeV',\n", + " 'Terg',\n", + " 'Tesla',\n", + " 'Tg',\n", + " 'Th',\n", + " 'TiB',\n", + " 'Tib',\n", + " 'Tibit',\n", + " 'Tibyte',\n", + " 'Tk',\n", + " 'Tl',\n", + " 'Tlm',\n", + " 'Tlx',\n", + " 'Tlyr',\n", + " 'Tm',\n", + " 'Tmag',\n", + " 'Tmin',\n", + " 'Tmol',\n", + " 'Tohm',\n", + " 'Tpc',\n", + " 'Tph',\n", + " 'Tphoton',\n", + " 'Tpix',\n", + " 'Tpixel',\n", + " 'Trad',\n", + " 'Ts',\n", + " 'Tsr',\n", + " 'Tu',\n", + " 'Tvox',\n", + " 'Tvoxel',\n", + " 'Tyr',\n", + " 'Unit',\n", + " 'UnitBase',\n", + " 'UnitConversionError',\n", + " 'UnitTypeError',\n", + " 'UnitsError',\n", + " 'UnitsWarning',\n", + " 'UnrecognizedUnit',\n", + " 'V',\n", + " 'Volt',\n", + " 'W',\n", + " 'Watt',\n", + " 'Wb',\n", + " 'Weber',\n", + " 'YA',\n", + " 'YAU',\n", + " 'YB',\n", + " 'YBa',\n", + " 'YC',\n", + " 'YD',\n", + " 'YF',\n", + " 'YG',\n", + " 'YGal',\n", + " 'YH',\n", + " 'YHz',\n", + " 'YJ',\n", + " 'YJy',\n", + " 'YK',\n", + " 'YL',\n", + " 'YN',\n", + " 'YOhm',\n", + " 'YP',\n", + " 'YPa',\n", + " 'YR',\n", + " 'YRy',\n", + " 'YS',\n", + " 'YSt',\n", + " 'YT',\n", + " 'YV',\n", + " 'YW',\n", + " 'YWb',\n", + " 'Ya',\n", + " 'Yadu',\n", + " 'Yarcmin',\n", + " 'Yarcsec',\n", + " 'Yau',\n", + " 'Yb',\n", + " 'Ybarn',\n", + " 'Ybeam',\n", + " 'Ybin',\n", + " 'Ybit',\n", + " 'Ybyte',\n", + " 'Ycd',\n", + " 'Ychan',\n", + " 'Ycount',\n", + " 'Yct',\n", + " 'Yd',\n", + " 'Ydeg',\n", + " 'Ydyn',\n", + " 'YeV',\n", + " 'Yerg',\n", + " 'Yg',\n", + " 'Yh',\n", + " 'Yk',\n", + " 'Yl',\n", + " 'Ylm',\n", + " 'Ylx',\n", + " 'Ylyr',\n", + " 'Ym',\n", + " 'Ymag',\n", + " 'Ymin',\n", + " 'Ymol',\n", + " 'Yohm',\n", + " 'Ypc',\n", + " 'Yph',\n", + " 'Yphoton',\n", + " 'Ypix',\n", + " 'Ypixel',\n", + " 'Yrad',\n", + " 'Ys',\n", + " 'Ysr',\n", + " 'Yu',\n", + " 'Yvox',\n", + " 'Yvoxel',\n", + " 'Yyr',\n", + " 'ZA',\n", + " 'ZAU',\n", + " 'ZB',\n", + " 'ZBa',\n", + " 'ZC',\n", + " 'ZD',\n", + " 'ZF',\n", + " 'ZG',\n", + " 'ZGal',\n", + " 'ZH',\n", + " 'ZHz',\n", + " 'ZJ',\n", + " 'ZJy',\n", + " 'ZK',\n", + " 'ZL',\n", + " 'ZN',\n", + " 'ZOhm',\n", + " 'ZP',\n", + " 'ZPa',\n", + " 'ZR',\n", + " 'ZRy',\n", + " 'ZS',\n", + " 'ZSt',\n", + " 'ZT',\n", + " 'ZV',\n", + " 'ZW',\n", + " 'ZWb',\n", + " 'Za',\n", + " 'Zadu',\n", + " 'Zarcmin',\n", + " 'Zarcsec',\n", + " 'Zau',\n", + " 'Zb',\n", + " 'Zbarn',\n", + " 'Zbeam',\n", + " 'Zbin',\n", + " 'Zbit',\n", + " 'Zbyte',\n", + " 'Zcd',\n", + " 'Zchan',\n", + " 'Zcount',\n", + " 'Zct',\n", + " 'Zd',\n", + " 'Zdeg',\n", + " 'Zdyn',\n", + " 'ZeV',\n", + " 'Zerg',\n", + " 'Zg',\n", + " 'Zh',\n", + " 'Zk',\n", + " 'Zl',\n", + " 'Zlm',\n", + " 'Zlx',\n", + " 'Zlyr',\n", + " 'Zm',\n", + " 'Zmag',\n", + " 'Zmin',\n", + " 'Zmol',\n", + " 'Zohm',\n", + " 'Zpc',\n", + " 'Zph',\n", + " 'Zphoton',\n", + " 'Zpix',\n", + " 'Zpixel',\n", + " 'Zrad',\n", + " 'Zs',\n", + " 'Zsr',\n", + " 'Zu',\n", + " 'Zvox',\n", + " 'Zvoxel',\n", + " 'Zyr',\n", + " '__builtins__',\n", + " '__cached__',\n", + " '__doc__',\n", + " '__file__',\n", + " '__loader__',\n", + " '__name__',\n", + " '__package__',\n", + " '__path__',\n", + " '__spec__',\n", + " 'a',\n", + " 'aA',\n", + " 'aAU',\n", + " 'aB',\n", + " 'aBa',\n", + " 'aC',\n", + " 'aD',\n", + " 'aF',\n", + " 'aG',\n", + " 'aGal',\n", + " 'aH',\n", + " 'aHz',\n", + " 'aJ',\n", + " 'aJy',\n", + " 'aK',\n", + " 'aL',\n", + " 'aN',\n", + " 'aOhm',\n", + " 'aP',\n", + " 'aPa',\n", + " 'aR',\n", + " 'aRy',\n", + " 'aS',\n", + " 'aSt',\n", + " 'aT',\n", + " 'aV',\n", + " 'aW',\n", + " 'aWb',\n", + " 'aa',\n", + " 'aadu',\n", + " 'aarcmin',\n", + " 'aarcsec',\n", + " 'aau',\n", + " 'ab',\n", + " 'abA',\n", + " 'abC',\n", + " 'abampere',\n", + " 'abarn',\n", + " 'abcoulomb',\n", + " 'abeam',\n", + " 'abin',\n", + " 'abit',\n", + " 'abyte',\n", + " 'acd',\n", + " 'achan',\n", + " 'acount',\n", + " 'act',\n", + " 'ad',\n", + " 'add_enabled_equivalencies',\n", + " 'add_enabled_units',\n", + " 'adeg',\n", + " 'adu',\n", + " 'adyn',\n", + " 'aeV',\n", + " 'aerg',\n", + " 'ag',\n", + " 'ah',\n", + " 'ak',\n", + " 'al',\n", + " 'allclose',\n", + " 'alm',\n", + " 'alx',\n", + " 'alyr',\n", + " 'am',\n", + " 'amag',\n", + " 'amin',\n", + " 'amol',\n", + " 'amp',\n", + " 'ampere',\n", + " 'angstrom',\n", + " 'annum',\n", + " 'aohm',\n", + " 'apc',\n", + " 'aph',\n", + " 'aphoton',\n", + " 'apix',\n", + " 'apixel',\n", + " 'arad',\n", + " 'arcmin',\n", + " 'arcminute',\n", + " 'arcsec',\n", + " 'arcsecond',\n", + " 'asr',\n", + " 'astronomical_unit',\n", + " 'astrophys',\n", + " 'attoBarye',\n", + " 'attoDa',\n", + " 'attoDalton',\n", + " 'attoDebye',\n", + " 'attoFarad',\n", + " 'attoGauss',\n", + " 'attoHenry',\n", + " 'attoHertz',\n", + " 'attoJansky',\n", + " 'attoJoule',\n", + " 'attoKayser',\n", + " 'attoKelvin',\n", + " 'attoNewton',\n", + " 'attoOhm',\n", + " 'attoPascal',\n", + " 'attoRayleigh',\n", + " 'attoSiemens',\n", + " 'attoTesla',\n", + " 'attoVolt',\n", + " 'attoWatt',\n", + " 'attoWeber',\n", + " 'attoamp',\n", + " 'attoampere',\n", + " 'attoannum',\n", + " 'attoarcminute',\n", + " 'attoarcsecond',\n", + " 'attoastronomical_unit',\n", + " 'attobarn',\n", + " 'attobarye',\n", + " 'attobit',\n", + " 'attobyte',\n", + " 'attocandela',\n", + " 'attocoulomb',\n", + " 'attocount',\n", + " 'attoday',\n", + " 'attodebye',\n", + " 'attodegree',\n", + " 'attodyne',\n", + " 'attoelectronvolt',\n", + " 'attofarad',\n", + " 'attogal',\n", + " 'attogauss',\n", + " 'attogram',\n", + " 'attohenry',\n", + " 'attohertz',\n", + " 'attohour',\n", + " 'attohr',\n", + " 'attojansky',\n", + " 'attojoule',\n", + " 'attokayser',\n", + " 'attolightyear',\n", + " 'attoliter',\n", + " 'attolumen',\n", + " 'attolux',\n", + " 'attometer',\n", + " 'attominute',\n", + " 'attomole',\n", + " 'attonewton',\n", + " 'attoparsec',\n", + " 'attopascal',\n", + " 'attophoton',\n", + " 'attopixel',\n", + " 'attopoise',\n", + " 'attoradian',\n", + " 'attorayleigh',\n", + " 'attorydberg',\n", + " 'attosecond',\n", + " 'attosiemens',\n", + " 'attosteradian',\n", + " 'attostokes',\n", + " 'attotesla',\n", + " 'attovolt',\n", + " 'attovoxel',\n", + " 'attowatt',\n", + " 'attoweber',\n", + " 'attoyear',\n", + " 'au',\n", + " 'avox',\n", + " 'avoxel',\n", + " 'ayr',\n", + " 'b',\n", + " 'bar',\n", + " 'barn',\n", + " 'barye',\n", + " 'beam',\n", + " 'beam_angular_area',\n", + " 'becquerel',\n", + " 'bin',\n", + " 'binary_prefixes',\n", + " 'bit',\n", + " 'bol',\n", + " 'brightness_temperature',\n", + " 'byte',\n", + " 'cA',\n", + " 'cAU',\n", + " 'cB',\n", + " 'cBa',\n", + " 'cC',\n", + " 'cD',\n", + " 'cF',\n", + " 'cG',\n", + " 'cGal',\n", + " 'cH',\n", + " 'cHz',\n", + " 'cJ',\n", + " 'cJy',\n", + " 'cK',\n", + " 'cL',\n", + " 'cN',\n", + " 'cOhm',\n", + " 'cP',\n", + " 'cPa',\n", + " 'cR',\n", + " 'cRy',\n", + " 'cS',\n", + " 'cSt',\n", + " 'cT',\n", + " 'cV',\n", + " 'cW',\n", + " 'cWb',\n", + " 'ca',\n", + " 'cadu',\n", + " 'candela',\n", + " 'carcmin',\n", + " 'carcsec',\n", + " 'cau',\n", + " 'cb',\n", + " 'cbarn',\n", + " 'cbeam',\n", + " 'cbin',\n", + " 'cbit',\n", + " 'cbyte',\n", + " 'ccd',\n", + " 'cchan',\n", + " 'ccount',\n", + " 'cct',\n", + " 'cd',\n", + " 'cdeg',\n", + " 'cdyn',\n", + " 'ceV',\n", + " 'centiBarye',\n", + " 'centiDa',\n", + " 'centiDalton',\n", + " 'centiDebye',\n", + " 'centiFarad',\n", + " 'centiGauss',\n", + " 'centiHenry',\n", + " 'centiHertz',\n", + " 'centiJansky',\n", + " 'centiJoule',\n", + " 'centiKayser',\n", + " 'centiKelvin',\n", + " 'centiNewton',\n", + " 'centiOhm',\n", + " 'centiPascal',\n", + " 'centiRayleigh',\n", + " 'centiSiemens',\n", + " 'centiTesla',\n", + " 'centiVolt',\n", + " 'centiWatt',\n", + " 'centiWeber',\n", + " 'centiamp',\n", + " 'centiampere',\n", + " 'centiannum',\n", + " 'centiarcminute',\n", + " 'centiarcsecond',\n", + " 'centiastronomical_unit',\n", + " 'centibarn',\n", + " 'centibarye',\n", + " 'centibit',\n", + " 'centibyte',\n", + " 'centicandela',\n", + " 'centicoulomb',\n", + " 'centicount',\n", + " 'centiday',\n", + " 'centidebye',\n", + " 'centidegree',\n", + " 'centidyne',\n", + " 'centielectronvolt',\n", + " 'centifarad',\n", + " 'centigal',\n", + " 'centigauss',\n", + " 'centigram',\n", + " 'centihenry',\n", + " 'centihertz',\n", + " 'centihour',\n", + " 'centihr',\n", + " 'centijansky',\n", + " 'centijoule',\n", + " 'centikayser',\n", + " 'centilightyear',\n", + " 'centiliter',\n", + " 'centilumen',\n", + " 'centilux',\n", + " 'centimeter',\n", + " 'centiminute',\n", + " 'centimole',\n", + " 'centinewton',\n", + " 'centiparsec',\n", + " 'centipascal',\n", + " 'centiphoton',\n", + " 'centipixel',\n", + " 'centipoise',\n", + " 'centiradian',\n", + " 'centirayleigh',\n", + " 'centirydberg',\n", + " 'centisecond',\n", + " 'centisiemens',\n", + " 'centisteradian',\n", + " 'centistokes',\n", + " 'centitesla',\n", + " 'centivolt',\n", + " 'centivoxel',\n", + " 'centiwatt',\n", + " 'centiweber',\n", + " 'centiyear',\n", + " 'cerg',\n", + " 'cg',\n", + " 'cgs',\n", + " 'ch',\n", + " 'chan',\n", + " 'ck',\n", + " 'cl',\n", + " 'clm',\n", + " 'clx',\n", + " 'clyr',\n", + " 'cm',\n", + " 'cmag',\n", + " 'cmin',\n", + " 'cmol',\n", + " 'cohm',\n", + " 'core',\n", + " 'coulomb',\n", + " 'count',\n", + " 'cpc',\n", + " 'cph',\n", + " 'cphoton',\n", + " 'cpix',\n", + " 'cpixel',\n", + " 'crad',\n", + " 'cs',\n", + " 'csr',\n", + " 'ct',\n", + " 'cu',\n", + " 'curie',\n", + " 'cvox',\n", + " 'cvoxel',\n", + " 'cy',\n", + " 'cycle',\n", + " 'cyr',\n", + " 'd',\n", + " 'dA',\n", + " 'dAU',\n", + " 'dB',\n", + " 'dBa',\n", + " 'dC',\n", + " 'dD',\n", + " 'dF',\n", + " 'dG',\n", + " 'dGal',\n", + " 'dH',\n", + " 'dHz',\n", + " 'dJ',\n", + " 'dJy',\n", + " 'dK',\n", + " 'dL',\n", + " 'dN',\n", + " 'dOhm',\n", + " 'dP',\n", + " 'dPa',\n", + " 'dR',\n", + " 'dRy',\n", + " 'dS',\n", + " 'dSt',\n", + " 'dT',\n", + " ...]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dir(u)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To create a quantity, we multiply a value by a unit." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.units.quantity.Quantity" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coord = 30 * u.deg\n", + "type(coord)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a `Quantity` object.\n", + "\n", + "Jupyter knows how to display `Quantities` like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$30 \\; \\mathrm{{}^{\\circ}}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coord" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting a rectangle\n", + "\n", + "Now we'll select a rectangle from -55 to -45 degrees right ascension and -8 to 4 degrees of declination.\n", + "\n", + "We'll define variables to contain these limits." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "phi1_min = -55\n", + "phi1_max = -45\n", + "phi2_min = -8\n", + "phi2_max = 4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To represent a rectangle, we'll use two lists of coordinates and multiply by their units." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "phi1_rect = [phi1_min, phi1_min, phi1_max, phi1_max] * u.deg\n", + "phi2_rect = [phi2_min, phi2_max, phi2_max, phi2_min] * u.deg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`phi1_rect` and `phi2_rect` represent the coordinates of the corners of a rectangle. \n", + "\n", + "But they are in \"[a Heliocentric spherical coordinate system defined by the orbit of the GD1 stream](https://gala-astro.readthedocs.io/en/latest/_modules/gala/coordinates/gd1.html)\"\n", + "\n", + "In order to use them in a Gaia query, we have to convert them to [International Celestial Reference System](https://en.wikipedia.org/wiki/International_Celestial_Reference_System) (ICRS) coordinates. We can do that by storing the coordinates in a `GD1Koposov10` object provided by [Gala](https://gala-astro.readthedocs.io/en/latest/coordinates/)." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "gala.coordinates.gd1.GD1Koposov10" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import gala.coordinates as gc\n", + "\n", + "corners = gc.GD1Koposov10(phi1=phi1_rect, phi2=phi2_rect)\n", + "type(corners)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can display the result like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corners" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can use `transform_to` to convert to ICRS coordinates." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.coordinates.builtin_frames.icrs.ICRS" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import astropy.coordinates as coord\n", + "\n", + "corners_icrs = corners.transform_to(coord.ICRS)\n", + "type(corners_icrs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is an `ICRS` object." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corners_icrs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that a rectangle in one coordinate system is not necessarily a rectangle in another. In this example, the result is a polygon." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting a polygon\n", + "\n", + "In order to use this polygon as part of an ADQL query, we have to convert it to a string with a comma-separated list of coordinates, as in this example:\n", + "\n", + "```\n", + "\"\"\"\n", + "POLYGON(143.65, 20.98, \n", + " 134.46, 26.39, \n", + " 140.58, 34.85, \n", + " 150.16, 29.01)\n", + "\"\"\"\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`corners_icrs` behaves like a list, so we can use a `for` loop to iterate through the points." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "for point in corners_icrs:\n", + " print(point)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From that, we can select the coordinates `ra` and `dec`:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "146d16m31.1993s 19d15m42.8754s\n", + "135d25m17.902s 25d52m38.594s\n", + "141d36m09.5337s 34d18m17.3891s\n", + "152d49m00.1576s 27d08m10.0051s\n" + ] + } + ], + "source": [ + "for point in corners_icrs:\n", + " print(point.ra, point.dec)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The results are quantities with units, but if we select the `value` part, we get a dimensionless floating-point number." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "146.27533313607782 19.261909820533692\n", + "135.42163944306296 25.87738722767213\n", + "141.60264825107333 34.304830296257144\n", + "152.81671044675923 27.136112541397996\n" + ] + } + ], + "source": [ + "for point in corners_icrs:\n", + " print(point.ra.value, point.dec.value)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use string `format` to convert these numbers to strings." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['146.27533313607782, 19.261909820533692',\n", + " '135.42163944306296, 25.87738722767213',\n", + " '141.60264825107333, 34.304830296257144',\n", + " '152.81671044675923, 27.136112541397996']" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "point_base = \"{point.ra.value}, {point.dec.value}\"\n", + "\n", + "t = [point_base.format(point=point)\n", + " for point in corners_icrs]\n", + "t" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a list of strings, which we can join into a single string using `join`." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'146.27533313607782, 19.261909820533692, 135.42163944306296, 25.87738722767213, 141.60264825107333, 34.304830296257144, 152.81671044675923, 27.136112541397996'" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "point_list = ', '.join(t)\n", + "point_list" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that we invoke `join` on a string and pass the list as an argument.\n", + "\n", + "Before we can assemble the query, we need `columns` again (as we saw in the previous notebook)." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "columns = 'source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's the base for the query, with format specifiers for `columns` and `point_list`." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "query_base = \"\"\"SELECT {columns}\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2 \n", + " AND 1 = CONTAINS(POINT(ra, dec), \n", + " POLYGON({point_list}))\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's the result:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SELECT source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2 \n", + " AND 1 = CONTAINS(POINT(ra, dec), \n", + " POLYGON(146.27533313607782, 19.261909820533692, 135.42163944306296, 25.87738722767213, 141.60264825107333, 34.304830296257144, 152.81671044675923, 27.136112541397996))\n", + "\n" + ] + } + ], + "source": [ + "query = query_base.format(columns=columns, \n", + " point_list=point_list)\n", + "print(query)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As always, we should take a minute to proof-read the query before we launch it.\n", + "\n", + "The result will be bigger than our previous queries, so it will take a little longer." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO: Query finished. [astroquery.utils.tap.core]\n", + "
\n", + " name dtype unit description n_bad \n", + "--------------- ------- -------- ------------------------------------------------------------------ ------\n", + " source_id int64 Unique source identifier (unique within a particular Data Release) 0\n", + " ra float64 deg Right ascension 0\n", + " dec float64 deg Declination 0\n", + " pmra float64 mas / yr Proper motion in right ascension direction 0\n", + " pmdec float64 mas / yr Proper motion in declination direction 0\n", + " parallax float64 mas Parallax 0\n", + " parallax_error float64 mas Standard error of parallax 0\n", + "radial_velocity float64 km / s Radial velocity 139374\n", + "Jobid: 1603114980658O\n", + "Phase: COMPLETED\n", + "Owner: None\n", + "Output file: async_20201019094300.vot\n", + "Results: None\n" + ] + } + ], + "source": [ + "job = Gaia.launch_job_async(query)\n", + "print(job)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here are the results." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "140340" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results = job.get_results()\n", + "len(results)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are more than 100,000 stars in this polygon, but that's a manageable size to work with." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Saving results\n", + "\n", + "This is the set of stars we'll work with in the next step. But since we have a substantial dataset now, this is a good time to save it.\n", + "\n", + "Storing the data in a file means we can shut down this notebook and pick up where we left off without running the previous query again.\n", + "\n", + "Astropy `Table` objects provide `write`, which writes the table to disk." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "filename = 'gd1_results.fits'\n", + "results.write(filename, overwrite=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Because the filename ends with `fits`, the table is written in the [FITS format](https://en.wikipedia.org/wiki/FITS), which preserves the metadata associated with the table.\n", + "\n", + "If the file already exists, the `overwrite` argument causes it to be overwritten.\n", + "\n", + "To see how big the file is, we can use `ls` with the `-lh` option, which prints information about the file including its size in human-readable form." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-rw-rw-r-- 1 downey downey 8.6M Oct 19 09:43 gd1_results.fits\r\n" + ] + } + ], + "source": [ + "!ls -lh gd1_results.fits" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The file is about 8.6 MB. If you are using Windows, `ls` might not work; in that case, try:\n", + "\n", + "```\n", + "!dir gd1_results.fits\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "In this notebook, we composed more complex queries to select stars within a polygonal region of the sky. Then we downloaded the results and saved them in a FITS file.\n", + "\n", + "In the next notebook, we'll reload the data from this file and replicate the next step in the analysis, using proper motion to identify stars likely to be in GD-1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Best practices\n", + "\n", + "* For measurements with units, use `Quantity` objects that represent units explicitly and check for errors.\n", + "\n", + "* Use the `format` function to compose queries; it is often faster and less error-prone.\n", + "\n", + "* Develop queries incrementally: start with something simple, test it, and add a little bit at a time.\n", + "\n", + "* Once you have a query working, save the data in a local file. If you shut down the notebook and come back to it later, you can reload the file; you don't have to run the query again." + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/_sources/AstronomicalData/README.md b/_sources/AstronomicalData/README.md new file mode 100644 index 0000000..190277b --- /dev/null +++ b/_sources/AstronomicalData/README.md @@ -0,0 +1,172 @@ +# Astronomical Data in Python + +*Astronomical Data in Python* is an introduction to tools and practices for working with astronomical data. Topics covered include: + +* Writing queries that select and download data from a database. + +* Using data stored in an Astropy `Table` or Pandas `DataFrame`. + +* Working with coordinates and other quantities with units. + +* Storing data in various formats. + +* Performing database join operations that combine data from multiple tables. + +* Visualizing data and preparing publication-quality figures. + +As a running example, we will replicate part of the analysis in a recent paper, "[Off the beaten path: Gaia reveals GD-1 stars outside of the main stream](https://arxiv.org/abs/1805.00425)" by Adrian M. Price-Whelan and Ana Bonaca. + +This material was developed in collaboration with [The Carpentries](https://carpentries.org/) and the Astronomy Curriculum Development Committee, and supported by funding from the American Institute of Physics through the American Astronomical Society. + +I am grateful for contributions from the members of the committee -- Azalee Bostroem, Rodolfo Montez, and Phil Rosenfield -- and from Erin Becker, Brett Morris and Adrian Price-Whelan. + +The original format of this material is a series of Jupyter notebooks. Using the +links below, you can read the notebooks on NBViewer or run them on Colab. If you +want to run the notebooks in your own environment, you can download them from +this repository and follow the instructions below to set up your environment. + +This material is also available in the form of [Carpentries lessons](https://datacarpentry.github.io/astronomy-python), but you should be +aware that these versions might diverge in the future. + +**Prerequisites** + +This material should be accessible to people familiar with basic Python, but not necessarily the libraries we will use, like Astropy or Pandas. If you are familiar with Python lists and dictionaries, and you know how to write a function that takes parameters and returns a value, that should be enough. + +We assume that you are familiar with astronomy at the undergraduate level, but we will not assume specialized knowledge of the datasets or analysis methods we'll use. + +**Notebook 1** + +This notebook demonstrates the following steps: + +1. Making a connection to the Gaia server, + +2. Exploring information about the database and the tables it contains, + +3. Writing a query and sending it to the server, and finally + +4. Downloading the response from the server as an Astropy `Table`. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/01_query.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/01_query.ipynb) + + +**Notebook 2** + +This notebook starts with an example that does a "cone search"; that is, it selects stars that appear in a circular region of the sky. + +Then, to select stars in the vicinity of GD-1, we: + +* Use `Quantity` objects to represent measurements with units. + +* Use the `Gala` library to convert coordinates from one frame to another. + +* Use the ADQL keywords `POLYGON`, `CONTAINS`, and `POINT` to select stars that fall within a polygonal region. + +* Submit a query and download the results. + +* Store the results in a FITS file. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/02_coords.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/02_coords.ipynb) + + +**Notebook 3** + +Here are the steps in this notebook: + +1. We'll read back the results from the previous notebook, which we saved in a FITS file. + +2. Then we'll transform the coordinates and proper motion data from ICRS back to the coordinate frame of GD-1. + +3. We'll put those results into a Pandas `DataFrame`, which we'll use to select stars near the centerline of GD-1. + +4. Plotting the proper motion of those stars, we'll identify a region of proper motion for stars that are likely to be in GD-1. + +5. Finally, we'll select and plot the stars whose proper motion is in that region. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/03_motion.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/03_motion.ipynb) + + +**Notebook 4** + +Here are the steps in this notebook: + +1. Using data from the previous notebook, we'll identify the values of proper motion for stars likely to be in GD-1. + +2. Then we'll compose an ADQL query that selects stars based on proper motion, so we can download only the data we need. + +3. We'll also see how to write the results to a CSV file. + +That will make it possible to search a bigger region of the sky in a single query. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/04_select.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/04_select.ipynb) + + +**Notebook 5** + +Here are the steps in this notebook: + +1. We'll reload the candidate stars we identified in the previous notebook. + +2. Then we'll run a query on the Gaia server that uploads the table of candidates and uses a `JOIN` operation to select photometry data for the candidate stars. + +3. We'll write the results to a file for use in the next notebook. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/05_join.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/05_join.ipynb) + + +**Notebook 6** + +Here are the steps in this notebook: + +1. We'll reload the data from the previous notebook and make a color-magnitude diagram. + +2. Then we'll specify a polygon in the diagram that contains stars with the photometry we expect. + +3. Then we'll merge the photometry data with the list of candidate stars, storing the result in a Pandas `DataFrame`. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/06_photo.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/06_photo.ipynb) + + +**Notebook 7** + +Here are the steps in this notebook: + +1. Starting with the figure from the previous notebook, we'll add annotations to present the results more clearly. + +2. The we'll see several ways to customize figures to make them more appealing and effective. + +3. Finally, we'll see how to make a figure with multiple panels or subplots. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/07_plot.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/07_plot.ipynb) + + +**Installation instructions** + +Coming soon. diff --git a/_sources/AstronomicalData/_build/html/_static/vendor/lato_latin-ext/1.44.1/LICENSE.md b/_sources/AstronomicalData/_build/html/_static/vendor/lato_latin-ext/1.44.1/LICENSE.md new file mode 100644 index 0000000..89bc0f2 --- /dev/null +++ b/_sources/AstronomicalData/_build/html/_static/vendor/lato_latin-ext/1.44.1/LICENSE.md @@ -0,0 +1,20 @@ +Copyright (c) 2019 Jan Bednar + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/_sources/AstronomicalData/_build/html/_static/vendor/open-sans_all/1.44.1/LICENSE.md b/_sources/AstronomicalData/_build/html/_static/vendor/open-sans_all/1.44.1/LICENSE.md new file mode 100644 index 0000000..89bc0f2 --- /dev/null +++ b/_sources/AstronomicalData/_build/html/_static/vendor/open-sans_all/1.44.1/LICENSE.md @@ -0,0 +1,20 @@ +Copyright (c) 2019 Jan Bednar + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/_sources/AstronomicalData/_build/jupyter_execute/01_query.ipynb b/_sources/AstronomicalData/_build/jupyter_execute/01_query.ipynb new file mode 100644 index 0000000..94813e9 --- /dev/null +++ b/_sources/AstronomicalData/_build/jupyter_execute/01_query.ipynb @@ -0,0 +1,1640 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lesson 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "This workshop is an introduction to tools and practices for working with astronomical data. Topics covered include:\n", + "\n", + "* Writing queries that select and download data from a database.\n", + "\n", + "* Using data stored in an Astropy `Table` or Pandas `DataFrame`.\n", + "\n", + "* Working with coordinates and other quantities with units.\n", + "\n", + "* Storing data in various formats.\n", + "\n", + "* Performing database join operations that combine data from multiple tables.\n", + "\n", + "* Visualizing data and preparing publication-quality figures." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As a running example, we will replicate part of the analysis in a recent paper, \"[Off the beaten path: Gaia reveals GD-1 stars outside of the main stream](https://arxiv.org/abs/1805.00425)\" by Adrian M. Price-Whelan and Ana Bonaca.\n", + "\n", + "As the abstract explains, \"Using data from the Gaia second data release combined with Pan-STARRS photometry, we present a sample of highly-probable members of the longest cold stream in the Milky Way, GD-1.\"\n", + "\n", + "GD-1 is a [stellar stream](https://en.wikipedia.org/wiki/List_of_stellar_streams), which is \"an association of stars orbiting a galaxy that was once a globular cluster or dwarf galaxy that has now been torn apart and stretched out along its orbit by tidal forces.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[This article in *Science* magazine](https://www.sciencemag.org/news/2018/10/streams-stars-reveal-galaxy-s-violent-history-and-perhaps-its-unseen-dark-matter) explains some of the background, including the process that led to the paper and an discussion of the scientific implications:\n", + "\n", + "* \"The streams are particularly useful for ... galactic archaeology --- rewinding the cosmic clock to reconstruct the assembly of the Milky Way.\"\n", + "\n", + "* \"They also are being used as exquisitely sensitive scales to measure the galaxy's mass.\"\n", + "\n", + "* \"... the streams are well-positioned to reveal the presence of dark matter ... because the streams are so fragile, theorists say, collisions with marauding clumps of dark matter could leave telltale scars, potential clues to its nature.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "This workshop is meant for people who are familiar with basic Python, but not necessarily the libraries we will use, like Astropy or Pandas. If you are familiar with Python lists and dictionaries, and you know how to write a function that takes parameters and returns a value, you know enough Python for this workshop.\n", + "\n", + "We assume that you have some familiarity with operating systems, like the ability to use a command-line interface. But we don't assume you have any prior experience with databases.\n", + "\n", + "We assume that you are familiar with astronomy at the undergraduate level, but we will not assume specialized knowledge of the datasets or analysis methods we'll use. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data\n", + "\n", + "The datasets we will work with are:\n", + " \n", + "* [Gaia](https://en.wikipedia.org/wiki/Gaia_(spacecraft)), which is \"a space observatory of the European Space Agency (ESA), launched in 2013 ... designed for astrometry: measuring the positions, distances and motions of stars with unprecedented precision\", and\n", + "\n", + "* [Pan-STARRS](https://en.wikipedia.org/wiki/Pan-STARRS), The Panoramic Survey Telescope and Rapid Response System, which is a survey designed to monitor the sky for transient objects, producing a catalog with accurate astronometry and photometry of detected sources.\n", + "\n", + "Both of these datasets are very large, which can make them challenging to work with. It might not be possible, or practical, to download the entire dataset.\n", + "One of the goals of this workshop is to provide tools for working with large datasets." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Lesson 1\n", + "\n", + "The first lesson demonstrates the steps for selecting and downloading data from the Gaia Database:\n", + "\n", + "1. First we'll make a connection to the Gaia server,\n", + "\n", + "2. We will explore information about the database and the tables it contains,\n", + "\n", + "3. We will write a query and send it to the server, and finally\n", + "\n", + "4. We will download the response from the server.\n", + "\n", + "After completing this lesson, you should be able to\n", + "\n", + "* Compose a basic query in ADQL.\n", + "\n", + "* Use queries to explore a database and its tables.\n", + "\n", + "* Use queries to download data.\n", + "\n", + "* Develop, test, and debug a query incrementally." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Query Language\n", + "\n", + "In order to select data from a database, you have to compose a query, which is like a program written in a \"query language\".\n", + "The query language we'll use is ADQL, which stands for \"Astronomical Data Query Language\".\n", + "\n", + "ADQL is a dialect of [SQL](https://en.wikipedia.org/wiki/SQL) (Structured Query Language), which is by far the most commonly used query language. Almost everything you will learn about ADQL also works in SQL.\n", + "\n", + "[The reference manual for ADQL is here](http://www.ivoa.net/documents/ADQL/20180112/PR-ADQL-2.1-20180112.html).\n", + "But you might find it easier to learn from [this ADQL Cookbook](https://www.gaia.ac.uk/data/gaia-data-release-1/adql-cookbook)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing libraries\n", + "\n", + "The library we'll use to get Gaia data is [Astroquery](https://astroquery.readthedocs.io/en/latest/).\n", + "\n", + "If you are running this notebook on Colab, you can run the following cell to install Astroquery and the other libraries we'll use.\n", + "\n", + "If you are running this notebook on your own computer, you might have to install these libraries yourself. \n", + "\n", + "If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.\n", + "\n", + "TODO: Add a link to the instructions.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# If we're running on Colab, install libraries\n", + "\n", + "import sys\n", + "IN_COLAB = 'google.colab' in sys.modules\n", + "\n", + "if IN_COLAB:\n", + " !pip install astroquery astro-gala pyia" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Connecting to Gaia\n", + "\n", + "Astroquery provides `Gaia`, which is an [object that represents a connection to the Gaia database](https://astroquery.readthedocs.io/en/latest/gaia/gaia.html).\n", + "\n", + "We can connect to the Gaia database like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: gea.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n", + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: geadata.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n" + ] + } + ], + "source": [ + "from astroquery.gaia import Gaia" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Optional detail \n", + "\n", + "> Running this import statement has the effect of creating a [TAP+](http://www.ivoa.net/documents/TAP/) connection; TAP stands for \"Table Access Protocol\". It is a network protocol for sending queries to the database and getting back the results. We're not sure why it seems to create two connections." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Databases and Tables\n", + "\n", + "What is a database, anyway? Most generally, it can be any collection of data, but when we are talking about ADQL or SQL:\n", + "\n", + "* A database is a collection of one or more named tables.\n", + "\n", + "* Each table is a 2-D array with one or more named columns of data.\n", + "\n", + "We can use `Gaia.load_tables` to get the names of the tables in the Gaia database. With the option `only_names=True`, it loads information about the tables, called the \"metadata\", not the data itself." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO: Retrieving tables... [astroquery.utils.tap.core]\n", + "INFO: Parsing tables... [astroquery.utils.tap.core]\n", + "INFO: Done. [astroquery.utils.tap.core]\n" + ] + } + ], + "source": [ + "tables = Gaia.load_tables(only_names=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "external.external.apassdr9\n", + "external.external.gaiadr2_geometric_distance\n", + "external.external.galex_ais\n", + "external.external.ravedr5_com\n", + "external.external.ravedr5_dr5\n", + "external.external.ravedr5_gra\n", + "external.external.ravedr5_on\n", + "external.external.sdssdr13_photoprimary\n", + "external.external.skymapperdr1_master\n", + "external.external.tmass_xsc\n", + "public.public.hipparcos\n", + "public.public.hipparcos_newreduction\n", + "public.public.hubble_sc\n", + "public.public.igsl_source\n", + "public.public.igsl_source_catalog_ids\n", + "public.public.tycho2\n", + "public.public.dual\n", + "tap_config.tap_config.coord_sys\n", + "tap_config.tap_config.properties\n", + "tap_schema.tap_schema.columns\n", + "tap_schema.tap_schema.key_columns\n", + "tap_schema.tap_schema.keys\n", + "tap_schema.tap_schema.schemas\n", + "tap_schema.tap_schema.tables\n", + "gaiadr1.gaiadr1.aux_qso_icrf2_match\n", + "gaiadr1.gaiadr1.ext_phot_zero_point\n", + "gaiadr1.gaiadr1.allwise_best_neighbour\n", + "gaiadr1.gaiadr1.allwise_neighbourhood\n", + "gaiadr1.gaiadr1.gsc23_best_neighbour\n", + "gaiadr1.gaiadr1.gsc23_neighbourhood\n", + "gaiadr1.gaiadr1.ppmxl_best_neighbour\n", + "gaiadr1.gaiadr1.ppmxl_neighbourhood\n", + "gaiadr1.gaiadr1.sdss_dr9_best_neighbour\n", + "gaiadr1.gaiadr1.sdss_dr9_neighbourhood\n", + "gaiadr1.gaiadr1.tmass_best_neighbour\n", + "gaiadr1.gaiadr1.tmass_neighbourhood\n", + "gaiadr1.gaiadr1.ucac4_best_neighbour\n", + "gaiadr1.gaiadr1.ucac4_neighbourhood\n", + "gaiadr1.gaiadr1.urat1_best_neighbour\n", + "gaiadr1.gaiadr1.urat1_neighbourhood\n", + "gaiadr1.gaiadr1.cepheid\n", + "gaiadr1.gaiadr1.phot_variable_time_series_gfov\n", + "gaiadr1.gaiadr1.phot_variable_time_series_gfov_statistical_parameters\n", + "gaiadr1.gaiadr1.rrlyrae\n", + "gaiadr1.gaiadr1.variable_summary\n", + "gaiadr1.gaiadr1.allwise_original_valid\n", + "gaiadr1.gaiadr1.gsc23_original_valid\n", + "gaiadr1.gaiadr1.ppmxl_original_valid\n", + "gaiadr1.gaiadr1.sdssdr9_original_valid\n", + "gaiadr1.gaiadr1.tmass_original_valid\n", + "gaiadr1.gaiadr1.ucac4_original_valid\n", + "gaiadr1.gaiadr1.urat1_original_valid\n", + "gaiadr1.gaiadr1.gaia_source\n", + "gaiadr1.gaiadr1.tgas_source\n", + "gaiadr2.gaiadr2.aux_allwise_agn_gdr2_cross_id\n", + "gaiadr2.gaiadr2.aux_iers_gdr2_cross_id\n", + "gaiadr2.gaiadr2.aux_sso_orbit_residuals\n", + "gaiadr2.gaiadr2.aux_sso_orbits\n", + "gaiadr2.gaiadr2.dr1_neighbourhood\n", + "gaiadr2.gaiadr2.allwise_best_neighbour\n", + "gaiadr2.gaiadr2.allwise_neighbourhood\n", + "gaiadr2.gaiadr2.apassdr9_best_neighbour\n", + "gaiadr2.gaiadr2.apassdr9_neighbourhood\n", + "gaiadr2.gaiadr2.gsc23_best_neighbour\n", + "gaiadr2.gaiadr2.gsc23_neighbourhood\n", + "gaiadr2.gaiadr2.hipparcos2_best_neighbour\n", + "gaiadr2.gaiadr2.hipparcos2_neighbourhood\n", + "gaiadr2.gaiadr2.panstarrs1_best_neighbour\n", + "gaiadr2.gaiadr2.panstarrs1_neighbourhood\n", + "gaiadr2.gaiadr2.ppmxl_best_neighbour\n", + "gaiadr2.gaiadr2.ppmxl_neighbourhood\n", + "gaiadr2.gaiadr2.ravedr5_best_neighbour\n", + "gaiadr2.gaiadr2.ravedr5_neighbourhood\n", + "gaiadr2.gaiadr2.sdssdr9_best_neighbour\n", + "gaiadr2.gaiadr2.sdssdr9_neighbourhood\n", + "gaiadr2.gaiadr2.tmass_best_neighbour\n", + "gaiadr2.gaiadr2.tmass_neighbourhood\n", + "gaiadr2.gaiadr2.tycho2_best_neighbour\n", + "gaiadr2.gaiadr2.tycho2_neighbourhood\n", + "gaiadr2.gaiadr2.urat1_best_neighbour\n", + "gaiadr2.gaiadr2.urat1_neighbourhood\n", + "gaiadr2.gaiadr2.sso_observation\n", + "gaiadr2.gaiadr2.sso_source\n", + "gaiadr2.gaiadr2.vari_cepheid\n", + "gaiadr2.gaiadr2.vari_classifier_class_definition\n", + "gaiadr2.gaiadr2.vari_classifier_definition\n", + "gaiadr2.gaiadr2.vari_classifier_result\n", + "gaiadr2.gaiadr2.vari_long_period_variable\n", + "gaiadr2.gaiadr2.vari_rotation_modulation\n", + "gaiadr2.gaiadr2.vari_rrlyrae\n", + "gaiadr2.gaiadr2.vari_short_timescale\n", + "gaiadr2.gaiadr2.vari_time_series_statistics\n", + "gaiadr2.gaiadr2.panstarrs1_original_valid\n", + "gaiadr2.gaiadr2.gaia_source\n", + "gaiadr2.gaiadr2.ruwe\n" + ] + } + ], + "source": [ + "for table in (tables):\n", + " print(table.get_qualified_name())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So that's a lot of tables. The ones we'll use are:\n", + "\n", + "* `gaiadr2.gaia_source`, which contains Gaia data from [data release 2](https://www.cosmos.esa.int/web/gaia/data-release-2),\n", + "\n", + "* `gaiadr2.panstarrs1_original_valid`, which contains the photometry data we'll use from PanSTARRS, and\n", + "\n", + "* `gaiadr2.panstarrs1_best_neighbour`, which we'll use to cross-match each star observed by Gaia with the same star observed by PanSTARRS.\n", + "\n", + "We can use `load_table` (not `load_tables`) to get the metadata for a single table. The name of this function is misleading, because it only downloads metadata. " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Retrieving table 'gaiadr2.gaia_source'\n", + "Parsing table 'gaiadr2.gaia_source'...\n", + "Done.\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "meta = Gaia.load_table('gaiadr2.gaia_source')\n", + "meta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jupyter shows that the result is an object of type `TapTableMeta`, but it does not display the contents.\n", + "\n", + "To see the metadata, we have to print the object." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TAP Table name: gaiadr2.gaiadr2.gaia_source\n", + "Description: This table has an entry for every Gaia observed source as listed in the\n", + "Main Database accumulating catalogue version from which the catalogue\n", + "release has been generated. It contains the basic source parameters,\n", + "that is only final data (no epoch data) and no spectra (neither final\n", + "nor epoch).\n", + "Num. columns: 96\n" + ] + } + ], + "source": [ + "print(meta)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice one gotcha: in the list of table names, this table appears as `gaiadr2.gaiadr2.gaia_source`, but when we load the metadata, we refer to it as `gaiadr2.gaia_source`.\n", + "\n", + "**Exercise:** Go back and try\n", + "\n", + "```\n", + "meta = Gaia.load_table('gaiadr2.gaiadr2.gaia_source')\n", + "```\n", + "\n", + "What happens? Is the error message helpful? If you had not made this error deliberately, would you have been able to figure it out?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Columns\n", + "\n", + "The following loop prints the names of the columns in the table." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "solution_id\n", + "designation\n", + "source_id\n", + "random_index\n", + "ref_epoch\n", + "ra\n", + "ra_error\n", + "dec\n", + "dec_error\n", + "parallax\n", + "parallax_error\n", + "parallax_over_error\n", + "pmra\n", + "pmra_error\n", + "pmdec\n", + "pmdec_error\n", + "ra_dec_corr\n", + "ra_parallax_corr\n", + "ra_pmra_corr\n", + "ra_pmdec_corr\n", + "dec_parallax_corr\n", + "dec_pmra_corr\n", + "dec_pmdec_corr\n", + "parallax_pmra_corr\n", + "parallax_pmdec_corr\n", + "pmra_pmdec_corr\n", + "astrometric_n_obs_al\n", + "astrometric_n_obs_ac\n", + "astrometric_n_good_obs_al\n", + "astrometric_n_bad_obs_al\n", + "astrometric_gof_al\n", + "astrometric_chi2_al\n", + "astrometric_excess_noise\n", + "astrometric_excess_noise_sig\n", + "astrometric_params_solved\n", + "astrometric_primary_flag\n", + "astrometric_weight_al\n", + "astrometric_pseudo_colour\n", + "astrometric_pseudo_colour_error\n", + "mean_varpi_factor_al\n", + "astrometric_matched_observations\n", + "visibility_periods_used\n", + "astrometric_sigma5d_max\n", + "frame_rotator_object_type\n", + "matched_observations\n", + "duplicated_source\n", + "phot_g_n_obs\n", + "phot_g_mean_flux\n", + "phot_g_mean_flux_error\n", + "phot_g_mean_flux_over_error\n", + "phot_g_mean_mag\n", + "phot_bp_n_obs\n", + "phot_bp_mean_flux\n", + "phot_bp_mean_flux_error\n", + "phot_bp_mean_flux_over_error\n", + "phot_bp_mean_mag\n", + "phot_rp_n_obs\n", + "phot_rp_mean_flux\n", + "phot_rp_mean_flux_error\n", + "phot_rp_mean_flux_over_error\n", + "phot_rp_mean_mag\n", + "phot_bp_rp_excess_factor\n", + "phot_proc_mode\n", + "bp_rp\n", + "bp_g\n", + "g_rp\n", + "radial_velocity\n", + "radial_velocity_error\n", + "rv_nb_transits\n", + "rv_template_teff\n", + "rv_template_logg\n", + "rv_template_fe_h\n", + "phot_variable_flag\n", + "l\n", + "b\n", + "ecl_lon\n", + "ecl_lat\n", + "priam_flags\n", + "teff_val\n", + "teff_percentile_lower\n", + "teff_percentile_upper\n", + "a_g_val\n", + "a_g_percentile_lower\n", + "a_g_percentile_upper\n", + "e_bp_min_rp_val\n", + "e_bp_min_rp_percentile_lower\n", + "e_bp_min_rp_percentile_upper\n", + "flame_flags\n", + "radius_val\n", + "radius_percentile_lower\n", + "radius_percentile_upper\n", + "lum_val\n", + "lum_percentile_lower\n", + "lum_percentile_upper\n", + "datalink_url\n", + "epoch_photometry_url\n" + ] + } + ], + "source": [ + "for column in meta.columns:\n", + " print(column.name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can probably guess what many of these columns are by looking at the names, but you should resist the temptation to guess.\n", + "To find out what the columns mean, [read the documentation](https://gea.esac.esa.int/archive/documentation/GDR2/Gaia_archive/chap_datamodel/sec_dm_main_tables/ssec_dm_gaia_source.html).\n", + "\n", + "If you want to know what can go wrong when you don't read the documentation, [you might like this article](https://www.vox.com/future-perfect/2019/6/4/18650969/married-women-miserable-fake-paul-dolan-happiness)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** One of the other tables we'll use is `gaiadr2.gaiadr2.panstarrs1_original_valid`. Use `load_table` to get the metadata for this table. How many columns are there and what are their names?\n", + "\n", + "Hint: Remember the gotcha we mentioned earlier." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Retrieving table 'gaiadr2.panstarrs1_original_valid'\n", + "Parsing table 'gaiadr2.panstarrs1_original_valid'...\n", + "Done.\n", + "TAP Table name: gaiadr2.gaiadr2.panstarrs1_original_valid\n", + "Description: The Panoramic Survey Telescope and Rapid Response System (Pan-STARRS) is\n", + "a system for wide-field astronomical imaging developed and operated by\n", + "the Institute for Astronomy at the University of Hawaii. Pan-STARRS1\n", + "(PS1) is the first part of Pan-STARRS to be completed and is the basis\n", + "for Data Release 1 (DR1). The PS1 survey used a 1.8 meter telescope and\n", + "its 1.4 Gigapixel camera to image the sky in five broadband filters (g,\n", + "r, i, z, y).\n", + "\n", + "The current table contains a filtered subsample of the 10 723 304 629\n", + "entries listed in the original ObjectThin table.\n", + "We used only ObjectThin and MeanObject tables to extract\n", + "panstarrs1OriginalValid table, this means that objects detected only in\n", + "stack images are not included here. The main reason for us to avoid the\n", + "use of objects detected in stack images is that their astrometry is not\n", + "as good as the mean objects astrometry: “The stack positions (raStack,\n", + "decStack) have considerably larger systematic astrometric errors than\n", + "the mean epoch positions (raMean, decMean).” The astrometry for the\n", + "MeanObject positions uses Gaia DR1 as a reference catalog, while the\n", + "stack positions use 2MASS as a reference catalog.\n", + "\n", + "In details, we filtered out all objects where:\n", + "\n", + "- nDetections = 1\n", + "\n", + "- no good quality data in Pan-STARRS, objInfoFlag 33554432 not set\n", + "\n", + "- mean astrometry could not be measured, objInfoFlag 524288 set\n", + "\n", + "- stack position used for mean astrometry, objInfoFlag 1048576 set\n", + "\n", + "- error on all magnitudes equal to 0 or to -999;\n", + "\n", + "- all magnitudes set to -999;\n", + "\n", + "- error on RA or DEC greater than 1 arcsec.\n", + "\n", + "The number of objects in panstarrs1OriginalValid is 2 264 263 282.\n", + "\n", + "The panstarrs1OriginalValid table contains only a subset of the columns\n", + "available in the combined ObjectThin and MeanObject tables. A\n", + "description of the original ObjectThin and MeanObjects tables can be\n", + "found at:\n", + "https://outerspace.stsci.edu/display/PANSTARRS/PS1+Database+object+and+detection+tables\n", + "\n", + "Download:\n", + "http://mastweb.stsci.edu/ps1casjobs/home.aspx\n", + "Documentation:\n", + "https://outerspace.stsci.edu/display/PANSTARRS\n", + "http://pswww.ifa.hawaii.edu/pswww/\n", + "References:\n", + "The Pan-STARRS1 Surveys, Chambers, K.C., et al. 2016, arXiv:1612.05560\n", + "Pan-STARRS Data Processing System, Magnier, E. A., et al. 2016,\n", + "arXiv:1612.05240\n", + "Pan-STARRS Pixel Processing: Detrending, Warping, Stacking, Waters, C.\n", + "Z., et al. 2016, arXiv:1612.05245\n", + "Pan-STARRS Pixel Analysis: Source Detection and Characterization,\n", + "Magnier, E. A., et al. 2016, arXiv:1612.05244\n", + "Pan-STARRS Photometric and Astrometric Calibration, Magnier, E. A., et\n", + "al. 2016, arXiv:1612.05242\n", + "The Pan-STARRS1 Database and Data Products, Flewelling, H. A., et al.\n", + "2016, arXiv:1612.05243\n", + "\n", + "Catalogue curator:\n", + "SSDC - ASI Space Science Data Center\n", + "https://www.ssdc.asi.it/\n", + "Num. columns: 26\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "meta2 = Gaia.load_table('gaiadr2.panstarrs1_original_valid')\n", + "print(meta2)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "obj_name\n", + "obj_id\n", + "ra\n", + "dec\n", + "ra_error\n", + "dec_error\n", + "epoch_mean\n", + "g_mean_psf_mag\n", + "g_mean_psf_mag_error\n", + "g_flags\n", + "r_mean_psf_mag\n", + "r_mean_psf_mag_error\n", + "r_flags\n", + "i_mean_psf_mag\n", + "i_mean_psf_mag_error\n", + "i_flags\n", + "z_mean_psf_mag\n", + "z_mean_psf_mag_error\n", + "z_flags\n", + "y_mean_psf_mag\n", + "y_mean_psf_mag_error\n", + "y_flags\n", + "n_detections\n", + "zone_id\n", + "obj_info_flag\n", + "quality_flag\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "for column in meta2.columns:\n", + " print(column.name)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Writing queries\n", + "\n", + "By now you might be wondering how we actually download the data. With tables this big, you generally don't. Instead, you use queries to select only the data you want.\n", + "\n", + "A query is a string written in a query language like SQL; for the Gaia database, the query language is a dialect of SQL called ADQL.\n", + "\n", + "Here's an example of an ADQL query." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "query1 = \"\"\"SELECT \n", + "TOP 10\n", + "source_id, ref_epoch, ra, dec, parallax \n", + "FROM gaiadr2.gaia_source\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Python note:** We use a [triple-quoted string](https://docs.python.org/3/tutorial/introduction.html#strings) here so we can include line breaks in the query, which makes it easier to read.\n", + "\n", + "The words in uppercase are ADQL keywords:\n", + "\n", + "* `SELECT` indicates that we are selecting data (as opposed to adding or modifying data).\n", + "\n", + "* `TOP` indicates that we only want the first 10 rows of the table, which is useful for testing a query before asking for all of the data.\n", + "\n", + "* `FROM` specifies which table we want data from.\n", + "\n", + "The third line is a list of column names, indicating which columns we want. \n", + "\n", + "In this example, the keywords are capitalized and the column names are lowercase. This is a common style, but it is not required. ADQL and SQL are not case-sensitive." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To run this query, we use the `Gaia` object, which represents our connection to the Gaia database, and invoke `launch_job`:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "job1 = Gaia.launch_job(query1)\n", + "job1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is an object that represents the job running on a Gaia server.\n", + "\n", + "If you print it, it displays metadata for the forthcoming table." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "
\n", + " name dtype unit description \n", + "--------- ------- ---- ------------------------------------------------------------------\n", + "source_id int64 Unique source identifier (unique within a particular Data Release)\n", + "ref_epoch float64 yr Reference epoch\n", + " ra float64 deg Right ascension\n", + " dec float64 deg Declination\n", + " parallax float64 mas Parallax\n", + "Jobid: None\n", + "Phase: COMPLETED\n", + "Owner: None\n", + "Output file: sync_20201005090721.xml.gz\n", + "Results: None\n" + ] + } + ], + "source": [ + "print(job1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Don't worry about `Results: None`. That does not actually mean there are no results.\n", + "\n", + "However, `Phase: COMPLETED` indicates that the job is complete, so we can get the results like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.table.table.Table" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results1 = job1.get_results()\n", + "type(results1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Optional detail:** Why is `table` repeated three times? The first is the name of the module, the second is the name of the submodule, and the third is the name of the class. Most of the time we only care about the last one. It's like the Linnean name for gorilla, which is *Gorilla Gorilla Gorilla*." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is an [Astropy Table](https://docs.astropy.org/en/stable/table/), which is similar to a table in an SQL database except:\n", + "\n", + "* SQL databases are stored on disk drives, so they are persistent; that is, they \"survive\" even if you turn off the computer. An Astropy `Table` is stored in memory; it disappears when you turn off the computer (or shut down this Jupyter notebook).\n", + "\n", + "* SQL databases are designed to process queries. An Astropy `Table` can perform some query-like operations, like selecting columns and rows. But these operations use Python syntax, not SQL.\n", + "\n", + "Jupyter knows how to display the contents of a `Table`." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Table length=10\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_idref_epochradecparallax
yrdegdegmas
int64float64float64float64float64
45307383617937696002015.5281.5672536244872520.406821174303780.9785380604519425
45307526511350812162015.5281.086156535525720.5233504963518460.2674800612552977
45307433439514055682015.5281.3711441829917720.474147574053124-0.43911323550176806
45307550606271623682015.5281.267623626829920.5585239223461581.1422630184554958
45307468443413159682015.5281.137043174954120.3778523888981841.0092247424630945
45307684566150264322015.5281.872092143634720.31829694530366-0.06900136127674149
45307635131191372802015.5281.921180886411620.209568295785240.1266016679823622
45307363646185392642015.5281.491347561327420.3465790413276930.3894019486060072
45307359523051777282015.5281.408554916570420.3110309037199280.2041189982608354
45307512810560226562015.5281.058532837763820.4603095562147530.10294642821734962
" + ], + "text/plain": [ + "\n", + " source_id ref_epoch ... dec parallax \n", + " yr ... deg mas \n", + " int64 float64 ... float64 float64 \n", + "------------------- --------- ... ------------------ --------------------\n", + "4530738361793769600 2015.5 ... 20.40682117430378 0.9785380604519425\n", + "4530752651135081216 2015.5 ... 20.523350496351846 0.2674800612552977\n", + "4530743343951405568 2015.5 ... 20.474147574053124 -0.43911323550176806\n", + "4530755060627162368 2015.5 ... 20.558523922346158 1.1422630184554958\n", + "4530746844341315968 2015.5 ... 20.377852388898184 1.0092247424630945\n", + "4530768456615026432 2015.5 ... 20.31829694530366 -0.06900136127674149\n", + "4530763513119137280 2015.5 ... 20.20956829578524 0.1266016679823622\n", + "4530736364618539264 2015.5 ... 20.346579041327693 0.3894019486060072\n", + "4530735952305177728 2015.5 ... 20.311030903719928 0.2041189982608354\n", + "4530751281056022656 2015.5 ... 20.460309556214753 0.10294642821734962" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each column has a name, units, and a data type.\n", + "\n", + "For example, the units of `ra` and `dec` are degrees, and their data type is `float64`, which is a 64-bit floating-point number, used to store measurements with a fraction part.\n", + "\n", + "This information comes from the Gaia database, and has been stored in the Astropy `Table` by Astroquery." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** Read [the documentation of this table](https://gea.esac.esa.int/archive/documentation/GDR2/Gaia_archive/chap_datamodel/sec_dm_main_tables/ssec_dm_gaia_source.html) and choose a column that looks interesting to you. Add the column name to the query and run it again. What are the units of the column you selected? What is its data type?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Asynchronous queries\n", + "\n", + "`launch_job` asks the server to run the job \"synchronously\", which normally means it runs immediately. But synchronous jobs are limited to 2000 rows. For queries that return more rows, you should run \"asynchronously\", which mean they might take longer to get started.\n", + "\n", + "If you are not sure how many rows a query will return, you can use the SQL command `COUNT` to find out how many rows are in the result without actually returning them. We'll see an example of this later.\n", + "\n", + "The results of an asynchronous query are stored in a file on the server, so you can start a query and come back later to get the results.\n", + "\n", + "For anonymous users, files are kept for three days.\n", + "\n", + "As an example, let's try a query that's similar to `query1`, with two changes:\n", + "\n", + "* It selects the first 3000 rows, so it is bigger than we should run synchronously.\n", + "\n", + "* It uses a new keyword, `WHERE`." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "query2 = \"\"\"SELECT TOP 3000\n", + "source_id, ref_epoch, ra, dec, parallax\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A `WHERE` clause indicates which rows we want; in this case, the query selects only rows \"where\" `parallax` is less than 1. This has the effect of selecting stars with relatively low parallax, which are farther away. We'll use this clause to exclude nearby stars that are unlikely to be part of GD-1.\n", + "\n", + "`WHERE` is one of the most common clauses in ADQL/SQL, and one of the most useful, because it allows us to select only the rows we need from the database.\n", + "\n", + "We use `launch_job_async` to submit an asynchronous query." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO: Query finished. [astroquery.utils.tap.core]\n", + "
\n", + " name dtype unit description \n", + "--------- ------- ---- ------------------------------------------------------------------\n", + "source_id int64 Unique source identifier (unique within a particular Data Release)\n", + "ref_epoch float64 yr Reference epoch\n", + " ra float64 deg Right ascension\n", + " dec float64 deg Declination\n", + " parallax float64 mas Parallax\n", + "Jobid: 1601903242219O\n", + "Phase: COMPLETED\n", + "Owner: None\n", + "Output file: async_20201005090722.vot\n", + "Results: None\n" + ] + } + ], + "source": [ + "job2 = Gaia.launch_job_async(query2)\n", + "print(job2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here are the results." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Table length=3000\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_idref_epochradecparallax
yrdegdegmas
int64float64float64float64float64
45307383617937696002015.5281.5672536244872520.406821174303780.9785380604519425
45307526511350812162015.5281.086156535525720.5233504963518460.2674800612552977
45307433439514055682015.5281.3711441829917720.474147574053124-0.43911323550176806
45307684566150264322015.5281.872092143634720.31829694530366-0.06900136127674149
45307635131191372802015.5281.921180886411620.209568295785240.1266016679823622
45307363646185392642015.5281.491347561327420.3465790413276930.3894019486060072
45307359523051777282015.5281.408554916570420.3110309037199280.2041189982608354
45307512810560226562015.5281.058532837763820.4603095562147530.10294642821734962
45307409387744093442015.5281.376256953641620.4361400589412060.9242670062090182
...............
44677109150118026242015.5269.96809693073471.14290850381608820.42361471245557913
44677065513286795522015.5270.0331645898811.05657473236899270.922888231734588
44677122550373000962015.5270.77247179230470.6581664892880896-2.669179465293931
44677350011817617922015.5270.36286062483080.89470793235991240.6117399163086398
44677371014219166722015.5270.51108346614440.9806225910160181-0.39818224846127004
44677075477573274882015.5269.887462805949271.02127599401369620.7741412301054209
44677327720945730562015.5270.559971827601260.9037072088489417-1.7920417800164183
44677323554910877442015.5270.67307907024910.9197224705139885-0.3464446494840354
44677170997669445122015.5270.576671731208250.7262776590095680.05443955111134051
44677190582657812482015.5270.72480529715140.82055519217827850.3733943917490343
" + ], + "text/plain": [ + "\n", + " source_id ref_epoch ... dec parallax \n", + " yr ... deg mas \n", + " int64 float64 ... float64 float64 \n", + "------------------- --------- ... ------------------ --------------------\n", + "4530738361793769600 2015.5 ... 20.40682117430378 0.9785380604519425\n", + "4530752651135081216 2015.5 ... 20.523350496351846 0.2674800612552977\n", + "4530743343951405568 2015.5 ... 20.474147574053124 -0.43911323550176806\n", + "4530768456615026432 2015.5 ... 20.31829694530366 -0.06900136127674149\n", + "4530763513119137280 2015.5 ... 20.20956829578524 0.1266016679823622\n", + "4530736364618539264 2015.5 ... 20.346579041327693 0.3894019486060072\n", + "4530735952305177728 2015.5 ... 20.311030903719928 0.2041189982608354\n", + "4530751281056022656 2015.5 ... 20.460309556214753 0.10294642821734962\n", + "4530740938774409344 2015.5 ... 20.436140058941206 0.9242670062090182\n", + " ... ... ... ... ...\n", + "4467710915011802624 2015.5 ... 1.1429085038160882 0.42361471245557913\n", + "4467706551328679552 2015.5 ... 1.0565747323689927 0.922888231734588\n", + "4467712255037300096 2015.5 ... 0.6581664892880896 -2.669179465293931\n", + "4467735001181761792 2015.5 ... 0.8947079323599124 0.6117399163086398\n", + "4467737101421916672 2015.5 ... 0.9806225910160181 -0.39818224846127004\n", + "4467707547757327488 2015.5 ... 1.0212759940136962 0.7741412301054209\n", + "4467732772094573056 2015.5 ... 0.9037072088489417 -1.7920417800164183\n", + "4467732355491087744 2015.5 ... 0.9197224705139885 -0.3464446494840354\n", + "4467717099766944512 2015.5 ... 0.726277659009568 0.05443955111134051\n", + "4467719058265781248 2015.5 ... 0.8205551921782785 0.3733943917490343" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results2 = job2.get_results()\n", + "results2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You might notice that some values of `parallax` are negative. As [this FAQ explains](https://www.cosmos.esa.int/web/gaia/archive-tips#negative%20parallax), \"Negative parallaxes are caused by errors in the observations.\" Negative parallaxes have \"no physical meaning,\" but they can be a \"useful diagnostic on the quality of the astrometric solution.\"\n", + "\n", + "Later we will see an example where we use `parallax` and `parallax_error` to identify stars where the distance estimate is likely to be inaccurate." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** The clauses in a query have to be in the right order. Go back and change the order of the clauses in `query2` and run it again. \n", + "\n", + "The query should fail, but notice that you don't get much useful debugging information. \n", + "\n", + "For this reason, developing and debugging ADQL queries can be really hard. A few suggestions that might help:\n", + "\n", + "* Whenever possible, start with a working query, either an example you find online or a query you have used in the past.\n", + "\n", + "* Make small changes and test each change before you continue.\n", + "\n", + "* While you are debugging, use `TOP` to limit the number of rows in the result. That will make each attempt run faster, which reduces your testing time. \n", + "\n", + "* Launching test queries synchronously might make them start faster, too." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Operators\n", + "\n", + "In a `WHERE` clause, you can use any of the [SQL comparison operators](https://www.w3schools.com/sql/sql_operators.asp):\n", + "\n", + "* `>`: greater than\n", + "* `<`: less than\n", + "* `>=`: greater than or equal\n", + "* `<=`: less than or equal\n", + "* `=`: equal\n", + "* `!=` or `<>`: not equal\n", + "\n", + "Most of these are the same as Python, but some are not. In particular, notice that the equality operator is `=`, not `==`.\n", + "Be careful to keep your Python out of your ADQL!\n", + "\n", + "You can combine comparisons using the logical operators:\n", + "\n", + "* AND: true if both comparisons are true\n", + "* OR: true if either or both comparisons are true\n", + "\n", + "Finally, you can use `NOT` to invert the result of a comparison. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** [Read about SQL operators here](https://www.w3schools.com/sql/sql_operators.asp) and then modify the previous query to select rows where `bp_rp` is between `-0.75` and `2`.\n", + "\n", + "You can [read about this variable here](https://gea.esac.esa.int/archive/documentation/GDR2/Gaia_archive/chap_datamodel/sec_dm_main_tables/ssec_dm_gaia_source.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "# This is what most people will probably do\n", + "\n", + "query = \"\"\"SELECT TOP 10\n", + "source_id, ref_epoch, ra, dec, parallax\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1 \n", + " AND bp_rp > -0.75 AND bp_rp < 2\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "# But if someone notices the BETWEEN operator, \n", + "# they might do this\n", + "\n", + "query = \"\"\"SELECT TOP 10\n", + "source_id, ref_epoch, ra, dec, parallax\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1 \n", + " AND bp_rp BETWEEN -0.75 AND 2\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This [Hertzsprung-Russell diagram](https://sci.esa.int/web/gaia/-/60198-gaia-hertzsprung-russell-diagram) shows the BP-RP color and luminosity of stars in the Gaia catalog.\n", + "\n", + "Selecting stars with `bp-rp` less than 2 excludes many [class M dwarf stars](https://xkcd.com/2360/), which are low temperature, low luminosity. A star like that at GD-1's distance would be hard to detect, so if it is detected, it it more likely to be in the foreground." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cleaning up\n", + "\n", + "Asynchronous jobs have a `jobid`." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(None, '1601903242219O')" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "job1.jobid, job2.jobid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Which you can use to remove the job from the server." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Removed jobs: '['1601903242219O']'.\n" + ] + } + ], + "source": [ + "Gaia.remove_jobs([job2.jobid])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you don't remove it job from the server, it will be removed eventually, so don't feel too bad if you don't clean up after yourself." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Formatting queries\n", + "\n", + "So far the queries have been string \"literals\", meaning that the entire string is part of the program.\n", + "But writing queries yourself can be slow, repetitive, and error-prone.\n", + "\n", + "It is often a good idea to write Python code that assembles a query for you. One useful tool for that is the [string `format` method](https://www.w3schools.com/python/ref_string_format.asp).\n", + "\n", + "As an example, we'll divide the previous query into two parts; a list of column names and a \"base\" for the query that contains everything except the column names.\n", + "\n", + "Here's the list of columns we'll select. " + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "columns = 'source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's the base; it's a string that contains at least one format specifier in curly brackets (braces)." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "query3_base = \"\"\"SELECT TOP 10 \n", + "{columns}\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This base query contains one format specifier, `{columns}`, which is a placeholder for the list of column names we will provide.\n", + "\n", + "To assemble the query, we invoke `format` on the base string and provide a keyword argument that assigns a value to `columns`." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "query3 = query3_base.format(columns=columns)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a string with line breaks. If you display it, the line breaks appear as `\\n`." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'SELECT TOP 10 \\nsource_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\\nFROM gaiadr2.gaia_source\\nWHERE parallax < 1\\n AND bp_rp BETWEEN -0.75 AND 2\\n'" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "query3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But if you print it, the line breaks appear as... line breaks." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SELECT TOP 10 \n", + "source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2\n", + "\n" + ] + } + ], + "source": [ + "print(query3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that the format specifier has been replaced with the value of `columns`.\n", + "\n", + "Let's run it and see if it works:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "
\n", + " name dtype unit description n_bad\n", + "--------------- ------- -------- ------------------------------------------------------------------ -----\n", + " source_id int64 Unique source identifier (unique within a particular Data Release) 0\n", + " ra float64 deg Right ascension 0\n", + " dec float64 deg Declination 0\n", + " pmra float64 mas / yr Proper motion in right ascension direction 0\n", + " pmdec float64 mas / yr Proper motion in declination direction 0\n", + " parallax float64 mas Parallax 0\n", + " parallax_error float64 mas Standard error of parallax 0\n", + "radial_velocity float64 km / s Radial velocity 10\n", + "Jobid: None\n", + "Phase: COMPLETED\n", + "Owner: None\n", + "Output file: sync_20201005090726.xml.gz\n", + "Results: None\n" + ] + } + ], + "source": [ + "job3 = Gaia.launch_job(query3)\n", + "print(job3)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Table length=10\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_idradecpmrapmdecparallaxparallax_errorradial_velocity
degdegmas / yrmas / yrmasmaskm / s
int64float64float64float64float64float64float64float64
4467710915011802624269.96809693073471.14290850381608822.0233280236600626-2.56924278755102660.423614712455579130.470352406647465--
4467706551328679552270.0331645898811.0565747323689927-3.414829591355289-3.84372158574957370.9228882317345880.927008559859825--
4467712255037300096270.77247179230470.6581664892880896-3.5620173752896025-6.595792323153987-2.6691794652939310.9719742773203504--
4467735001181761792270.36286062483080.89470793235991242.13070799264892050.88267277109107120.61173991630863980.509812721702093--
4467737101421916672270.51108346614440.98062259101601810.17532366511560785-5.113270239706202-0.398182248461270040.7549581886719651--
4467707547757327488269.887462805949271.0212759940136962-2.6382230817672987-3.7077765320492870.77414123010542090.3022057897812064--
4467732355491087744270.67307907024910.9197224705139885-2.2735991502653037-11.864952855984358-0.34644464948403540.4937921513912002--
4467717099766944512270.576671731208250.726277659009568-3.4598362614808367-4.6014268933659210.054439551111340510.8867339293525688--
4467719058265781248270.72480529715140.8205551921782785-3.255079498426542-9.2492850691110850.37339439174903430.390952370410666--
4467722326741572352270.874312918885040.85955659758691580.106963983518598261.2035993780158853-0.118509434328643730.1660452431882023--
" + ], + "text/plain": [ + "\n", + " source_id ra ... parallax_error radial_velocity\n", + " deg ... mas km / s \n", + " int64 float64 ... float64 float64 \n", + "------------------- ------------------ ... ------------------ ---------------\n", + "4467710915011802624 269.9680969307347 ... 0.470352406647465 --\n", + "4467706551328679552 270.033164589881 ... 0.927008559859825 --\n", + "4467712255037300096 270.7724717923047 ... 0.9719742773203504 --\n", + "4467735001181761792 270.3628606248308 ... 0.509812721702093 --\n", + "4467737101421916672 270.5110834661444 ... 0.7549581886719651 --\n", + "4467707547757327488 269.88746280594927 ... 0.3022057897812064 --\n", + "4467732355491087744 270.6730790702491 ... 0.4937921513912002 --\n", + "4467717099766944512 270.57667173120825 ... 0.8867339293525688 --\n", + "4467719058265781248 270.7248052971514 ... 0.390952370410666 --\n", + "4467722326741572352 270.87431291888504 ... 0.1660452431882023 --" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results3 = job3.get_results()\n", + "results3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Good so far." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** This query always selects sources with `parallax` less than 1. But suppose you want to take that upper bound as an input.\n", + "\n", + "Modify `query3_base` to replace `1` with a format specifier like `{max_parallax}`. Now, when you call `format`, add a keyword argument that assigns a value to `max_parallax`, and confirm that the format specifier gets replaced with the value you provide." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "# Solution\n", + "\n", + "query4_base = \"\"\"SELECT TOP 10\n", + "{columns}\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < {max_parallax} AND \n", + "bp_rp BETWEEN -0.75 AND 2\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SELECT TOP 10\n", + "source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 0.5 AND \n", + "bp_rp BETWEEN -0.75 AND 2\n", + "\n" + ] + } + ], + "source": [ + "# Solution\n", + "\n", + "query4 = query4_base.format(columns=columns,\n", + " max_parallax=0.5)\n", + "print(query)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Style note:** You might notice that the variable names in this notebook are numbered, like `query1`, `query2`, etc. \n", + "\n", + "The advantage of this style is that it isolates each section of the notebook from the others, so if you go back and run the cells out of order, it's less likely that you will get unexpected interactions.\n", + "\n", + "A drawback of this style is that it can be a nuisance to update the notebook if you add, remove, or reorder a section.\n", + "\n", + "What do you think of this choice? Are there alternatives you prefer?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "This notebook demonstrates the following steps:\n", + "\n", + "1. Making a connection to the Gaia server,\n", + "\n", + "2. Exploring information about the database and the tables it contains,\n", + "\n", + "3. Writing a query and sending it to the server, and finally\n", + "\n", + "4. Downloading the response from the server as an Astropy `Table`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Best practices\n", + "\n", + "* If you can't download an entire dataset (or it's not practical) use queries to select the data you need.\n", + "\n", + "* Read the metadata and the documentation to make sure you understand the tables, their columns, and what they mean.\n", + "\n", + "* Develop queries incrementally: start with something simple, test it, and add a little bit at a time.\n", + "\n", + "* Use ADQL features like `TOP` and `COUNT` to test before you run a query that might return a lot of data.\n", + "\n", + "* If you know your query will return fewer than 3000 rows, you can run it synchronously, which might complete faster (but it doesn't seem to make much difference). If it might return more than 3000 rows, you should run it asynchronously.\n", + "\n", + "* ADQL and SQL are not case-sensitive, so you don't have to capitalize the keywords, but you should.\n", + "\n", + "* ADQL and SQL don't require you to break a query into multiple lines, but you should.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jupyter notebooks can be good for developing and testing code, but they have some drawbacks. In particular, if you run the cells out of order, you might find that variables don't have the values you expect.\n", + "\n", + "There are a few things you can do to mitigate these problems:\n", + "\n", + "* Make each section of the notebook self-contained. Try not to use the same variable name in more than one section.\n", + "\n", + "* Keep notebooks short. Look for places where you can break your analysis into phases with one notebook per phase." + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/_sources/AstronomicalData/_build/jupyter_execute/02_coords.ipynb b/_sources/AstronomicalData/_build/jupyter_execute/02_coords.ipynb new file mode 100644 index 0000000..7707176 --- /dev/null +++ b/_sources/AstronomicalData/_build/jupyter_execute/02_coords.ipynb @@ -0,0 +1,1966 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lesson 2\n", + "\n", + "This is the second in a series of lessons related to astronomy data.\n", + "\n", + "As a running example, we are replicating parts of the analysis in a recent paper, \"[Off the beaten path: Gaia reveals GD-1 stars outside of the main stream](https://arxiv.org/abs/1805.00425)\" by Adrian M. Price-Whelan and Ana Bonaca.\n", + "\n", + "In the first notebook, we wrote ADQL queries and used them to select and download data from the Gaia server.\n", + "\n", + "In this notebook, we'll pick up where we left off and write a query to select stars from the region of the sky where we expect GD-1 to be." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll start with an example that does a \"cone search\"; that is, it selects stars that appear in a circular region of the sky.\n", + "\n", + "Then, to select stars in the vicinity of GD-1, we'll:\n", + "\n", + "* Use `Quantity` objects to represent measurements with units.\n", + "\n", + "* Use the `Gala` library to convert coordinates from one frame to another.\n", + "\n", + "* Use the ADQL keywords `POLYGON`, `CONTAINS`, and `POINT` to select stars that fall within a polygonal region.\n", + "\n", + "* Submit a query and download the results.\n", + "\n", + "* Store the results in a FITS file.\n", + "\n", + "After completing this lesson, you should be able to\n", + "\n", + "* Use Python string formatting to compose more complex ADQL queries.\n", + "\n", + "* Work with coordinates and other quantities that have units.\n", + "\n", + "* Download the results of a query and store them in a file." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing libraries\n", + "\n", + "If you are running this notebook on Colab, you can run the following cell to install Astroquery and a the other libraries we'll use.\n", + "\n", + "If you are running this notebook on your own computer, you might have to install these libraries yourself. \n", + "\n", + "If you are using this notebook as part of a Carpentries workshop, you should have received setup instructions.\n", + "\n", + "TODO: Add a link to the instructions.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# If we're running on Colab, install libraries\n", + "\n", + "import sys\n", + "IN_COLAB = 'google.colab' in sys.modules\n", + "\n", + "if IN_COLAB:\n", + " !pip install astroquery astro-gala pyia" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting a region" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One of the most common ways to restrict a query is to select stars in a particular region of the sky.\n", + "\n", + "For example, here's a query from the [Gaia archive documentation](https://gea.esac.esa.int/archive-help/adql/examples/index.html) that selects \"all the objects ... in a circular region centered at (266.41683, -29.00781) with a search radius of 5 arcmin (0.08333 deg).\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "query = \"\"\"\n", + "SELECT \n", + "TOP 10 source_id\n", + "FROM gaiadr2.gaia_source\n", + "WHERE 1=CONTAINS(\n", + " POINT(ra, dec),\n", + " CIRCLE(266.41683, -29.00781, 0.08333333))\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This query uses three keywords that are specific to ADQL (not SQL):\n", + "\n", + "* `POINT`: a location in [ICRS coordinates](https://en.wikipedia.org/wiki/International_Celestial_Reference_System), specified in degrees of right ascension and declination.\n", + "\n", + "* `CIRCLE`: a circle where the first two values are the coordinates of the center and the third is the radius in degrees.\n", + "\n", + "* `CONTAINS`: a function that returns `1` if a `POINT` is contained in a shape and `0` otherwise.\n", + "\n", + "Here is the [documentation of `CONTAINS`](http://www.ivoa.net/documents/ADQL/20180112/PR-ADQL-2.1-20180112.html#tth_sEc4.2.12).\n", + "\n", + "A query like this is called a cone search because it selects stars in a cone.\n", + "\n", + "Here's how we run it." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: gea.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n", + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: geadata.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n" + ] + }, + { + "data": { + "text/html": [ + "Table length=10\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
source_id
int64
4057468321929794432
4057468287575835392
4057482027171038976
4057470349160630656
4057470039924301696
4057469868125641984
4057468351995073024
4057469661959554560
4057470520960672640
4057470555320409600
" + ], + "text/plain": [ + "\n", + " source_id \n", + " int64 \n", + "-------------------\n", + "4057468321929794432\n", + "4057468287575835392\n", + "4057482027171038976\n", + "4057470349160630656\n", + "4057470039924301696\n", + "4057469868125641984\n", + "4057468351995073024\n", + "4057469661959554560\n", + "4057470520960672640\n", + "4057470555320409600" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from astroquery.gaia import Gaia\n", + "\n", + "job = Gaia.launch_job(query)\n", + "result = job.get_results()\n", + "result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Exercise:** When you are debugging queries like this, you can use `TOP` to limit the size of the results, but then you still don't know how big the results will be.\n", + "\n", + "An alternative is to use `COUNT`, which asks for the number of rows that would be selected, but it does not return them.\n", + "\n", + "In the previous query, replace `TOP 10 source_id` with `COUNT(source_id)` and run the query again. How many stars has Gaia identified in the cone we searched?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Getting GD-1 Data\n", + "\n", + "From the Price-Whelan and Bonaca paper, we will try to reproduce Figure 1, which includes this representation of stars likely to belong to GD-1:\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Along the axis of right ascension ($\\phi_1$) the figure extends from -100 to 20 degrees.\n", + "\n", + "Along the axis of declination ($\\phi_2$) the figure extends from about -8 to 4 degrees.\n", + "\n", + "Ideally, we would select all stars from this rectangle, but there are more than 10 million of them, so\n", + "\n", + "* That would be difficult to work with,\n", + "\n", + "* As anonymous users, we are limited to 3 million rows in a single query, and\n", + "\n", + "* While we are developing and testing code, it will be faster to work with a smaller dataset.\n", + "\n", + "So we'll start by selecting stars in a smaller rectangle, from -55 to -45 degrees right ascension and -8 to 4 degrees of declination.\n", + "\n", + "But first we let's see how to represent quantities with units like degrees." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Working with coordinates\n", + "\n", + "Coordinates are physical quantities, which means that they have two parts, a value and a unit.\n", + "\n", + "For example, the coordinate $30^{\\circ}$ has value 30 and its units are degrees.\n", + "\n", + "Until recently, most scientific computation was done with values only; units were left out of the program altogether, [often with disastrous results](https://en.wikipedia.org/wiki/Mars_Climate_Orbiter#Cause_of_failure).\n", + "\n", + "Astropy provides tools for including units explicitly in computations, which makes it possible to detect errors before they cause disasters.\n", + "\n", + "To use Astropy units, we import them like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import astropy.units as u\n", + "\n", + "u" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`u` is an object that contains most common units and all SI units.\n", + "\n", + "You can use `dir` to list them, but you should also [read the documentation](https://docs.astropy.org/en/stable/units/)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['A',\n", + " 'AA',\n", + " 'AB',\n", + " 'ABflux',\n", + " 'ABmag',\n", + " 'AU',\n", + " 'Angstrom',\n", + " 'B',\n", + " 'Ba',\n", + " 'Barye',\n", + " 'Bi',\n", + " 'Biot',\n", + " 'Bol',\n", + " 'Bq',\n", + " 'C',\n", + " 'Celsius',\n", + " 'Ci',\n", + " 'CompositeUnit',\n", + " 'D',\n", + " 'Da',\n", + " 'Dalton',\n", + " 'Debye',\n", + " 'Decibel',\n", + " 'DecibelUnit',\n", + " 'Dex',\n", + " 'DexUnit',\n", + " 'EA',\n", + " 'EAU',\n", + " 'EB',\n", + " 'EBa',\n", + " 'EC',\n", + " 'ED',\n", + " 'EF',\n", + " 'EG',\n", + " 'EGal',\n", + " 'EH',\n", + " 'EHz',\n", + " 'EJ',\n", + " 'EJy',\n", + " 'EK',\n", + " 'EL',\n", + " 'EN',\n", + " 'EOhm',\n", + " 'EP',\n", + " 'EPa',\n", + " 'ER',\n", + " 'ERy',\n", + " 'ES',\n", + " 'ESt',\n", + " 'ET',\n", + " 'EV',\n", + " 'EW',\n", + " 'EWb',\n", + " 'Ea',\n", + " 'Eadu',\n", + " 'Earcmin',\n", + " 'Earcsec',\n", + " 'Eau',\n", + " 'Eb',\n", + " 'Ebarn',\n", + " 'Ebeam',\n", + " 'Ebin',\n", + " 'Ebit',\n", + " 'Ebyte',\n", + " 'Ecd',\n", + " 'Echan',\n", + " 'Ecount',\n", + " 'Ect',\n", + " 'Ed',\n", + " 'Edeg',\n", + " 'Edyn',\n", + " 'EeV',\n", + " 'Eerg',\n", + " 'Eg',\n", + " 'Eh',\n", + " 'EiB',\n", + " 'Eib',\n", + " 'Eibit',\n", + " 'Eibyte',\n", + " 'Ek',\n", + " 'El',\n", + " 'Elm',\n", + " 'Elx',\n", + " 'Elyr',\n", + " 'Em',\n", + " 'Emag',\n", + " 'Emin',\n", + " 'Emol',\n", + " 'Eohm',\n", + " 'Epc',\n", + " 'Eph',\n", + " 'Ephoton',\n", + " 'Epix',\n", + " 'Epixel',\n", + " 'Erad',\n", + " 'Es',\n", + " 'Esr',\n", + " 'Eu',\n", + " 'Evox',\n", + " 'Evoxel',\n", + " 'Eyr',\n", + " 'F',\n", + " 'Farad',\n", + " 'Fr',\n", + " 'Franklin',\n", + " 'FunctionQuantity',\n", + " 'FunctionUnitBase',\n", + " 'G',\n", + " 'GA',\n", + " 'GAU',\n", + " 'GB',\n", + " 'GBa',\n", + " 'GC',\n", + " 'GD',\n", + " 'GF',\n", + " 'GG',\n", + " 'GGal',\n", + " 'GH',\n", + " 'GHz',\n", + " 'GJ',\n", + " 'GJy',\n", + " 'GK',\n", + " 'GL',\n", + " 'GN',\n", + " 'GOhm',\n", + " 'GP',\n", + " 'GPa',\n", + " 'GR',\n", + " 'GRy',\n", + " 'GS',\n", + " 'GSt',\n", + " 'GT',\n", + " 'GV',\n", + " 'GW',\n", + " 'GWb',\n", + " 'Ga',\n", + " 'Gadu',\n", + " 'Gal',\n", + " 'Garcmin',\n", + " 'Garcsec',\n", + " 'Gau',\n", + " 'Gauss',\n", + " 'Gb',\n", + " 'Gbarn',\n", + " 'Gbeam',\n", + " 'Gbin',\n", + " 'Gbit',\n", + " 'Gbyte',\n", + " 'Gcd',\n", + " 'Gchan',\n", + " 'Gcount',\n", + " 'Gct',\n", + " 'Gd',\n", + " 'Gdeg',\n", + " 'Gdyn',\n", + " 'GeV',\n", + " 'Gerg',\n", + " 'Gg',\n", + " 'Gh',\n", + " 'GiB',\n", + " 'Gib',\n", + " 'Gibit',\n", + " 'Gibyte',\n", + " 'Gk',\n", + " 'Gl',\n", + " 'Glm',\n", + " 'Glx',\n", + " 'Glyr',\n", + " 'Gm',\n", + " 'Gmag',\n", + " 'Gmin',\n", + " 'Gmol',\n", + " 'Gohm',\n", + " 'Gpc',\n", + " 'Gph',\n", + " 'Gphoton',\n", + " 'Gpix',\n", + " 'Gpixel',\n", + " 'Grad',\n", + " 'Gs',\n", + " 'Gsr',\n", + " 'Gu',\n", + " 'Gvox',\n", + " 'Gvoxel',\n", + " 'Gyr',\n", + " 'H',\n", + " 'Henry',\n", + " 'Hertz',\n", + " 'Hz',\n", + " 'IrreducibleUnit',\n", + " 'J',\n", + " 'Jansky',\n", + " 'Joule',\n", + " 'Jy',\n", + " 'K',\n", + " 'Kayser',\n", + " 'Kelvin',\n", + " 'KiB',\n", + " 'Kib',\n", + " 'Kibit',\n", + " 'Kibyte',\n", + " 'L',\n", + " 'L_bol',\n", + " 'L_sun',\n", + " 'LogQuantity',\n", + " 'LogUnit',\n", + " 'Lsun',\n", + " 'MA',\n", + " 'MAU',\n", + " 'MB',\n", + " 'MBa',\n", + " 'MC',\n", + " 'MD',\n", + " 'MF',\n", + " 'MG',\n", + " 'MGal',\n", + " 'MH',\n", + " 'MHz',\n", + " 'MJ',\n", + " 'MJy',\n", + " 'MK',\n", + " 'ML',\n", + " 'MN',\n", + " 'MOhm',\n", + " 'MP',\n", + " 'MPa',\n", + " 'MR',\n", + " 'MRy',\n", + " 'MS',\n", + " 'MSt',\n", + " 'MT',\n", + " 'MV',\n", + " 'MW',\n", + " 'MWb',\n", + " 'M_bol',\n", + " 'M_e',\n", + " 'M_earth',\n", + " 'M_jup',\n", + " 'M_jupiter',\n", + " 'M_p',\n", + " 'M_sun',\n", + " 'Ma',\n", + " 'Madu',\n", + " 'MagUnit',\n", + " 'Magnitude',\n", + " 'Marcmin',\n", + " 'Marcsec',\n", + " 'Mau',\n", + " 'Mb',\n", + " 'Mbarn',\n", + " 'Mbeam',\n", + " 'Mbin',\n", + " 'Mbit',\n", + " 'Mbyte',\n", + " 'Mcd',\n", + " 'Mchan',\n", + " 'Mcount',\n", + " 'Mct',\n", + " 'Md',\n", + " 'Mdeg',\n", + " 'Mdyn',\n", + " 'MeV',\n", + " 'Mearth',\n", + " 'Merg',\n", + " 'Mg',\n", + " 'Mh',\n", + " 'MiB',\n", + " 'Mib',\n", + " 'Mibit',\n", + " 'Mibyte',\n", + " 'Mjup',\n", + " 'Mjupiter',\n", + " 'Mk',\n", + " 'Ml',\n", + " 'Mlm',\n", + " 'Mlx',\n", + " 'Mlyr',\n", + " 'Mm',\n", + " 'Mmag',\n", + " 'Mmin',\n", + " 'Mmol',\n", + " 'Mohm',\n", + " 'Mpc',\n", + " 'Mph',\n", + " 'Mphoton',\n", + " 'Mpix',\n", + " 'Mpixel',\n", + " 'Mrad',\n", + " 'Ms',\n", + " 'Msr',\n", + " 'Msun',\n", + " 'Mu',\n", + " 'Mvox',\n", + " 'Mvoxel',\n", + " 'Myr',\n", + " 'N',\n", + " 'NamedUnit',\n", + " 'Newton',\n", + " 'Ohm',\n", + " 'P',\n", + " 'PA',\n", + " 'PAU',\n", + " 'PB',\n", + " 'PBa',\n", + " 'PC',\n", + " 'PD',\n", + " 'PF',\n", + " 'PG',\n", + " 'PGal',\n", + " 'PH',\n", + " 'PHz',\n", + " 'PJ',\n", + " 'PJy',\n", + " 'PK',\n", + " 'PL',\n", + " 'PN',\n", + " 'POhm',\n", + " 'PP',\n", + " 'PPa',\n", + " 'PR',\n", + " 'PRy',\n", + " 'PS',\n", + " 'PSt',\n", + " 'PT',\n", + " 'PV',\n", + " 'PW',\n", + " 'PWb',\n", + " 'Pa',\n", + " 'Padu',\n", + " 'Parcmin',\n", + " 'Parcsec',\n", + " 'Pascal',\n", + " 'Pau',\n", + " 'Pb',\n", + " 'Pbarn',\n", + " 'Pbeam',\n", + " 'Pbin',\n", + " 'Pbit',\n", + " 'Pbyte',\n", + " 'Pcd',\n", + " 'Pchan',\n", + " 'Pcount',\n", + " 'Pct',\n", + " 'Pd',\n", + " 'Pdeg',\n", + " 'Pdyn',\n", + " 'PeV',\n", + " 'Perg',\n", + " 'Pg',\n", + " 'Ph',\n", + " 'PiB',\n", + " 'Pib',\n", + " 'Pibit',\n", + " 'Pibyte',\n", + " 'Pk',\n", + " 'Pl',\n", + " 'Plm',\n", + " 'Plx',\n", + " 'Plyr',\n", + " 'Pm',\n", + " 'Pmag',\n", + " 'Pmin',\n", + " 'Pmol',\n", + " 'Pohm',\n", + " 'Ppc',\n", + " 'Pph',\n", + " 'Pphoton',\n", + " 'Ppix',\n", + " 'Ppixel',\n", + " 'Prad',\n", + " 'PrefixUnit',\n", + " 'Ps',\n", + " 'Psr',\n", + " 'Pu',\n", + " 'Pvox',\n", + " 'Pvoxel',\n", + " 'Pyr',\n", + " 'Quantity',\n", + " 'QuantityInfo',\n", + " 'QuantityInfoBase',\n", + " 'R',\n", + " 'R_earth',\n", + " 'R_jup',\n", + " 'R_jupiter',\n", + " 'R_sun',\n", + " 'Rayleigh',\n", + " 'Rearth',\n", + " 'Rjup',\n", + " 'Rjupiter',\n", + " 'Rsun',\n", + " 'Ry',\n", + " 'S',\n", + " 'ST',\n", + " 'STflux',\n", + " 'STmag',\n", + " 'Siemens',\n", + " 'SpecificTypeQuantity',\n", + " 'St',\n", + " 'Sun',\n", + " 'T',\n", + " 'TA',\n", + " 'TAU',\n", + " 'TB',\n", + " 'TBa',\n", + " 'TC',\n", + " 'TD',\n", + " 'TF',\n", + " 'TG',\n", + " 'TGal',\n", + " 'TH',\n", + " 'THz',\n", + " 'TJ',\n", + " 'TJy',\n", + " 'TK',\n", + " 'TL',\n", + " 'TN',\n", + " 'TOhm',\n", + " 'TP',\n", + " 'TPa',\n", + " 'TR',\n", + " 'TRy',\n", + " 'TS',\n", + " 'TSt',\n", + " 'TT',\n", + " 'TV',\n", + " 'TW',\n", + " 'TWb',\n", + " 'Ta',\n", + " 'Tadu',\n", + " 'Tarcmin',\n", + " 'Tarcsec',\n", + " 'Tau',\n", + " 'Tb',\n", + " 'Tbarn',\n", + " 'Tbeam',\n", + " 'Tbin',\n", + " 'Tbit',\n", + " 'Tbyte',\n", + " 'Tcd',\n", + " 'Tchan',\n", + " 'Tcount',\n", + " 'Tct',\n", + " 'Td',\n", + " 'Tdeg',\n", + " 'Tdyn',\n", + " 'TeV',\n", + " 'Terg',\n", + " 'Tesla',\n", + " 'Tg',\n", + " 'Th',\n", + " 'TiB',\n", + " 'Tib',\n", + " 'Tibit',\n", + " 'Tibyte',\n", + " 'Tk',\n", + " 'Tl',\n", + " 'Tlm',\n", + " 'Tlx',\n", + " 'Tlyr',\n", + " 'Tm',\n", + " 'Tmag',\n", + " 'Tmin',\n", + " 'Tmol',\n", + " 'Tohm',\n", + " 'Tpc',\n", + " 'Tph',\n", + " 'Tphoton',\n", + " 'Tpix',\n", + " 'Tpixel',\n", + " 'Trad',\n", + " 'Ts',\n", + " 'Tsr',\n", + " 'Tu',\n", + " 'Tvox',\n", + " 'Tvoxel',\n", + " 'Tyr',\n", + " 'Unit',\n", + " 'UnitBase',\n", + " 'UnitConversionError',\n", + " 'UnitTypeError',\n", + " 'UnitsError',\n", + " 'UnitsWarning',\n", + " 'UnrecognizedUnit',\n", + " 'V',\n", + " 'Volt',\n", + " 'W',\n", + " 'Watt',\n", + " 'Wb',\n", + " 'Weber',\n", + " 'YA',\n", + " 'YAU',\n", + " 'YB',\n", + " 'YBa',\n", + " 'YC',\n", + " 'YD',\n", + " 'YF',\n", + " 'YG',\n", + " 'YGal',\n", + " 'YH',\n", + " 'YHz',\n", + " 'YJ',\n", + " 'YJy',\n", + " 'YK',\n", + " 'YL',\n", + " 'YN',\n", + " 'YOhm',\n", + " 'YP',\n", + " 'YPa',\n", + " 'YR',\n", + " 'YRy',\n", + " 'YS',\n", + " 'YSt',\n", + " 'YT',\n", + " 'YV',\n", + " 'YW',\n", + " 'YWb',\n", + " 'Ya',\n", + " 'Yadu',\n", + " 'Yarcmin',\n", + " 'Yarcsec',\n", + " 'Yau',\n", + " 'Yb',\n", + " 'Ybarn',\n", + " 'Ybeam',\n", + " 'Ybin',\n", + " 'Ybit',\n", + " 'Ybyte',\n", + " 'Ycd',\n", + " 'Ychan',\n", + " 'Ycount',\n", + " 'Yct',\n", + " 'Yd',\n", + " 'Ydeg',\n", + " 'Ydyn',\n", + " 'YeV',\n", + " 'Yerg',\n", + " 'Yg',\n", + " 'Yh',\n", + " 'Yk',\n", + " 'Yl',\n", + " 'Ylm',\n", + " 'Ylx',\n", + " 'Ylyr',\n", + " 'Ym',\n", + " 'Ymag',\n", + " 'Ymin',\n", + " 'Ymol',\n", + " 'Yohm',\n", + " 'Ypc',\n", + " 'Yph',\n", + " 'Yphoton',\n", + " 'Ypix',\n", + " 'Ypixel',\n", + " 'Yrad',\n", + " 'Ys',\n", + " 'Ysr',\n", + " 'Yu',\n", + " 'Yvox',\n", + " 'Yvoxel',\n", + " 'Yyr',\n", + " 'ZA',\n", + " 'ZAU',\n", + " 'ZB',\n", + " 'ZBa',\n", + " 'ZC',\n", + " 'ZD',\n", + " 'ZF',\n", + " 'ZG',\n", + " 'ZGal',\n", + " 'ZH',\n", + " 'ZHz',\n", + " 'ZJ',\n", + " 'ZJy',\n", + " 'ZK',\n", + " 'ZL',\n", + " 'ZN',\n", + " 'ZOhm',\n", + " 'ZP',\n", + " 'ZPa',\n", + " 'ZR',\n", + " 'ZRy',\n", + " 'ZS',\n", + " 'ZSt',\n", + " 'ZT',\n", + " 'ZV',\n", + " 'ZW',\n", + " 'ZWb',\n", + " 'Za',\n", + " 'Zadu',\n", + " 'Zarcmin',\n", + " 'Zarcsec',\n", + " 'Zau',\n", + " 'Zb',\n", + " 'Zbarn',\n", + " 'Zbeam',\n", + " 'Zbin',\n", + " 'Zbit',\n", + " 'Zbyte',\n", + " 'Zcd',\n", + " 'Zchan',\n", + " 'Zcount',\n", + " 'Zct',\n", + " 'Zd',\n", + " 'Zdeg',\n", + " 'Zdyn',\n", + " 'ZeV',\n", + " 'Zerg',\n", + " 'Zg',\n", + " 'Zh',\n", + " 'Zk',\n", + " 'Zl',\n", + " 'Zlm',\n", + " 'Zlx',\n", + " 'Zlyr',\n", + " 'Zm',\n", + " 'Zmag',\n", + " 'Zmin',\n", + " 'Zmol',\n", + " 'Zohm',\n", + " 'Zpc',\n", + " 'Zph',\n", + " 'Zphoton',\n", + " 'Zpix',\n", + " 'Zpixel',\n", + " 'Zrad',\n", + " 'Zs',\n", + " 'Zsr',\n", + " 'Zu',\n", + " 'Zvox',\n", + " 'Zvoxel',\n", + " 'Zyr',\n", + " '__builtins__',\n", + " '__cached__',\n", + " '__doc__',\n", + " '__file__',\n", + " '__loader__',\n", + " '__name__',\n", + " '__package__',\n", + " '__path__',\n", + " '__spec__',\n", + " 'a',\n", + " 'aA',\n", + " 'aAU',\n", + " 'aB',\n", + " 'aBa',\n", + " 'aC',\n", + " 'aD',\n", + " 'aF',\n", + " 'aG',\n", + " 'aGal',\n", + " 'aH',\n", + " 'aHz',\n", + " 'aJ',\n", + " 'aJy',\n", + " 'aK',\n", + " 'aL',\n", + " 'aN',\n", + " 'aOhm',\n", + " 'aP',\n", + " 'aPa',\n", + " 'aR',\n", + " 'aRy',\n", + " 'aS',\n", + " 'aSt',\n", + " 'aT',\n", + " 'aV',\n", + " 'aW',\n", + " 'aWb',\n", + " 'aa',\n", + " 'aadu',\n", + " 'aarcmin',\n", + " 'aarcsec',\n", + " 'aau',\n", + " 'ab',\n", + " 'abA',\n", + " 'abC',\n", + " 'abampere',\n", + " 'abarn',\n", + " 'abcoulomb',\n", + " 'abeam',\n", + " 'abin',\n", + " 'abit',\n", + " 'abyte',\n", + " 'acd',\n", + " 'achan',\n", + " 'acount',\n", + " 'act',\n", + " 'ad',\n", + " 'add_enabled_equivalencies',\n", + " 'add_enabled_units',\n", + " 'adeg',\n", + " 'adu',\n", + " 'adyn',\n", + " 'aeV',\n", + " 'aerg',\n", + " 'ag',\n", + " 'ah',\n", + " 'ak',\n", + " 'al',\n", + " 'allclose',\n", + " 'alm',\n", + " 'alx',\n", + " 'alyr',\n", + " 'am',\n", + " 'amag',\n", + " 'amin',\n", + " 'amol',\n", + " 'amp',\n", + " 'ampere',\n", + " 'angstrom',\n", + " 'annum',\n", + " 'aohm',\n", + " 'apc',\n", + " 'aph',\n", + " 'aphoton',\n", + " 'apix',\n", + " 'apixel',\n", + " 'arad',\n", + " 'arcmin',\n", + " 'arcminute',\n", + " 'arcsec',\n", + " 'arcsecond',\n", + " 'asr',\n", + " 'astronomical_unit',\n", + " 'astrophys',\n", + " 'attoBarye',\n", + " 'attoDa',\n", + " 'attoDalton',\n", + " 'attoDebye',\n", + " 'attoFarad',\n", + " 'attoGauss',\n", + " 'attoHenry',\n", + " 'attoHertz',\n", + " 'attoJansky',\n", + " 'attoJoule',\n", + " 'attoKayser',\n", + " 'attoKelvin',\n", + " 'attoNewton',\n", + " 'attoOhm',\n", + " 'attoPascal',\n", + " 'attoRayleigh',\n", + " 'attoSiemens',\n", + " 'attoTesla',\n", + " 'attoVolt',\n", + " 'attoWatt',\n", + " 'attoWeber',\n", + " 'attoamp',\n", + " 'attoampere',\n", + " 'attoannum',\n", + " 'attoarcminute',\n", + " 'attoarcsecond',\n", + " 'attoastronomical_unit',\n", + " 'attobarn',\n", + " 'attobarye',\n", + " 'attobit',\n", + " 'attobyte',\n", + " 'attocandela',\n", + " 'attocoulomb',\n", + " 'attocount',\n", + " 'attoday',\n", + " 'attodebye',\n", + " 'attodegree',\n", + " 'attodyne',\n", + " 'attoelectronvolt',\n", + " 'attofarad',\n", + " 'attogal',\n", + " 'attogauss',\n", + " 'attogram',\n", + " 'attohenry',\n", + " 'attohertz',\n", + " 'attohour',\n", + " 'attohr',\n", + " 'attojansky',\n", + " 'attojoule',\n", + " 'attokayser',\n", + " 'attolightyear',\n", + " 'attoliter',\n", + " 'attolumen',\n", + " 'attolux',\n", + " 'attometer',\n", + " 'attominute',\n", + " 'attomole',\n", + " 'attonewton',\n", + " 'attoparsec',\n", + " 'attopascal',\n", + " 'attophoton',\n", + " 'attopixel',\n", + " 'attopoise',\n", + " 'attoradian',\n", + " 'attorayleigh',\n", + " 'attorydberg',\n", + " 'attosecond',\n", + " 'attosiemens',\n", + " 'attosteradian',\n", + " 'attostokes',\n", + " 'attotesla',\n", + " 'attovolt',\n", + " 'attovoxel',\n", + " 'attowatt',\n", + " 'attoweber',\n", + " 'attoyear',\n", + " 'au',\n", + " 'avox',\n", + " 'avoxel',\n", + " 'ayr',\n", + " 'b',\n", + " 'bar',\n", + " 'barn',\n", + " 'barye',\n", + " 'beam',\n", + " 'beam_angular_area',\n", + " 'becquerel',\n", + " 'bin',\n", + " 'binary_prefixes',\n", + " 'bit',\n", + " 'bol',\n", + " 'brightness_temperature',\n", + " 'byte',\n", + " 'cA',\n", + " 'cAU',\n", + " 'cB',\n", + " 'cBa',\n", + " 'cC',\n", + " 'cD',\n", + " 'cF',\n", + " 'cG',\n", + " 'cGal',\n", + " 'cH',\n", + " 'cHz',\n", + " 'cJ',\n", + " 'cJy',\n", + " 'cK',\n", + " 'cL',\n", + " 'cN',\n", + " 'cOhm',\n", + " 'cP',\n", + " 'cPa',\n", + " 'cR',\n", + " 'cRy',\n", + " 'cS',\n", + " 'cSt',\n", + " 'cT',\n", + " 'cV',\n", + " 'cW',\n", + " 'cWb',\n", + " 'ca',\n", + " 'cadu',\n", + " 'candela',\n", + " 'carcmin',\n", + " 'carcsec',\n", + " 'cau',\n", + " 'cb',\n", + " 'cbarn',\n", + " 'cbeam',\n", + " 'cbin',\n", + " 'cbit',\n", + " 'cbyte',\n", + " 'ccd',\n", + " 'cchan',\n", + " 'ccount',\n", + " 'cct',\n", + " 'cd',\n", + " 'cdeg',\n", + " 'cdyn',\n", + " 'ceV',\n", + " 'centiBarye',\n", + " 'centiDa',\n", + " 'centiDalton',\n", + " 'centiDebye',\n", + " 'centiFarad',\n", + " 'centiGauss',\n", + " 'centiHenry',\n", + " 'centiHertz',\n", + " 'centiJansky',\n", + " 'centiJoule',\n", + " 'centiKayser',\n", + " 'centiKelvin',\n", + " 'centiNewton',\n", + " 'centiOhm',\n", + " 'centiPascal',\n", + " 'centiRayleigh',\n", + " 'centiSiemens',\n", + " 'centiTesla',\n", + " 'centiVolt',\n", + " 'centiWatt',\n", + " 'centiWeber',\n", + " 'centiamp',\n", + " 'centiampere',\n", + " 'centiannum',\n", + " 'centiarcminute',\n", + " 'centiarcsecond',\n", + " 'centiastronomical_unit',\n", + " 'centibarn',\n", + " 'centibarye',\n", + " 'centibit',\n", + " 'centibyte',\n", + " 'centicandela',\n", + " 'centicoulomb',\n", + " 'centicount',\n", + " 'centiday',\n", + " 'centidebye',\n", + " 'centidegree',\n", + " 'centidyne',\n", + " 'centielectronvolt',\n", + " 'centifarad',\n", + " 'centigal',\n", + " 'centigauss',\n", + " 'centigram',\n", + " 'centihenry',\n", + " 'centihertz',\n", + " 'centihour',\n", + " 'centihr',\n", + " 'centijansky',\n", + " 'centijoule',\n", + " 'centikayser',\n", + " 'centilightyear',\n", + " 'centiliter',\n", + " 'centilumen',\n", + " 'centilux',\n", + " 'centimeter',\n", + " 'centiminute',\n", + " 'centimole',\n", + " 'centinewton',\n", + " 'centiparsec',\n", + " 'centipascal',\n", + " 'centiphoton',\n", + " 'centipixel',\n", + " 'centipoise',\n", + " 'centiradian',\n", + " 'centirayleigh',\n", + " 'centirydberg',\n", + " 'centisecond',\n", + " 'centisiemens',\n", + " 'centisteradian',\n", + " 'centistokes',\n", + " 'centitesla',\n", + " 'centivolt',\n", + " 'centivoxel',\n", + " 'centiwatt',\n", + " 'centiweber',\n", + " 'centiyear',\n", + " 'cerg',\n", + " 'cg',\n", + " 'cgs',\n", + " 'ch',\n", + " 'chan',\n", + " 'ck',\n", + " 'cl',\n", + " 'clm',\n", + " 'clx',\n", + " 'clyr',\n", + " 'cm',\n", + " 'cmag',\n", + " 'cmin',\n", + " 'cmol',\n", + " 'cohm',\n", + " 'core',\n", + " 'coulomb',\n", + " 'count',\n", + " 'cpc',\n", + " 'cph',\n", + " 'cphoton',\n", + " 'cpix',\n", + " 'cpixel',\n", + " 'crad',\n", + " 'cs',\n", + " 'csr',\n", + " 'ct',\n", + " 'cu',\n", + " 'curie',\n", + " 'cvox',\n", + " 'cvoxel',\n", + " 'cy',\n", + " 'cycle',\n", + " 'cyr',\n", + " 'd',\n", + " 'dA',\n", + " 'dAU',\n", + " 'dB',\n", + " 'dBa',\n", + " 'dC',\n", + " 'dD',\n", + " 'dF',\n", + " 'dG',\n", + " 'dGal',\n", + " 'dH',\n", + " 'dHz',\n", + " 'dJ',\n", + " 'dJy',\n", + " 'dK',\n", + " 'dL',\n", + " 'dN',\n", + " 'dOhm',\n", + " 'dP',\n", + " 'dPa',\n", + " 'dR',\n", + " 'dRy',\n", + " 'dS',\n", + " 'dSt',\n", + " 'dT',\n", + " ...]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dir(u)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To create a quantity, we multiply a value by a unit." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.units.quantity.Quantity" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coord = 30 * u.deg\n", + "type(coord)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a `Quantity` object.\n", + "\n", + "Jupyter knows how to display `Quantities` like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$30 \\; \\mathrm{{}^{\\circ}}$" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coord" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting a rectangle\n", + "\n", + "Now we'll select a rectangle from -55 to -45 degrees right ascension and -8 to 4 degrees of declination.\n", + "\n", + "We'll define variables to contain these limits." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "phi1_min = -55\n", + "phi1_max = -45\n", + "phi2_min = -8\n", + "phi2_max = 4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To represent a rectangle, we'll use two lists of coordinates and multiply by their units." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "phi1_rect = [phi1_min, phi1_min, phi1_max, phi1_max] * u.deg\n", + "phi2_rect = [phi2_min, phi2_max, phi2_max, phi2_min] * u.deg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`phi1_rect` and `phi2_rect` represent the coordinates of the corners of a rectangle. \n", + "\n", + "But they are in \"[a Heliocentric spherical coordinate system defined by the orbit of the GD1 stream](https://gala-astro.readthedocs.io/en/latest/_modules/gala/coordinates/gd1.html)\"\n", + "\n", + "In order to use them in a Gaia query, we have to convert them to [International Celestial Reference System](https://en.wikipedia.org/wiki/International_Celestial_Reference_System) (ICRS) coordinates. We can do that by storing the coordinates in a `GD1Koposov10` object provided by [Gala](https://gala-astro.readthedocs.io/en/latest/coordinates/)." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "gala.coordinates.gd1.GD1Koposov10" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import gala.coordinates as gc\n", + "\n", + "corners = gc.GD1Koposov10(phi1=phi1_rect, phi2=phi2_rect)\n", + "type(corners)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can display the result like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corners" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can use `transform_to` to convert to ICRS coordinates." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "astropy.coordinates.builtin_frames.icrs.ICRS" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import astropy.coordinates as coord\n", + "\n", + "corners_icrs = corners.transform_to(coord.ICRS)\n", + "type(corners_icrs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is an `ICRS` object." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corners_icrs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that a rectangle in one coordinate system is not necessarily a rectangle in another. In this example, the result is a polygon." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting a polygon\n", + "\n", + "In order to use this polygon as part of an ADQL query, we have to convert it to a string with a comma-separated list of coordinates, as in this example:\n", + "\n", + "```\n", + "\"\"\"\n", + "POLYGON(143.65, 20.98, \n", + " 134.46, 26.39, \n", + " 140.58, 34.85, \n", + " 150.16, 29.01)\n", + "\"\"\"\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`corners_icrs` behaves like a list, so we can use a `for` loop to iterate through the points." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "for point in corners_icrs:\n", + " print(point)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From that, we can select the coordinates `ra` and `dec`:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "146d16m31.1993s 19d15m42.8754s\n", + "135d25m17.902s 25d52m38.594s\n", + "141d36m09.5337s 34d18m17.3891s\n", + "152d49m00.1576s 27d08m10.0051s\n" + ] + } + ], + "source": [ + "for point in corners_icrs:\n", + " print(point.ra, point.dec)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The results are quantities with units, but if we select the `value` part, we get a dimensionless floating-point number." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "146.27533313607782 19.261909820533692\n", + "135.42163944306296 25.87738722767213\n", + "141.60264825107333 34.304830296257144\n", + "152.81671044675923 27.136112541397996\n" + ] + } + ], + "source": [ + "for point in corners_icrs:\n", + " print(point.ra.value, point.dec.value)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use string `format` to convert these numbers to strings." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['146.27533313607782, 19.261909820533692',\n", + " '135.42163944306296, 25.87738722767213',\n", + " '141.60264825107333, 34.304830296257144',\n", + " '152.81671044675923, 27.136112541397996']" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "point_base = \"{point.ra.value}, {point.dec.value}\"\n", + "\n", + "t = [point_base.format(point=point)\n", + " for point in corners_icrs]\n", + "t" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The result is a list of strings, which we can join into a single string using `join`." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'146.27533313607782, 19.261909820533692, 135.42163944306296, 25.87738722767213, 141.60264825107333, 34.304830296257144, 152.81671044675923, 27.136112541397996'" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "point_list = ', '.join(t)\n", + "point_list" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that we invoke `join` on a string and pass the list as an argument.\n", + "\n", + "Before we can assemble the query, we need `columns` again (as we saw in the previous notebook)." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "columns = 'source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's the base for the query, with format specifiers for `columns` and `point_list`." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "query_base = \"\"\"SELECT {columns}\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2 \n", + " AND 1 = CONTAINS(POINT(ra, dec), \n", + " POLYGON({point_list}))\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And here's the result:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SELECT source_id, ra, dec, pmra, pmdec, parallax, parallax_error, radial_velocity\n", + "FROM gaiadr2.gaia_source\n", + "WHERE parallax < 1\n", + " AND bp_rp BETWEEN -0.75 AND 2 \n", + " AND 1 = CONTAINS(POINT(ra, dec), \n", + " POLYGON(146.27533313607782, 19.261909820533692, 135.42163944306296, 25.87738722767213, 141.60264825107333, 34.304830296257144, 152.81671044675923, 27.136112541397996))\n", + "\n" + ] + } + ], + "source": [ + "query = query_base.format(columns=columns, \n", + " point_list=point_list)\n", + "print(query)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As always, we should take a minute to proof-read the query before we launch it.\n", + "\n", + "The result will be bigger than our previous queries, so it will take a little longer." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO: Query finished. [astroquery.utils.tap.core]\n", + "
\n", + " name dtype unit description n_bad \n", + "--------------- ------- -------- ------------------------------------------------------------------ ------\n", + " source_id int64 Unique source identifier (unique within a particular Data Release) 0\n", + " ra float64 deg Right ascension 0\n", + " dec float64 deg Declination 0\n", + " pmra float64 mas / yr Proper motion in right ascension direction 0\n", + " pmdec float64 mas / yr Proper motion in declination direction 0\n", + " parallax float64 mas Parallax 0\n", + " parallax_error float64 mas Standard error of parallax 0\n", + "radial_velocity float64 km / s Radial velocity 139374\n", + "Jobid: 1601903357321O\n", + "Phase: COMPLETED\n", + "Owner: None\n", + "Output file: async_20201005090917.vot\n", + "Results: None\n" + ] + } + ], + "source": [ + "job = Gaia.launch_job_async(query)\n", + "print(job)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here are the results." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "140340" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results = job.get_results()\n", + "len(results)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are more than 100,000 stars in this polygon, but that's a manageable size to work with." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Saving results\n", + "\n", + "This is the set of stars we'll work with in the next step. But since we have a substantial dataset now, this is a good time to save it.\n", + "\n", + "Storing the data in a file means we can shut down this notebook and pick up where we left off without running the previous query again.\n", + "\n", + "Astropy `Table` objects provide `write`, which writes the table to disk." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "filename = 'gd1_results.fits'\n", + "results.write(filename, overwrite=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Because the filename ends with `fits`, the table is written in the [FITS format](https://en.wikipedia.org/wiki/FITS), which preserves the metadata associated with the table.\n", + "\n", + "If the file already exists, the `overwrite` argument causes it to be overwritten.\n", + "\n", + "To see how big the file is, we can use `ls` with the `-lh` option, which prints information about the file including its size in human-readable form." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-rw-rw-r-- 1 downey downey 8.6M Oct 5 09:09 gd1_results.fits\r\n" + ] + } + ], + "source": [ + "!ls -lh gd1_results.fits" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The file is about 8.6 MB." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "In this notebook, we composed more complex queries to select stars within a polygonal region of the sky. Then we downloaded the results and saved them in a FITS file.\n", + "\n", + "In the next notebook, we'll reload the data from this file and replicate the next step in the analysis, using proper motion to identify stars likely to be in GD-1." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Best practices\n", + "\n", + "* For measurements with units, use `Quantity` objects that represent units explicitly and check for errors.\n", + "\n", + "* Use the `format` function to compose queries; it is often faster and less error-prone.\n", + "\n", + "* Develop queries incrementally: start with something simple, test it, and add a little bit at a time.\n", + "\n", + "* Once you have a query working, save the data in a local file. If you shut down the notebook and come back to it later, you can reload the file; you don't have to run the query again." + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/_sources/README.md b/_sources/README.md new file mode 100644 index 0000000..190277b --- /dev/null +++ b/_sources/README.md @@ -0,0 +1,172 @@ +# Astronomical Data in Python + +*Astronomical Data in Python* is an introduction to tools and practices for working with astronomical data. Topics covered include: + +* Writing queries that select and download data from a database. + +* Using data stored in an Astropy `Table` or Pandas `DataFrame`. + +* Working with coordinates and other quantities with units. + +* Storing data in various formats. + +* Performing database join operations that combine data from multiple tables. + +* Visualizing data and preparing publication-quality figures. + +As a running example, we will replicate part of the analysis in a recent paper, "[Off the beaten path: Gaia reveals GD-1 stars outside of the main stream](https://arxiv.org/abs/1805.00425)" by Adrian M. Price-Whelan and Ana Bonaca. + +This material was developed in collaboration with [The Carpentries](https://carpentries.org/) and the Astronomy Curriculum Development Committee, and supported by funding from the American Institute of Physics through the American Astronomical Society. + +I am grateful for contributions from the members of the committee -- Azalee Bostroem, Rodolfo Montez, and Phil Rosenfield -- and from Erin Becker, Brett Morris and Adrian Price-Whelan. + +The original format of this material is a series of Jupyter notebooks. Using the +links below, you can read the notebooks on NBViewer or run them on Colab. If you +want to run the notebooks in your own environment, you can download them from +this repository and follow the instructions below to set up your environment. + +This material is also available in the form of [Carpentries lessons](https://datacarpentry.github.io/astronomy-python), but you should be +aware that these versions might diverge in the future. + +**Prerequisites** + +This material should be accessible to people familiar with basic Python, but not necessarily the libraries we will use, like Astropy or Pandas. If you are familiar with Python lists and dictionaries, and you know how to write a function that takes parameters and returns a value, that should be enough. + +We assume that you are familiar with astronomy at the undergraduate level, but we will not assume specialized knowledge of the datasets or analysis methods we'll use. + +**Notebook 1** + +This notebook demonstrates the following steps: + +1. Making a connection to the Gaia server, + +2. Exploring information about the database and the tables it contains, + +3. Writing a query and sending it to the server, and finally + +4. Downloading the response from the server as an Astropy `Table`. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/01_query.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/01_query.ipynb) + + +**Notebook 2** + +This notebook starts with an example that does a "cone search"; that is, it selects stars that appear in a circular region of the sky. + +Then, to select stars in the vicinity of GD-1, we: + +* Use `Quantity` objects to represent measurements with units. + +* Use the `Gala` library to convert coordinates from one frame to another. + +* Use the ADQL keywords `POLYGON`, `CONTAINS`, and `POINT` to select stars that fall within a polygonal region. + +* Submit a query and download the results. + +* Store the results in a FITS file. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/02_coords.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/02_coords.ipynb) + + +**Notebook 3** + +Here are the steps in this notebook: + +1. We'll read back the results from the previous notebook, which we saved in a FITS file. + +2. Then we'll transform the coordinates and proper motion data from ICRS back to the coordinate frame of GD-1. + +3. We'll put those results into a Pandas `DataFrame`, which we'll use to select stars near the centerline of GD-1. + +4. Plotting the proper motion of those stars, we'll identify a region of proper motion for stars that are likely to be in GD-1. + +5. Finally, we'll select and plot the stars whose proper motion is in that region. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/03_motion.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/03_motion.ipynb) + + +**Notebook 4** + +Here are the steps in this notebook: + +1. Using data from the previous notebook, we'll identify the values of proper motion for stars likely to be in GD-1. + +2. Then we'll compose an ADQL query that selects stars based on proper motion, so we can download only the data we need. + +3. We'll also see how to write the results to a CSV file. + +That will make it possible to search a bigger region of the sky in a single query. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/04_select.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/04_select.ipynb) + + +**Notebook 5** + +Here are the steps in this notebook: + +1. We'll reload the candidate stars we identified in the previous notebook. + +2. Then we'll run a query on the Gaia server that uploads the table of candidates and uses a `JOIN` operation to select photometry data for the candidate stars. + +3. We'll write the results to a file for use in the next notebook. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/05_join.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/05_join.ipynb) + + +**Notebook 6** + +Here are the steps in this notebook: + +1. We'll reload the data from the previous notebook and make a color-magnitude diagram. + +2. Then we'll specify a polygon in the diagram that contains stars with the photometry we expect. + +3. Then we'll merge the photometry data with the list of candidate stars, storing the result in a Pandas `DataFrame`. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/06_photo.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/06_photo.ipynb) + + +**Notebook 7** + +Here are the steps in this notebook: + +1. Starting with the figure from the previous notebook, we'll add annotations to present the results more clearly. + +2. The we'll see several ways to customize figures to make them more appealing and effective. + +3. Finally, we'll see how to make a figure with multiple panels or subplots. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/07_plot.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/07_plot.ipynb) + + +**Installation instructions** + +Coming soon. diff --git a/_sources/index.md b/_sources/index.md new file mode 100644 index 0000000..a6a7b98 --- /dev/null +++ b/_sources/index.md @@ -0,0 +1,169 @@ +# Astronomical Data in Python + +*Astronomical Data in Python* is an introduction to tools and practices for working with astronomical data. Topics covered include: + +* Writing queries that select and download data from a database. + +* Using data stored in an Astropy `Table` or Pandas `DataFrame`. + +* Working with coordinates and other quantities with units. + +* Storing data in various formats. + +* Performing database join operations that combine data from multiple tables. + +* Visualizing data and preparing publication-quality figures. + +As a running example, we will replicate part of the analysis in a recent paper, "[Off the beaten path: Gaia reveals GD-1 stars outside of the main stream](https://arxiv.org/abs/1805.00425)" by Adrian M. Price-Whelan and Ana Bonaca. + +This material was developed in collaboration with [The Carpentries](https://carpentries.org/) and the Astronomy Curriculum Development Committee, and supported by funding from the American Institute of Physics through the American Astronomical Society. + +I am grateful for contributions from the members of the committee -- Azalee Bostroem, Rodolfo Montez, and Phil Rosenfield -- and from Erin Becker, Brett Morris and Adrian Price-Whelan. + +The original format of this material is a series of Jupyter notebooks. Using the +links below, you can read the notebooks on NBViewer or run them on Colab. If you +want to run the notebooks in your own environment, you can download them from +this repository and follow the instructions below to set up your environment. + +### Prerequisites + +This material should be accessible to people familiar with basic Python, but not necessarily the libraries we will use, like Astropy or Pandas. If you are familiar with Python lists and dictionaries, and you know how to write a function that takes parameters and returns a value, that should be enough. + +We assume that you are familiar with astronomy at the undergraduate level, but we will not assume specialized knowledge of the datasets or analysis methods we'll use. + +### Notebook 1 + +This notebook demonstrates the following steps: + +1. Making a connection to the Gaia server, + +2. Exploring information about the database and the tables it contains, + +3. Writing a query and sending it to the server, and finally + +4. Downloading the response from the server as an Astropy `Table`. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/01_query.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/01_query.ipynb) + + +### Notebook 2 + +This notebook starts with an example that does a "cone search"; that is, it selects stars that appear in a circular region of the sky. + +Then, to select stars in the vicinity of GD-1, we: + +* Use `Quantity` objects to represent measurements with units. + +* Use the `Gala` library to convert coordinates from one frame to another. + +* Use the ADQL keywords `POLYGON`, `CONTAINS`, and `POINT` to select stars that fall within a polygonal region. + +* Submit a query and download the results. + +* Store the results in a FITS file. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/02_coords.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/02_coords.ipynb) + + +### Notebook 3 + +Here are the steps in this notebook: + +1. We'll read back the results from the previous notebook, which we saved in a FITS file. + +2. Then we'll transform the coordinates and proper motion data from ICRS back to the coordinate frame of GD-1. + +3. We'll put those results into a Pandas `DataFrame`, which we'll use to select stars near the centerline of GD-1. + +4. Plotting the proper motion of those stars, we'll identify a region of proper motion for stars that are likely to be in GD-1. + +5. Finally, we'll select and plot the stars whose proper motion is in that region. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/03_motion.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/03_motion.ipynb) + + +### Notebook 4 + +Here are the steps in this notebook: + +1. Using data from the previous notebook, we'll identify the values of proper motion for stars likely to be in GD-1. + +2. Then we'll compose an ADQL query that selects stars based on proper motion, so we can download only the data we need. + +3. We'll also see how to write the results to a CSV file. + +That will make it possible to search a bigger region of the sky in a single query. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/04_select.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/04_select.ipynb) + + +### Notebook 5 + +Here are the steps in this notebook: + +1. We'll reload the candidate stars we identified in the previous notebook. + +2. Then we'll run a query on the Gaia server that uploads the table of candidates and uses a `JOIN` operation to select photometry data for the candidate stars. + +3. We'll write the results to a file for use in the next notebook. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/05_join.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/05_join.ipynb) + + +### Notebook 6 + +Here are the steps in this notebook: + +1. We'll reload the data from the previous notebook and make a color-magnitude diagram. + +2. Then we'll specify a polygon in the diagram that contains stars with the photometry we expect. + +3. Then we'll merge the photometry data with the list of candidate stars, storing the result in a Pandas `DataFrame`. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/06_photo.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/06_photo.ipynb) + + +### Notebook 7 + +Here are the steps in this notebook: + +1. Starting with the figure from the previous notebook, we'll add annotations to present the results more clearly. + +2. The we'll see several ways to customize figures to make them more appealing and effective. + +3. Finally, we'll see how to make a figure with multiple panels or subplots. + +Press this button to run this notebook on Colab: + +[](https://colab.research.google.com/github/AllenDowney/AstronomicalData/blob/main/07_plot.ipynb) + +[or click here to read it on NBViewer](https://nbviewer.jupyter.org/github/AllenDowney/AstronomicalData/blob/main/07_plot.ipynb) + + +## Installation instructions + +Coming soon. diff --git a/_sources/test_setup.ipynb b/_sources/test_setup.ipynb new file mode 100644 index 0000000..10b3888 --- /dev/null +++ b/_sources/test_setup.ipynb @@ -0,0 +1,136 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Astronomical Data in Python\n", + "\n", + "This notebook imports the libraries we need for the workshop.\n", + "\n", + "If any of them are missing, you'll get an error message.\n", + "\n", + "If you don't get any error messages, you are all set." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from wget import download" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib as mpl\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.path import Path\n", + "from matplotlib.patches import Polygon" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import astropy.coordinates as coord\n", + "import astropy.units as u\n", + "from astropy.table import Table" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import gala.coordinates as gc\n", + "from pyia import GaiaData" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: gea.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n", + "Created TAP+ (v1.2.1) - Connection:\n", + "\tHost: geadata.esac.esa.int\n", + "\tUse HTTPS: True\n", + "\tPort: 443\n", + "\tSSL Port: 443\n" + ] + } + ], + "source": [ + "# Note: running this import statement opens a connection\n", + "# to a Gaia server, so it will fail if you are not connected\n", + "# to the internet.\n", + "\n", + "from astroquery.gaia import Gaia" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "During the workshop, we might put some code on Slack and ask you to cut and paste it into the notebook.\n", + "\n", + "If you are on a Mac, you might encounter a problem: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/_static/__init__.py b/_static/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/_static/__pycache__/__init__.cpython-38.pyc b/_static/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..77c9f78 Binary files /dev/null and b/_static/__pycache__/__init__.cpython-38.pyc differ diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 0000000..616111c --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,855 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 270px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 450px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a.brackets:before, +span.brackets > a:before{ + content: "["; +} + +a.brackets:after, +span.brackets > a:after { + content: "]"; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +dl.footnote > dt, +dl.citation > dt { + float: left; + margin-right: 0.5em; +} + +dl.footnote > dd, +dl.citation > dd { + margin-bottom: 0em; +} + +dl.footnote > dd:after, +dl.citation > dd:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dt:after { + content: ":"; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0.5em; + content: ":"; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 0000000..02c549e --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.4 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return function(n){var o={};function r(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}return r.m=n,r.c=o,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}([function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function o(t,e){for(var n=0;n or other required elements. + thead: [ 1, "
", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + return result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px"; + tr.style.height = "1px"; + trChild.style.height = "9px"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( + dataPriv.get( cur, "events" ) || Object.create( null ) + )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script + if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " +{% endmacro %} \ No newline at end of file diff --git a/genindex.html b/genindex.html new file mode 100644 index 0000000..1892aea --- /dev/null +++ b/genindex.html @@ -0,0 +1,247 @@ + + + + + + + + Index — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
+ +
+ + +

Index

+ +
+ +
+ + +
+ +
+
+ + +
+ + +
+
+
+

+ + By Allen B. Downey
+ + © Copyright 2020.
+

+
+
+
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..8889c2c --- /dev/null +++ b/index.html @@ -0,0 +1,455 @@ + + + + + + + + Astronomical Data in Python — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + +
+ + + +
+
+
+ +
+ +
+

Astronomical Data in Python

+

Astronomical Data in Python is an introduction to tools and practices for working with astronomical data. Topics covered include:

+
    +
  • Writing queries that select and download data from a database.

  • +
  • Using data stored in an Astropy Table or Pandas DataFrame.

  • +
  • Working with coordinates and other quantities with units.

  • +
  • Storing data in various formats.

  • +
  • Performing database join operations that combine data from multiple tables.

  • +
  • Visualizing data and preparing publication-quality figures.

  • +
+

As a running example, we will replicate part of the analysis in a recent paper, “Off the beaten path: Gaia reveals GD-1 stars outside of the main stream” by Adrian M. Price-Whelan and Ana Bonaca.

+

This material was developed in collaboration with The Carpentries and the Astronomy Curriculum Development Committee, and supported by funding from the American Institute of Physics through the American Astronomical Society.

+

I am grateful for contributions from the members of the committee – Azalee Bostroem, Rodolfo Montez, and Phil Rosenfield – and from Erin Becker, Brett Morris and Adrian Price-Whelan.

+

The original format of this material is a series of Jupyter notebooks. Using the +links below, you can read the notebooks on NBViewer or run them on Colab. If you +want to run the notebooks in your own environment, you can download them from +this repository and follow the instructions below to set up your environment.

+
+

Prerequisites

+

This material should be accessible to people familiar with basic Python, but not necessarily the libraries we will use, like Astropy or Pandas. If you are familiar with Python lists and dictionaries, and you know how to write a function that takes parameters and returns a value, that should be enough.

+

We assume that you are familiar with astronomy at the undergraduate level, but we will not assume specialized knowledge of the datasets or analysis methods we’ll use.

+
+
+

Notebook 1

+

This notebook demonstrates the following steps:

+
    +
  1. Making a connection to the Gaia server,

  2. +
  3. Exploring information about the database and the tables it contains,

  4. +
  5. Writing a query and sending it to the server, and finally

  6. +
  7. Downloading the response from the server as an Astropy Table.

  8. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+
+
+

Notebook 2

+

This notebook starts with an example that does a “cone search”; that is, it selects stars that appear in a circular region of the sky.

+

Then, to select stars in the vicinity of GD-1, we:

+
    +
  • Use Quantity objects to represent measurements with units.

  • +
  • Use the Gala library to convert coordinates from one frame to another.

  • +
  • Use the ADQL keywords POLYGON, CONTAINS, and POINT to select stars that fall within a polygonal region.

  • +
  • Submit a query and download the results.

  • +
  • Store the results in a FITS file.

  • +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+
+
+

Notebook 3

+

Here are the steps in this notebook:

+
    +
  1. We’ll read back the results from the previous notebook, which we saved in a FITS file.

  2. +
  3. Then we’ll transform the coordinates and proper motion data from ICRS back to the coordinate frame of GD-1.

  4. +
  5. We’ll put those results into a Pandas DataFrame, which we’ll use to select stars near the centerline of GD-1.

  6. +
  7. Plotting the proper motion of those stars, we’ll identify a region of proper motion for stars that are likely to be in GD-1.

  8. +
  9. Finally, we’ll select and plot the stars whose proper motion is in that region.

  10. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+
+
+

Notebook 4

+

Here are the steps in this notebook:

+
    +
  1. Using data from the previous notebook, we’ll identify the values of proper motion for stars likely to be in GD-1.

  2. +
  3. Then we’ll compose an ADQL query that selects stars based on proper motion, so we can download only the data we need.

  4. +
  5. We’ll also see how to write the results to a CSV file.

  6. +
+

That will make it possible to search a bigger region of the sky in a single query.

+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+
+
+

Notebook 5

+

Here are the steps in this notebook:

+
    +
  1. We’ll reload the candidate stars we identified in the previous notebook.

  2. +
  3. Then we’ll run a query on the Gaia server that uploads the table of candidates and uses a JOIN operation to select photometry data for the candidate stars.

  4. +
  5. We’ll write the results to a file for use in the next notebook.

  6. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+
+
+

Notebook 6

+

Here are the steps in this notebook:

+
    +
  1. We’ll reload the data from the previous notebook and make a color-magnitude diagram.

  2. +
  3. Then we’ll specify a polygon in the diagram that contains stars with the photometry we expect.

  4. +
  5. Then we’ll merge the photometry data with the list of candidate stars, storing the result in a Pandas DataFrame.

  6. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+
+
+

Notebook 7

+

Here are the steps in this notebook:

+
    +
  1. Starting with the figure from the previous notebook, we’ll add annotations to present the results more clearly.

  2. +
  3. The we’ll see several ways to customize figures to make them more appealing and effective.

  4. +
  5. Finally, we’ll see how to make a figure with multiple panels or subplots.

  6. +
+

Press this button to run this notebook on Colab:

+

+

or click here to read it on NBViewer

+
+
+

Installation instructions

+

Coming soon.

+
+
+ + + + +
+ +
+
+ + +
+ + +
+
+
+

+ + By Allen B. Downey
+ + © Copyright 2020.
+

+
+
+
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 0000000..a33f53c --- /dev/null +++ b/objects.inv @@ -0,0 +1,6 @@ +# Sphinx inventory version 2 +# Project: Python +# Version: +# The remainder of this file is compressed using zlib. +xڅj!F} +_ /.4E  vױ: ݷoRW3Q5k4Lb+T{r{L$Hj[d3+R: ̮+:]!Bm'v悸jCBN[v:z͝x;\,xL ]k<2y$A\ to֛t%z;6Ǔz4qQ5>`Rxy/󳹀 tTiw}?)m \ No newline at end of file diff --git a/search.html b/search.html new file mode 100644 index 0000000..bb20461 --- /dev/null +++ b/search.html @@ -0,0 +1,266 @@ + + + + + + + + Search — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
+ +
+ +

Search

+
+ +

+ Please activate JavaScript to enable the search + functionality. +

+
+

+ Searching for multiple words only shows matches that contain + all words. +

+
+ + + +
+ +
+ +
+ +
+ +
+
+ + +
+ + +
+
+
+

+ + By Allen B. Downey
+ + © Copyright 2020.
+

+
+
+
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 0000000..1750ec4 --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({docnames:["01_query","02_coords","03_motion","04_select","05_join","06_photo","07_plot","README","index","test_setup"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["01_query.ipynb","02_coords.ipynb","03_motion.ipynb","04_select.ipynb","05_join.ipynb","06_photo.ipynb","07_plot.ipynb","README.md","index.md","test_setup.ipynb"],objects:{},objnames:{},objtypes:{},terms:{"000":[1,2,3],"000000e":2,"000831":5,"00347705":3,"0034770546523735":3,"0051":1,"00781":1,"0092247424630945":0,"0092427896695131561015612256418500423168":4,"009471":5,"016078":[3,5],"0160784008206476":3,"0173655836748":3,"020103160014030861015612386332668697600":4,"0203041897099641431015635614168640132864":4,"0211787423933783961015635850945892748672":4,"0212759940136962":0,"02127599401369620":0,"022652498590129771015612332147361443072":4,"0233280236600626":0,"0252932373534968981015612282738058264960":4,"0317837403475309051015612250375480101760":4,"031798":[3,5],"032476530099618431015612426744016802432":4,"0331645898811":0,"0343230288289910761015635535454774983040":4,"03521988":3,"035219883740934":3,"0360642408180257351015612331739340341760":4,"0365246268534030541015635598607974369792":4,"0366268278207166061015635737661835496576":4,"0388102681415775161015635674126383965568":4,"04016696":3,"040166963232815":3,"040191748305466981015612394926899159168":4,"042357158300018151015612241781249124608":4,"0436496516182":2,"044516":5,"0450000762939":4,"045188209150430151015635600532119713664":4,"047202554132500061015635497276810313600":4,"05037121":3,"050371212154984":3,"0512642120258362051015612296172717818624":4,"05240":0,"05242":0,"05243":0,"05244":0,"05245":0,"0536670358954670841015635860218726658176":4,"05443955111134051":0,"054439551111340510":0,"05456487172972":2,"05560":0,"0565747323689927":0,"05657473236899270":0,"058532837763820":0,"059607":2,"05981294804957":3,"05981295":3,"06138786534987":2,"06566578919313":2,"06900136127674149":0,"08333":1,"08333333":1,"086156535525720":0,"090544709622938":3,"09054471":3,"092339":[3,5],"09233926905897":3,"09631023":3,"096310230579248":3,"099625":2,"0x7f446b1e8bb0":3,"0x7f9222e9cb20":0,"0x7f922376e0a0":0,"100":[1,2,3],"1000":3,"1001":3,"1006":3,"102775":5,"10294642821734962":0,"103640":2,"1048576":0,"1049":[2,3],"105478836426514":3,"10547884":3,"106963983518598261":0,"110783":2,"113270239706202":0,"118509434328643730":0,"126":3,"1266016679823622":0,"127":3,"13070799264892050":0,"13177563215973":2,"133391":[3,5],"134":1,"135":[1,3],"135d25m17":1,"13611254":1,"136112541397996":1,"137":[3,5],"137043174954120":0,"1375007629395":4,"138":[3,5],"139374":1,"140":1,"140340":[1,2],"141":[1,2,3],"141d36m09":1,"142":2,"1422630184554958":0,"14290850381608820":0,"14290850381608822":0,"143":[1,2],"144":2,"146":1,"146d16m31":1,"150":1,"151599884033214":4,"152":1,"152d49m00":1,"1576":1,"1601903242219o":0,"1601903357321o":[],"1603114980658o":1,"1603132746237o":3,"16083338":3,"160833381392624":3,"1612":0,"163":3,"165984":2,"1660452431882023":0,"166932":2,"172":3,"172931":5,"17473118":[5,6],"17473118279569888":5,"175":4,"17532366511560785":0,"17m":2,"182":3,"18339801317677":2,"196544":[3,5],"1965441084838":3,"19923146":3,"199231461993783":3,"1993":1,"19946557779138105":3,"199466":[3,5],"19d15m42":1,"2000":[0,4],"2001":4,"2010":2,"2013":0,"2016":0,"2019":[],"2035993780158853":0,"2041189982608354":0,"209568295785240":0,"21505376":[5,6],"2150537634408602":5,"216485":[3,5],"21648525150429":3,"218492":5,"223692":[3,5],"227920":2,"234399795532218":4,"24242734020255":3,"244439":2,"245599765990594":3,"24559977":3,"247329893833296":3,"247330":[3,5],"24797471":3,"247974712069263":3,"2492850691110850":0,"25084":2,"254529":2,"25452941346344":2,"255079498426542":0,"25734489623333540":2,"257345":2,"25d52m38":1,"26190982":1,"261909820533692":1,"263":0,"264":0,"266":1,"2674800612552977":0,"267623626829920":0,"26769745823267":2,"26847919":3,"268479190206636":3,"2717538145759051":3,"271754":[3,5],"27329749":[5,6],"27329749103942647":5,"2735991502653037":0,"27533313607782":1,"27533314":1,"2780935768316":2,"27d08m10":1,"282":0,"2873":5,"287300109863317":4,"291499":5,"297472":2,"2mass":0,"3000":0,"300956585724798":5,"30095659":[5,6],"3022057897812064":0,"303":3,"304":0,"304830296257144":1,"3048303":1,"30559858565638":3,"30641519":3,"306415190921692":3,"306747":2,"306901":[3,5],"30745551377348623":3,"307456":[3,5],"3076000213623":4,"3110309037199280":0,"314514":5,"31829694530366":0,"333000183105514":4,"3339996337891":4,"334000":5,"334407":5,"335041":5,"33554432":0,"337689":5,"34082545787549":3,"34082546":3,"346409":[3,5],"346409129876392":3,"3464446494840354":0,"34644464948403540":0,"3465790413276930":0,"34d18m17":1,"357536":5,"361362712556612":3,"361363":[3,5],"36286062483080":0,"3711441829917720":0,"3724":[4,5],"3733943917490343":0,"37339439174903430":0,"376256953641620":0,"3778523888981841":0,"379299163818417":4,"3804":5,"384899139404320":4,"3891":1,"3894019486060072":0,"3897849462365591":5,"38978495":[5,6],"390952370410666":0,"396k":4,"39818224846127004":0,"398182248461270040":0,"398623940157561":3,"4057468287575835392":1,"4057468321929794432":1,"4057468351995073024":1,"4057469661959554560":1,"4057469868125641984":1,"4057470039924301696":1,"4057470349160630656":1,"4057470520960672640":1,"4057470555320409600":1,"4057482027171038976":1,"406821174303780":0,"408554916570420":0,"414829591355289":0,"41554585481808":2,"4166017695258":2,"41683":1,"4198108491382455":3,"41981085":3,"42163944":1,"42163944306296":1,"422728":2,"42361471245557913":0,"423614712455579130":0,"423940229776128":3,"42394023":3,"42442296":3,"42442296194263":3,"425404":5,"4281005859375":4,"4301075268817204":5,"43010753":[5,6],"4361400589412060":0,"43911323550176806":0,"441400527954115":4,"443":[0,1,3,4,9],"44357135":3,"443571352854612":3,"44494195652069":3,"4457":5,"44677065513286795522015":0,"4467706551328679552270":0,"44677075477573274882015":0,"4467707547757327488269":0,"44677109150118026242015":0,"4467710915011802624269":0,"44677122550373000962015":0,"4467712255037300096270":0,"44677170997669445122015":0,"4467717099766944512270":0,"44677190582657812482015":0,"4467719058265781248270":0,"4467722326741572352270":0,"44677323554910877442015":0,"4467732355491087744270":0,"44677327720945730562015":0,"44677350011817617922015":0,"4467735001181761792270":0,"44677371014219166722015":0,"4467737101421916672270":0,"450599670410219":4,"45307359523051777282015":0,"45307363646185392642015":0,"45307383617937696002015":0,"45307409387744093442015":0,"45307433439514055682015":0,"45307468443413159682015":0,"45307512810560226562015":0,"45307526511350812162015":0,"45307550606271623682015":0,"45307635131191372802015":0,"45307684566150264322015":0,"4598362614808367":0,"4603095562147530":0,"470352406647465":0,"47260492416258":3,"474147574053124":0,"47611926":3,"476119260818695":3,"476168":2,"478099822998":4,"478100":5,"483019":2,"48301935991023":2,"4830193599102321":2,"486224":2,"490481778113859":3,"490482":[3,5],"491347561327420":0,"492309":5,"4937921513912002":0,"494400024414116":4,"496":5,"503299713134813":4,"50951508623503":3,"509812721702093":0,"51108346614440":0,"515199661254919":4,"516838":2,"51683846838757662":2,"5174007415771":4,"517401":5,"517499923706116":4,"5177001953125":4,"5187065217173":3,"518707":[3,5],"52170713760118":5,"52170714":[5,6],"5223007202148":4,"522399902343816":4,"5233504963518460":0,"524288":0,"5269":0,"5270":0,"527126":[3,5],"527126084599517":3,"5281":0,"5337":1,"5376344086021505":5,"53763441":[5,6],"544584":2,"5481972":[5,6],"548197203826344":5,"557744":5,"5585239223461581":0,"559971827601260":0,"560608":[3,5],"5620173752896025":0,"5672536244872520":0,"56924278755102660":0,"576671731208250":0,"577394":2,"57739430926034":2,"584105":2,"58671691646745":3,"586717":[3,5],"58913564478618":2,"589136":2,"5902":5,"5926328820420083":3,"592633":[3,5],"594":1,"5942653":3,"594265302440828":3,"594569":5,"595792323153987":0,"6014268933659210":0,"60191317":[5,6],"601913171449596":5,"60264825":1,"60264825107333":1,"6092":5,"611722027231764":3,"61172203":3,"6117399163086398":0,"61173991630863980":0,"6122417812491246081297513437559955610":4,"61224178124912460820":4,"612250375480101760":4,"6122503754801017601297413464758974640":4,"61225037548010176015":4,"612256418500423168":4,"6122564185004231681299313490752973100":4,"61225641850042316820":4,"612282738058264960":4,"6122827380582649601297413404459335190":4,"61228273805826496022":4,"612288854091187712":4,"612296172717818624":4,"6122961727178186241296913380061687800":4,"61229617271781862417":4,"6123317393403417601301113412177938390":4,"61233173934034176021":4,"6123321473614430721301413414585387770":4,"61233214736144307221":4,"612386332668697600":4,"6123863326686976001303513545702197740":4,"61238633266869760019":4,"612394926899159168":4,"6123949268991591681305813551997517950":4,"61239492689915916816":4,"6124267440168024321305213468524656560":4,"61242674401680243217":4,"612428870024913152":4,"612429144902815104":4,"612485911486166656":4,"622":3,"6280002593994":4,"629":0,"630489":[3,5],"63048941944396":3,"635497276810313600":[4,5],"6354972768103136001308113804456319300":4,"63549727681031360019":4,"635518889086133376":4,"635535454774983040":[4,5],"6355354547749830401306313783776573690":4,"63553545477498304016":4,"635551706931167104":4,"635559124339440000":[3,4,5],"635580294233854464":4,"6355986079743697921303413920912795130":4,"63559860797436979216":4,"6356005321197136641304213922858936230":4,"63560053211971366420":4,"635614168640132864":4,"6356141686401328641305713959221401350":4,"63561416864013286416":4,"635674126383965568":[3,4,5],"6356741263839655681308313884284887200":4,"63567412638396556819":4,"6357376618354965761310013993335021360":4,"63573766183549657614":4,"635821843194387840":4,"6358509458927486721320113986549341470":4,"63585094589274867216":4,"635860218726658176":[3,4,5],"6358602187266581761309113851876713490":4,"63586021872665817617":4,"637987125186749568":2,"637987125186749568142":2,"638049655615392384":2,"638073505568978688":2,"638086386175786752":2,"6382230817672987":0,"638285195917112960":2,"64484588686904":2,"64528557468074":2,"645286":2,"6518001556396":4,"6581664892880896":0,"662702":2,"6630824372759856":5,"66308244":[5,6],"6662998199463":4,"669179465293931":0,"6691794652939310":0,"67307907024910":0,"674894125178565":3,"67489413":3,"6781005859375":4,"678101":5,"682147":5,"68874172":[5,6],"688741721854306":5,"6908739159247":2,"692":3,"702780":[3,5],"7034050179211468":5,"70340502":[5,6],"7077765320492870":0,"714023598831554":3,"7140236":3,"71891096":[5,6],"71891096394408":5,"723":0,"723655456335619":3,"72365546":3,"72480529715140":0,"726277659009568":0,"7262776590095680":0,"7295":3,"7341":5,"7342":5,"7343":5,"7344":5,"7345":5,"7346":[3,4,5],"7347140078529106":3,"73471401":3,"741800":[3,5],"7464117578883":3,"74641176":3,"748779":[3,5],"7487794924398758":3,"750":4,"7549581886719651":0,"75623260987968":3,"75623261":3,"756k":3,"757716":2,"75771616932985":2,"75912098":3,"759120984106968":3,"7702681295401":2,"770521900009566":3,"770522":[3,5],"77247179230470":0,"7741412301054209":0,"77414123010542090":0,"77696341662764":2,"779463":[3,5],"785300":5,"78587196":[5,6],"785871964679913":5,"791393":[3,5],"7913934419894347":3,"7920417800164183":0,"81671044675923":1,"81671045":1,"81762228999614":2,"8205551921782785":0,"82055519217827850":0,"8212003707886":4,"8237207945098111e":2,"823721":2,"828100204467817":4,"8288530465949819":5,"82885305":[5,6],"837752":5,"842874":[3,5],"84372158574957370":0,"857327":2,"85955659758691580":0,"864007":5,"864952855984358":0,"865699768066419":4,"871599197387719":4,"872092143634720":0,"873":3,"874312918885040":0,"8754":1,"87738722767213":1,"87738723":1,"88267277109107120":0,"88580702":3,"885807024935527":3,"8867339293525688":0,"887462805949271":0,"89470793235991240":0,"89470793235991242":0,"89551292869012":2,"897001":[3,5],"8978":5,"897800445556617":4,"902":1,"902869757174393":5,"90286976":[5,6],"9037072088489417":0,"9197224705139885":0,"921180886411620":0,"922888231734588":0,"9228882317345880":0,"923799514770516":4,"9238":5,"9242":5,"924200057983418":4,"9242670062090182":0,"926700592041":4,"927008559859825":0,"9328536286811":3,"9347319464589":2,"940":3,"941079":2,"941679":[3,5],"941679495793577":3,"941813":2,"941813096629439":2,"945956347594":2,"94628403":[5,6],"94628403237675":5,"950660":2,"95159272":3,"95159272432137":3,"951878058650085":3,"95187806":3,"95290654893304":5,"95290655":[5,6],"9612007141113":4,"967":3,"96809693073471":0,"969":3,"96k":4,"971":3,"9719742773203504":0,"97282480557786":2,"9743995666504":4,"9785380604519425":0,"9806225910160181":0,"98062259101601810":0,"9849004745483":4,"987786":2,"9923000335693":4,"999":0,"abstract":0,"boolean":[2,5],"break":[0,4],"byte":1,"case":[0,1,2,3,4,5,6],"class":[0,4],"default":6,"final":[0,2,5,6,7,8],"float":[0,1],"function":[0,1,2,3,4,5,6,7,8],"import":[0,1,2,3,4,5,6,9],"int":[0,1,3,4,9],"long":4,"new":[0,3,5,6],"null":5,"public":[0,6,7,8],"return":[0,1,2,3,5,7,8],"short":[0,4],"super":6,"switch":6,"transient":0,"true":[0,1,2,3,4,5,6,9],"try":[0,1,2,3,4,5],"while":[0,1,3],AND:[0,1,2,3],And:[0,1,2,3,4,5,6],Are:0,BUT:[],But:[0,1,2,3,4,5],FOR:[],For:[0,1,2,3,4,5,6],IDs:4,NOT:0,Not:6,One:[0,1,2,4],THE:[],That:[0,1,2,3,4,7,8],The:[0,1,2,3,4,5,6,7,8],Then:[1,2,3,4,5,6,7,8],There:[0,1,4,6],These:[0,2,5],USE:[],Use:[0,1,2,3,4,5,6,7,8,9],Using:[0,3,7,8],WITH:[],With:[0,2,3],__builtins__:1,__cached__:1,__doc__:1,__file__:1,__init__:1,__loader__:1,__name__:1,__package__:1,__path__:1,__spec__:1,_classic_test_patch:6,a_g_percentile_low:0,a_g_percentile_upp:0,a_g_val:0,aadu:1,aarcmin:1,aarcsec:1,aau:1,aba:1,abamper:1,abarn:1,abc:1,abcoulomb:1,abeam:1,abflux:1,abil:[0,2],abin:1,abit:1,abl:[0,1,2,3,4,5,6],abmag:1,about:[0,1,2,3,4,5,6,7,8],abov:6,abyt:1,access:[0,4,7,8],accord:4,accumul:0,accur:[0,5],acd:1,achan:1,acount:1,act:1,action:[],actual:0,add:[0,1,2,3,4,5,6,7,8],add_enabled_equival:1,add_enabled_unit:1,add_patch:6,adding:[0,3,6],addit:[3,6],adeg:1,adjust:2,adql:[0,1,2,3,4,5,7,8],adrian:[0,1,2,3,4,5,6,7,8],adu:1,advantag:[0,5],adyn:1,aerg:1,aev:1,affect:6,after:[0,1,2,3,4,5,6],again:[0,1,2,3,4,5,6],against:4,agal:1,age:[4,5],agenc:0,agg:5,ahz:1,aji:1,algorithm:4,align:[2,6],all:[0,1,2,3,4,5,6,9],allclos:1,allendownei:[2,3,4,5,6],allow:[0,2,3],allwise_best_neighbour:0,allwise_neighbourhood:0,allwise_original_valid:0,alm:1,almost:[0,4,5],along:[0,1,2,3,5,6],alpha:[2,3,4,5,6],alreadi:[1,2,5],also:[0,1,2,3,4,5,6,7,8],altern:[0,1,5,6],although:[2,3,6],altogeth:1,alwai:[0,1,2,4],alx:1,alyr:1,amag:1,american:[7,8],amin:1,amol:1,amount:3,amp:1,amper:1,ana:[0,1,2,3,4,5,6,7,8],anaconda3:1,analysi:[0,1,2,3,4,5,6,7,8],angstrom:1,angular_dist:4,ani:[0,2,3,6,9],annot:[3,7,8],annum:1,anonym:[0,1],anoth:[1,2,4,5,6,7,8],answer:5,anyon:5,anyth:3,anywai:0,aohm:1,apa:1,apart:0,apassdr9:0,apassdr9_best_neighbour:0,apassdr9_neighbourhood:0,apc:1,aph:1,aphoton:1,apix:1,apixel:1,apo:2,appar:[4,5],appeal:[6,7,8],appear:[0,1,4,5,6,7,8],append:4,appli:[2,6],applic:3,approxim:4,arad:1,arbitrari:2,archaeolog:0,archiv:1,arcmin:1,arcminut:1,arcsec:[0,1,4],arcsecond:1,area:[2,4,5,6],argument:[0,1,2,5,6],ari:1,aris:[],around:[2,3,4,5],arrai:[0,3,5,6],arrang:6,arrow:6,arrowprop:6,articl:0,arxiv:0,ascens:[0,1,2,3],asi:0,ask:[0,1,5,9],aspect:[5,6],aspx:0,asr:1,assembl:[0,1],assign:[0,4],associ:[0,1,2],assum:[0,7,8],ast:1,astro:[0,1,2,3,4,5,6],astrometr:0,astrometri:0,astrometric_chi2_:0,astrometric_excess_nois:0,astrometric_excess_noise_sig:0,astrometric_gof_:0,astrometric_matched_observ:0,astrometric_n_bad_obs_:0,astrometric_n_good_obs_:0,astrometric_n_obs_:0,astrometric_n_obs_ac:0,astrometric_params_solv:0,astrometric_primary_flag:0,astrometric_pseudo_colour:0,astrometric_pseudo_colour_error:0,astrometric_sigma5d_max:0,astrometric_weight_:0,astronom:0,astronometri:0,astronomi:[0,1,2,3,4,5,6,7,8],astronomical_unit:1,astronomicaldata:[1,2,3,4,5,6],astrophi:1,astropi:[0,1,2,3,4,5,7,8,9],astroqueri:[0,1,2,3,4,5,6,9],async_20201005090722:0,async_20201005090917:[],async_20201019094300:1,async_20201019143906:3,attempt:0,attent:6,attoamp:1,attoamper:1,attoannum:1,attoarcminut:1,attoarcsecond:1,attoastronomical_unit:1,attobarn:1,attobary:1,attobit:1,attobyt:1,attocandela:1,attocoulomb:1,attocount:1,attoda:1,attodai:1,attodalton:1,attodeby:1,attodegre:1,attodyn:1,attoelectronvolt:1,attofarad:1,attog:1,attogauss:1,attogram:1,attohenri:1,attohertz:1,attohour:1,attohr:1,attojanski:1,attojoul:1,attokays:1,attokelvin:1,attolightyear:1,attolit:1,attolumen:1,attolux:1,attomet:1,attominut:1,attomol:1,attonewton:1,attoohm:1,attoparsec:1,attopasc:1,attophoton:1,attopixel:1,attopois:1,attoradian:1,attorayleigh:1,attorydberg:1,attosecond:1,attosiemen:1,attosteradian:1,attostok:1,attotesla:1,attovolt:1,attovoxel:1,attowatt:1,attoweb:1,attoyear:1,attribut:[2,4],audienc:6,author:[5,6],automat:5,aux_allwise_agn_gdr2_cross_id:0,aux_iers_gdr2_cross_id:0,aux_qso_icrf2_match:0,aux_sso_orbit:0,aux_sso_orbit_residu:0,avail:[0,4,5,6,7],avoid:[0,2,3],avox:1,avoxel:1,awai:[0,2],awar:7,awb:1,awkward:2,axes:[2,5,6],axi:[1,2,5,6],axvlin:6,ayr:1,azale:[6,7,8],back:[0,1,3,4,5,6,7,8],background:[0,4,5,6],bad:[0,3,4],badli:2,band:[4,5],bar:1,barn:1,bary:1,base:[0,1,3,4,6,7,8],basi:0,basic:[0,7,8],beam:1,beam_angular_area:1,beaten:[0,1,2,3,4,5,6,7,8],becaus:[0,1,2,4,5],becker:[7,8],becom:3,becquerel:1,bednar:[],been:[0,4,5,6],befor:[0,1,2,3,4,5,6],begin:2,behav:1,behavior:6,being:0,belong:1,below:[2,6,7,8],benefit:5,best_neighbour_multipl:4,better:[3,6],between:[0,1,2,3,4,5],big:[0,1,2,3,4,6],bigger:[0,1,2,3,6,7,8],bin:1,binari:[2,3,4],binary_prefix:1,biot:1,bit:[0,1],black:[2,6],blue:2,bluer:5,bmh:6,bol:1,bonaca:[0,1,2,3,4,5,6,7,8],bonu:4,bool:[2,5],bostroem:[6,7,8],both:[0,2,4,5],bottom:[3,6],bound:[0,2,3],boundari:5,bp_g:0,bp_rp:[0,1,3,4],brace:0,bracket:[0,2,4],brett:[7,8],briefli:4,bright:[5,6],brighter:5,brightness_temperatur:1,broadband:0,builtin_fram:1,button:[7,8],c_gd1:3,c_sky:3,cadu:1,calcul:2,calibr:0,call:[0,1,2,4,5,6],camera:0,can:[0,1,2,3,4,5,6,7,8],candela:1,candid:[2,4,5,6,7,8],candidate_df:[3,4,5,6],candidate_t:[3,4],capabl:2,capit:0,caption:6,carcmin:1,carcsec:1,care:0,carpentri:[0,1,2,3,4,5,6,7,8],catalog:[0,4],catalogu:0,cau:1,caus:[0,1,2],caveat:3,cba:1,cbarn:1,cbeam:1,cbin:1,cbit:1,cbyte:1,ccd:1,cchan:1,ccount:1,cct:1,cdeg:1,cdyn:1,celesti:1,cell:[0,1,2,3,4,5,6],celsiu:1,center:[0,1,2,3],centerlin:[3,6,7,8],centiamp:1,centiamper:1,centiannum:1,centiarcminut:1,centiarcsecond:1,centiastronomical_unit:1,centibarn:1,centibary:1,centibit:1,centibyt:1,centicandela:1,centicoulomb:1,centicount:1,centida:1,centidai:1,centidalton:1,centideby:1,centidegre:1,centidyn:1,centielectronvolt:1,centifarad:1,centig:1,centigauss:1,centigram:1,centihenri:1,centihertz:1,centihour:1,centihr:1,centijanski:1,centijoul:1,centikays:1,centikelvin:1,centilightyear:1,centilit:1,centilumen:1,centilux:1,centimet:1,centiminut:1,centimol:1,centinewton:1,centiohm:1,centiparsec:1,centipasc:1,centiphoton:1,centipixel:1,centipois:1,centiradian:1,centirayleigh:1,centirydberg:1,centisecond:1,centisiemen:1,centisteradian:1,centistok:1,centitesla:1,centivolt:1,centivoxel:1,centiwatt:1,centiweb:1,centiyear:1,cepheid:0,cerg:1,cev:1,cgal:1,cgs:1,challeng:[0,4],chamber:0,chan:1,chang:[0,2,4,5,6],character:0,charg:[],check:[1,2,3,4,5,6],choic:[0,2,6],choos:[0,2,4,5,6],chose:[2,5],chosen:6,chz:1,circ:1,circl:1,circular:[1,7,8],cjy:1,claim:[],classic:6,claus:[0,3,4],clean:[2,5],clear:4,clearli:[2,3,4,6,7,8],click:[5,7,8],clm:1,clock:0,close:[5,6],clue:0,clump:0,cluster:[0,2,4,5],clx:1,clyr:1,cmag:1,cmin:1,cmol:1,code:[0,1,2,3,4,5,6,9],cohm:1,colab:[0,1,2,3,4,5,6,7,8],cold:0,collabor:[7,8],collect:[0,3],collis:0,colnam:[2,4,5],color:[0,2,4,5,6,7,8],colorblind10:6,colorblind:6,colspan:6,column:[1,3,4,5,6],com:[2,3,4,5,6],combin:[0,4,5,6,7,8],come:[0,1,6,7,8],comma:[1,3],command:[0,5,6],committe:[7,8],common:[0,1,3,4],commonli:0,commun:6,compar:[2,3,5],comparison:[0,2],compel:6,compellingli:[3,6],complet:[0,1,2,3,4,5,6],complex:[1,3],compon:2,compos:[0,1,3,7,8],compositeunit:1,comprehens:6,compress:6,comput:[0,1,2,3,4,5,6],con:2,conda:2,condit:3,cone:[1,4,7,8],configur:6,confirm:[0,2,3,4],confusingli:6,connect:[1,3,4,5,7,8,9],consid:6,consider:0,consist:[4,5,6],constant:2,construct:2,contain:[0,1,2,3,4,5,6,7,8],contains_point:5,content:[0,2],continu:[0,4,5,6],contract:[],contribut:[7,8],control:[2,5,6],conveni:[2,4,6],convent:[2,5],convert:[1,2,3,4,5,7,8],convex:3,convexhul:3,cookbook:0,coord:[1,3,5,6,9],coord_si:0,coordin:[0,2,3,5,6,7,8,9],coordind:6,coords2:5,coords2_df:5,coords_df:[5,6],copi:[],copyright:[],core:[0,1,2,3,4],corner:[1,2,3],corners_icr:[1,3],correct:2,correspond:[2,3,4],cosmic:0,could:[0,2,3,4,5,6],coulomb:1,count:[0,1,4,5],cover:[0,2,3,7,8],cpa:1,cpc:1,cph:1,cphoton:1,cpix:1,cpixel:1,crad:1,creat:[0,1,2,3,4,5,6,9],criterion:3,critieria:4,cross:[0,2,4,5],cry:1,csr:1,cst:1,csv:[7,8],curat:0,curi:1,curiou:6,curli:0,current:[0,2,5,6],curriculum:[7,8],custom:[3,7,8],cut:9,cvox:1,cvoxel:1,cwb:1,cycl:1,cyr:1,dai:0,dalton:1,damag:[],dark:[0,6],dark_background:6,darkgrid:6,dash:6,data:6,databas:[2,3,4,5,7,8],datafram:[0,4,5,6,7,8],datalink_url:0,dataset:[0,1,2,4,5,7,8],datatyp:4,dau:1,dba:1,deal:5,debug:[0,1],deby:1,dec:[0,1,2,3,4,5],dec_error:0,dec_parallax_corr:0,dec_pmdec_corr:0,dec_pmra_corr:0,decibel:1,decibelunit:1,declin:[0,1,2,3],decmean:0,decstack:0,deep:6,def:[2,3,5,6],defin:[1,3,5,6],definit:4,deg:[0,1,2,3,6],degdegma:[0,2],degre:[0,1,2,3,4,5],delet:2,deliber:0,demonstr:[0,6,7,8],denomin:3,dens:2,densiti:2,depend:5,deriv:5,describ:4,descript:[0,1,2,3,4],design:[0,6],detail:[0,2,4,5,6],detect:[0,1,4],determin:[5,6],detrend:0,develop:[0,1,2,4,7,8],dex:1,dexunit:1,dgal:1,dhz:1,diagnost:0,diagram:[0,4,5,6,7,8],dialect:0,dict:6,dictionari:[0,7,8],did:[2,3,4],didn:[4,5],differ:[0,2,4,5,6],difficult:[1,3,4],digit:4,dimens:6,dimensionless:1,dir:[1,2,3,4,5],direct:[0,1,2,3,6],directli:5,directori:6,dirti:6,disappear:0,disast:1,disastr:1,discuss:[0,6],disk:[0,1],displai:[0,1,2,5,6],distanc:[0,2,3,4,5],distinguish:[2,4,5,6],distribut:[],diverg:7,divid:0,djy:1,document:[0,1,2,4,5,6],doe:[0,1,2,5,7,8],doesn:[0,5],dohm:1,domain:2,don:[0,1,2,3,5,6,9],done:[0,1,4,5,6],doubl:4,doubt:5,down:[0,1,4],downei:[1,2,3,4,5],download:[0,1,2,3,4,5,6,7,8,9],dpa:1,dr1:0,dr1_neighbourhood:0,draw:[2,6],drawback:[0,2,4],drew:5,drive:0,dry:1,dst:1,dtype:[0,1,2,3,4,5],dual:0,due:2,duplicated_sourc:0,dure:[2,9],dwarf:[0,4],e_bp_min_rp_percentile_low:0,e_bp_min_rp_percentile_upp:0,e_bp_min_rp_v:0,each:[0,2,3,4,5,6],eadu:1,earcmin:1,earcsec:1,earlier:0,easi:[2,4,5,6],easier:[0,5,6],eau:1,eba:1,ebarn:1,ebeam:1,ebin:1,ebit:1,ebyt:1,ecd:1,echan:1,ecl_lat:0,ecl_lon:0,ecount:1,ect:1,edeg:1,edu:0,edyn:1,eerg:1,eev:1,effect:[0,2,6,7,8],effici:3,egal:1,ehz:1,eib:1,eibit:1,eibyt:1,either:[0,2,3],eji:1,element:[2,3,5,6],elm:1,els:[3,5],elx:1,elyr:1,emag:1,emin:1,emol:1,enclos:3,encod:4,encount:9,end:[1,4,6],engin:6,enough:[0,4,6,7,8],ensur:5,entir:[0,4,6],entiti:5,entri:0,env:1,environ:[5,7,8],eohm:1,epa:1,epc:1,eph:1,ephoton:1,epix:1,epixel:1,epoch:0,epoch_mean:0,epoch_photometry_url:0,equal:[0,4,5,6],erad:1,eri:1,erin:[7,8],error:[0,1,2,3,6,9],esa:[0,1,3,4,9],esac:[0,1,3,4,9],especi:2,esr:1,est:1,estim:[0,2],etc:[0,5],european:0,even:[0,4,5],event:[],eventu:0,everi:[0,2,4,5],everyth:[0,3,4],evox:1,evoxel:1,ewb:1,exactli:[5,6],exampl:[0,1,2,3,4,5,6,7,8],exce:2,except:[0,2],exclud:[0,4],exercis:[0,1,2,3,4,6],exist:[1,2,3,4,5,6],expect:[0,1,2,3,4,5,7,8],experi:[0,5],expertis:2,explain:[0,2,4],explicitli:[1,5],explor:[0,2,4,6,7,8],express:[2,6],exquisit:0,ext_phot_zero_point:0,extend:1,extens:2,extern:[0,4],extra:6,extract:[0,2],eye:[2,5],eyr:1,facecolor:6,fact:5,fail:[0,9],fall:[1,2,3,4,5,7,8],fals:[2,5,6],familiar:[0,2,6,7,8],faq:0,far:[0,2,4,6],farad:1,farther:0,fast:[2,6],faster:[0,1,2],featur:[0,4,6],feel:0,few:[0,2,3,6],fewer:[0,5],field:[0,4],fifth:4,figsiz:[5,6],figur:[0,1,2,3,4,5,7,8],file:[0,1,2,3,4,5,6,7,8],filenam:[1,2,3,4,5,6],filepath:5,fill:[3,6],filter:[0,3,5],find:[0,2,4,6],finish:[0,1,3,4],first:[0,1,2,3,4,5,6],fit:[1,2,3,4,5,7,8],five:0,fivethirtyeight:6,fix:2,flame_flag:0,flatten:3,flewel:0,float64:[0,1,2,3],focu:6,follow:[0,1,2,3,4,5,6,7,8],fontsiz:6,forc:0,foreground:[0,4],form:[1,2,4,7],format:[1,2,3,4,5,7,8],forthcom:0,fortun:4,found:[0,4,6],four:6,fourth:3,fraction:[0,3],fragil:0,frame:[1,2,3,4,5,7,8],frame_rotator_object_typ:0,franklin:1,free:[],from:[0,1,2,3,4,5,6,7,8,9],from_panda:[2,4],full:5,functionquant:1,functionunitbas:1,fund:[7,8],furnish:[],further:[4,5],futur:7,g_0:[5,6],g_flag:0,g_mean_psf_mag:[0,4,5,6],g_mean_psf_mag_error:0,g_rp:0,gadu:1,gaia:[1,2,3,4,5,6,7,8,9],gaia_astrometric_param:4,gaia_data:[2,3],gaia_sourc:[0,1,3],gaiadata:[2,3,9],gaiadr1:0,gaiadr2:[0,1,3,4],gaiadr2_geometric_dist:0,gal:1,gala:[0,1,2,3,4,5,6,7,8,9],galact:[0,2],galaxi:0,galex_ai:0,gap:6,garcmin:1,garcsec:1,gau:1,gauss:1,gba:1,gbarn:1,gbeam:1,gbin:1,gbit:1,gbyte:1,gca:[5,6],gcd:1,gchan:1,gcount:1,gct:1,gd1:[1,2,3,4,5],gd1_candid:[3,4,5,6],gd1_coord:2,gd1_datafram:[2,3,6],gd1_merg:[5,6],gd1_photo:[4,5],gd1_polygon:[5,6],gd1_result:[1,2],gd1koposov10:[1,2,3],gdeg:1,gdyn:1,gea:[0,1,3,4,9],geadata:[0,1,3,4,9],gener:[0,2,4,6],geometr:5,gerg:1,get:[0,2,3,5,6,9],get_configdir:6,get_qualified_nam:0,get_result:[0,1,3,4],get_skycoord:[2,3],gev:1,ggal:1,ggplot:6,ghz:1,gib:1,gibit:1,gibyt:1,gigapixel:0,ginput:5,github:[2,3,4,5,6],give:5,gjy:1,glm:1,globular:[0,4,5],glx:1,glyr:1,gmag:1,gmin:1,gmol:1,goal:[0,4,5],gohm:1,going:2,good:[0,1,2,5,6],googl:[0,1,2,3,4,5,6],gorilla:0,got:3,gotcha:[0,4],gpa:1,gpc:1,gph:1,gphoton:1,gpix:1,gpixel:1,grad:1,grai:6,grant:[],grate:[2,7,8],grayscal:6,greater:0,green:[3,5],grid:6,gry:1,gsc23_best_neighbour:0,gsc23_neighbourhood:0,gsc23_original_valid:0,gsr:1,gst:1,guess:[0,2],guid:6,gvox:1,gvoxel:1,gwb:1,gyr:1,had:0,hand:[2,3,5],handbook:2,happen:[0,4,6],hard:[0,4],has:[0,1,2,3,4,5,6],have:[0,1,2,3,4,5,6],hawaii:0,hdf5:[2,3,4,5,6],head:[2,3,4,5],headlength:6,headwidth:6,heliocentr:1,help:[0,2,6],henc:2,henri:1,here:[0,1,2,3,4,5,6,7,8],herebi:[],hertz:1,hertzsprung:0,hierarch:2,high:2,higher:5,highli:0,highlight:[3,5],hint:[0,4],hipparco:0,hipparcos2_best_neighbour:0,hipparcos2_neighbourhood:0,hipparcos_newreduct:0,his:2,histogram:4,hogg:2,holder:[],home:[0,1],hope:4,host:[0,1,3,4,9],how:[0,1,2,3,4,5,6,7,8],howev:[0,2,3,4,5],http:[0,1,2,3,4,5,6,9],hubble_sc:0,hull:3,human:1,i_flag:0,i_mean_psf_mag:[0,4,5,6],i_mean_psf_mag_error:0,icr:[1,2,3,4,5,7,8],idea:[0,5],ideal:1,ident:[3,4],identifi:[0,1,2,3,4,5,6,7,8],ifa:0,ignor:2,igsl_sourc:0,igsl_source_catalog_id:0,imag:0,immedi:0,implement:2,impli:[],implic:0,improv:[3,6],in_colab:[0,1,2,3,4,5,6],inaccur:[0,2],includ:[0,1,2,4,5,6,7,8],inconsist:5,increment:[0,1,4],index:[2,3],indic:[0,2,3,4,5,6],individu:[2,6],info:[0,1,2,3,4],inform:[0,1,2,3,4,6,7,8],input:0,insid:[3,5,6],inspect:4,instal:7,instanc:4,instead:0,institut:[0,7,8],instruct:[0,1,2,3,4,5,6,7],int32:3,int64:[0,1,2,3,4],int64float64float64:4,int64float64float64float64float64:0,int64float64float64float64float64float64float64float64:[0,2],int64int64float64int32int16int16int16int64:4,integ:2,intend:6,interact:0,interest:[0,5],interfac:[0,2,5,6],intern:1,internet:9,interpret:5,introduc:5,introduct:[0,7,8],invert:[0,5],invert_yaxi:[5,6],invok:[0,1],involv:4,irreducibleunit:1,isochron:[4,5],isol:0,iter:1,its:[0,1,4,6],itself:0,ivoa:4,jake:2,jan:[],janski:1,job1:[0,4],job2:[0,4],job3:0,job:[0,1,3,4,5],jobid:[0,1,3],join:[0,1,3,5,7,8],joul:1,journal:6,jupyt:[0,1,5,7,8],just:[3,4,5],kayser:1,keep:[0,2],kei:[0,2,4],kelvin:1,kept:0,key_column:0,keyword:[0,1,2,5,7,8],kib:1,kibit:1,kibyt:1,kind:[3,4],know:[0,1,2,4,7,8],knowledg:[0,7,8],known:6,koposov:2,kpc:[2,3],l_bol:1,l_sun:1,label:[2,6],languag:2,larg:[0,2,3],larger:[0,2,3],last:[0,3,5],later:[0,1,2],launch:[0,1],launch_job:[0,1],launch_job_async:[0,1,3,4],learn:[0,3,4,5,6],least:[0,3],leav:[0,5,6],led:0,left:[1,2,3,4,5],legibl:6,len:[1,2,3,4,5],length:[0,1,2,3,4,5],less:[0,1,2,3,4,5],lesser:5,lesson:[0,1,2,3,4,5,6,7],let:[0,1,2,3,4,5,6],letter:2,level:[0,5,7,8],liabil:[],liabl:[],lib:1,librari:[7,8,9],like:[0,1,2,3,4,5,6,7,8],limit:[0,1,2,3],line:[0,2,3,5,6],link:[0,1,2,3,4,5,6,7,8],linnean:0,list:[0,1,2,3,4,5,6,7,8],liter:0,littl:[0,1,4,5,6],load:[0,2,3],load_tabl:0,loc:6,local:[1,2,4,5],locat:[1,2,6],logic:[0,2],logquant:1,logunit:1,longer:[0,1,4],longest:0,look:[0,2,3,4,5,6],loop:[0,1],lose:3,lost:3,lot:0,low:[0,2,4],lower:[2,5],lowercas:0,lsun:1,lum_percentile_low:0,lum_percentile_upp:0,lum_val:0,luminos:[0,4],m_bol:1,m_e:1,m_earth:1,m_jup:1,m_jupit:1,m_p:1,m_sun:1,mac:9,made:[0,2,3,5,6],madu:1,mag:[4,5],magazin:0,magnier:0,magnitud:[0,1,4,5,6,7,8],magunit:1,main:[0,1,2,3,4,5,6,7,8],make:[0,1,2,3,4,5,7,8],make_datafram:3,manag:[1,3],mani:[0,1,2,4,5,6],manual:0,maraud:0,marcmin:1,marcsec:1,mark:5,marker:2,markers:[2,3,4,5,6],mas:[0,1,2,3,6],mask:[2,3,5],mass:0,mastweb:0,match:[0,4,5,6],matched_observ:0,materi:[7,8],math:6,mathemat:6,mathrm:[1,6],mathtext:6,matlab:[2,6],matplotlib:[2,3,4,5,6,9],matplotlibrc:6,matter:0,mau:1,max_parallax:0,mba:1,mbarn:1,mbeam:1,mbin:1,mbit:1,mbyte:1,mcd:1,mchan:1,mcount:1,mct:1,mdeg:1,mdyn:1,mean:[0,1,2,4,5,6],mean_varpi_factor_:0,meanobject:0,meant:0,mearth:1,measur:[0,1,2,7,8],medium:6,member:[0,7,8],memori:[0,2],mention:0,merchant:[],merg:[1,6,7,8],messag:[0,6,9],meta2:0,meta:[0,4],metadata:[0,1,2,3],metal:[4,5],meter:0,method:[0,7,8],methodolog:6,mev:1,mgal:1,mhz:1,mib:1,mibit:1,mibyt:1,might:[0,1,2,3,4,5,6,7,9],milki:0,million:1,minim:[3,6],minut:1,mislead:0,misrepres:2,miss:9,mitig:0,mjup:1,mjupit:1,mjy:1,mlm:1,mlx:1,mlyr:1,mmag:1,mmin:1,mmol:1,model:0,modern:6,modifi:[0,3],modul:[0,1,2,3,4,5,6],mohm:1,monitor:0,montez:[7,8],month:2,more:[0,1,2,4,5,6,7,8],morri:[7,8],most:[0,1,2,3,4,5,6],mostli:6,motion:[0,1,4,5,6,7,8],motiv:2,move:[3,4],mpa:1,mpc:1,mph:1,mphoton:1,mpix:1,mpixel:1,mpl:[5,6,9],mplstyle:6,mrad:1,mry:1,msr:1,mst:1,msun:1,mu_:6,much:[0,2,3,5],multi:2,multipl:[0,4,5,7,8],multipli:1,mute:6,mvox:1,mvoxel:1,mwb:1,myr:1,n_bad:[0,1,3],n_detect:0,name:[0,1,2,3,4,5],namedunit:1,nan:[3,5],natur:[0,2],nbviewer:[7,8],ndetect:0,nearbi:0,nearli:2,necessari:3,necessarili:[0,1,6,7,8],need:[0,1,2,3,4,5,6,7,8,9],neg:0,neighbor:4,neither:0,net:4,network:[0,4],newton:1,next:[1,2,3,4,5,7,8],nfrom:0,nice:4,non:[2,5],nonamespaceschemaloc:4,none:[0,1,3,5],noninfring:[],nor:0,normal:0,notabl:3,note:[0,2,4,6,9],notebook:[0,1,2,3,4,5,6,7,9],notic:[0,1,2,3,4,5,6],notnul:5,now:[0,1,2,3,4,5,6],nsource_id:0,nuisanc:0,num:0,number:[0,1,2,3,4,5,6],number_of_m:4,number_of_neighbor:4,number_of_neighbour:4,numpi:[3,5,6,9],nundetect:6,nwhere:0,obj_id:[0,4],obj_info_flag:0,obj_nam:0,object:[0,1,2,3,4,5,6,7,8],objectthin:0,objinfoflag:0,observ:[0,2],observatori:0,obtain:[],obviou:5,oct:[1,2,3,4,5],off:[0,1,2,3,4,5,6,7,8],often:[0,1],ohm:1,old:2,older:5,onc:[0,1,2],one:[0,1,2,4,5,6,7,8],ones:[0,3,6],onli:[0,1,2,3,4,5,6,7,8],onlin:0,only_nam:0,open:9,oper:[2,3,4,5,7,8],opportun:4,oppos:[0,4],option:[0,1,2,3,5,6],orbit:[0,1],order:[0,1,3,4,6],org:4,orient:6,origin:[0,2,3,4,5,6,7,8],original_ext_source_id:4,other:[0,1,2,3,4,5,6,7,8],otherwis:[1,2,5],our:[0,1,2,3,4,5],out:[0,1,2,3,4,5,6],outerspac:0,output:[0,1,3],outsid:[0,1,2,3,4,5,6,7,8],over:4,overdens:[2,3,5],overlap:[2,6],overplot:2,overrid:6,overwrit:[1,4],overwritten:1,own:[0,1,2,3,4,5,6,7,8],owner:[0,1,3],packag:[1,2,6],padu:1,pair:[4,5],palett:6,pan:[0,3,4,5,6],panda:[0,3,4,5,6,7,8,9],panel:[2,3,7,8],panoram:0,panstarr:0,panstarrs1_best_neighbour:[0,4],panstarrs1_neighbourhood:0,panstarrs1_original_valid:[0,4],panstarrs1originalvalid:0,paper:[0,1,2,3,4,5,6,7,8],parallax:[0,1,2,3,5],parallax_error:[0,1,2,3,5],parallax_over_error:0,parallax_pmdec_corr:0,parallax_pmra_corr:0,paramet:[0,5,6,7,8],parcmin:1,parcsec:1,parenthes:2,pars:0,part:[0,1,2,3,4,5,6,7,8],particular:[0,1,2,3],particularli:[0,6],pascal:1,pass:[1,3,5],past:[0,9],pastel:6,patch:[6,9],path:[0,1,2,3,4,5,6,7,8,9],pau:1,pba:1,pbarn:1,pbeam:1,pbin:1,pbit:1,pbyte:1,pcd:1,pchan:1,pcount:1,pct:1,pdeg:1,pdyn:1,peopl:[0,4,6,7,8],per:0,perform:[0,5,7,8],perg:1,perimet:3,permiss:[],permit:[],persist:0,person:[],pev:1,pgal:1,phase:[0,1,3],phi1:[1,2,3,4,5,6],phi1_mask:2,phi1_max:[1,3],phi1_min:[1,3],phi1_rect:[1,3],phi2:[1,2,3,4,5,6],phi2_max:[1,2,3],phi2_min:[1,2,3],phi2_rect:[1,3],phi_1:[1,6],phi_2:[1,6],phi_mask:2,phil:[7,8],phot_bp_mean_flux:0,phot_bp_mean_flux_error:0,phot_bp_mean_flux_over_error:0,phot_bp_mean_mag:0,phot_bp_n_ob:0,phot_bp_rp_excess_factor:0,phot_g_mean_flux:0,phot_g_mean_flux_error:0,phot_g_mean_flux_over_error:0,phot_g_mean_mag:0,phot_g_n_ob:0,phot_proc_mod:0,phot_rp_mean_flux:0,phot_rp_mean_flux_error:0,phot_rp_mean_flux_over_error:0,phot_rp_mean_mag:0,phot_rp_n_ob:0,phot_variable_flag:0,phot_variable_time_series_gfov:0,phot_variable_time_series_gfov_statistical_paramet:0,photo_df:5,photo_t:5,photometr:0,photometri:[0,3,6,7,8],physic:[0,1,7,8],phz:1,pib:1,pibit:1,pibyt:1,pick:[1,2,3,4],pictur:6,piec:4,pip:[0,1,2,3,4,5,6],pipelin:5,pixel:0,pjy:1,place:0,placehold:0,placement:6,plain:[3,4],plan:4,plm:1,plot:[4,7,8],plot_cmd:[5,6],plot_first_select:6,plot_proper_mot:6,plot_second_select:6,plt:[2,3,4,5,6,9],plu:4,plx:1,plyr:1,pm1:[2,3,6],pm1_max:[2,3,6],pm1_min:[2,3,6],pm1_rect:[2,3,6],pm2:[2,3,6],pm2_max:[2,3,6],pm2_min:[2,3,6],pm2_rect:[2,3,6],pm_mask:2,pm_phi1:[2,3,5,6],pm_phi1_cosphi2:[2,3],pm_phi2:[2,3,5,6],pm_point_list:3,pm_vertic:3,pmag:1,pmdec:[0,1,2,3,5],pmdec_error:0,pmdec_poli:3,pmin:1,pmol:1,pmra:[0,1,2,3,5],pmra_error:0,pmra_pmdec_corr:0,pmra_poli:3,pohm:1,point:[0,1,2,3,7,8],point_bas:[1,3],point_list:[1,3],poli:6,polygon:[2,3,6,7,8,9],port:[0,1,3,4,9],portion:[],posit:[0,4,5,6],possibl:[0,1,3,4,6,7,8],post1:4,poster:6,potenti:0,power:5,ppa:1,ppc:1,pph:1,pphoton:1,ppix:1,ppixel:1,ppmxl_best_neighbour:0,ppmxl_neighbourhood:0,ppmxl_original_valid:0,practic:[7,8],prad:1,precis:[0,2],predefin:6,prefer:[0,3,6],prefix:6,prefixunit:1,prepar:[0,2,6,7,8],prerequisit:7,presenc:0,present:[0,3,4,6,7,8],preserv:1,press:[7,8],pretti:[2,3],previou:[0,1,2,3,4,5,6,7,8],previous:6,priam_flag:0,price:[0,1,2,3,4,5,6,7,8],primari:6,print:[0,1,2,3,4,5,6],prior:[0,2],pro:2,probabl:[0,5],problem:[0,2,3,4,5,6,9],process:[0,2,3,4,6],produc:[0,4,5],product:0,profession:6,program:[0,1],project:[2,6],prone:[0,1],proof:1,proper:[0,1,4,5,6,7,8],proper_mot:2,properti:[0,6],protocol:[0,4],provid:[0,1,2,3,4,5,6],pry:1,ps1:0,ps1casjob:0,psr:1,pst:1,pswww:0,publish:[],pull:3,purpos:[2,5],put:[2,6,7,8,9],pvox:1,pvoxel:1,pwb:1,pyia:[0,1,2,3,4,5,6,9],pyplot:[2,3,4,5,6,9],pyr:1,pytabl:[2,5],python3:1,python:[0,1,2,3,4,5,6],qhull:3,quadrant:5,qualiti:[0,6,7,8],quality_flag:0,quantiti:[0,1,7,8],quantityinfo:1,quantityinfobas:1,queri:[1,2,4,5,7,8],query1:[0,4],query2:[0,4],query3:0,query3_bas:0,query4:0,query4_bas:0,query_bas:[1,3],question:6,quick:6,quot:0,r_earth:1,r_flag:0,r_jup:1,r_jupit:1,r_mean_psf_mag:0,r_mean_psf_mag_error:0,r_sun:1,ra_dec_corr:0,ra_error:0,ra_parallax_corr:0,ra_pmdec_corr:0,ra_pmra_corr:0,radial:[0,1,2,3],radial_veloc:[0,1,2,3,5],radial_velocity_error:0,radiu:1,radius_percentile_low:0,radius_percentile_upp:0,radius_v:0,ramean:0,ran:2,random_index:0,rapid:0,rastack:0,rather:[2,4,5],ratio:[5,6],ravedr5_best_neighbour:0,ravedr5_com:0,ravedr5_dr5:0,ravedr5_gra:0,ravedr5_neighbourhood:0,ravedr5_on:0,raw:[2,3,4,5,6],rayleigh:1,read:[0,1,2,3,4,5,6,7,8],read_back_csv:3,read_back_df:2,read_csv:3,read_hdf:[2,3,4,5,6],readabl:1,reader:6,readi:[2,5,6],realli:[0,3,4],rearth:1,reason:[0,2,5],receiv:[0,1,2,3,4,5,6],recent:[0,1,2,3,4,5,6,7,8],recogn:5,reconstruct:0,record:[4,5],rectangl:[2,3,6],rectangular:2,red:[4,5],reduc:0,ref_epoch:0,refer:[0,1,4],reflex:2,reflex_correct:[2,3],refresh:2,region:[2,5,6,7,8],rel:[0,2,3,6],relat:[1,2,3,4,5,6],relationship:4,releas:[0,1,2,3],reload:[1,6,7,8],rememb:[0,2,4],remind:3,remov:0,remove_job:0,reorder:0,repeat:0,repetit:0,replac:[0,1,2],replic:[0,1,2,3,4,5,6,7,8],repositori:[2,6,7,8],repres:[0,1,2,5,6,7,8],represent:1,reproduc:[1,5],reproducibil:5,requir:[0,2,3,6],research:5,resist:0,resourc:4,respons:[0,7,8],rest:2,restrict:1,result:[0,2,3,4,5,6,7,8],results1:[0,4],results2:[0,4],results3:0,retriev:0,reveal:[0,1,2,3,4,5,6,7,8],revers:6,review:[3,6],rewind:0,rich:4,right:[0,1,2,3,4,5],rix:2,rjup:1,rjupit:1,rodolfo:[7,8],rosenfield:[7,8],roughli:2,round:[2,3,4,5],row:[0,1,3,4,5,6],rrlyra:0,rsun:1,run:[0,1,2,3,4,5,6,7,8,9],russel:0,ruw:0,rv_nb_transit:0,rv_template_fe_h:0,rv_template_logg:0,rv_template_teff:0,sai:0,same:[0,2,3,4,5,6],sampl:0,save:[6,7,8],saw:[1,3,4],scale:[0,5],scan:2,scar:0,scatterplot:2,schema:[0,4],scienc:[0,2],scientif:[0,1,5,6],scipi:3,sdss_dr9_best_neighbour:0,sdss_dr9_neighbourhood:0,sdssdr13_photoprimari:0,sdssdr9_best_neighbour:0,sdssdr9_neighbourhood:0,sdssdr9_original_valid:0,seaborn:6,search:[1,3,4,7,8],second:[0,1,2,3,4,5,6],section:[0,2,5],see:[0,1,2,3,4,5,6,7,8],seem:[0,2,5,6],seen:6,select:[0,4,6,7,8],selected_t:2,self:[0,4],sell:[],send:[0,7,8],sens:[2,3],sensit:0,separ:[1,3,6],sequenc:[4,5,6],seri:[1,2,3,4,5,6,7,8],serial:4,server:[0,1,2,3,4,5,7,8,9],set:[0,1,2,3,4,5,6,7,8,9],setup:[0,1,2,3,4,5,6],seventh:6,sever:[6,7,8],shade:[2,4,5,6],shall:[],shape:[1,2,3,6],shorten:2,should:[0,1,2,3,4,5,6,7,8],show:[0,2,3,4,5,6],shown:2,shrink:6,shut:[0,1],side:6,siemen:1,similar:[0,2,4,6],similarli:4,simpl:[0,1,2,6],simplest:4,simplif:5,sinc:[1,2,4,5,6],singl:[0,1,3,4,5,6,7,8],site:1,sixth:5,size:[1,2,3,4,5,6],sky:[0,1,2,3,5,7,8],sky_coordin:2,skycoord:2,skymapperdr1_mast:0,slack:9,slightli:5,slow:[0,3],small:[0,2,3,6],smaller:[1,2,3,4,5],smallest:3,smart:4,societi:[7,8],softwar:2,solar:2,solarize_light2:6,solut:[0,2,3,4,6],solution_id:0,solv:5,some:[0,2,3,4,5,6,9],someon:[0,3,5],someth:[0,1,5],sometim:2,soon:[7,8],sourc:[0,1,2,3,4,5],source_id:[0,1,2,3,4,5],source_id_2:4,source_idg_mean_psf_magi_mean_psf_mag:4,source_idoriginal_ext_source_idangular_distancenumber_of_neighboursnumber_of_matesbest_neighbour_multiplicitygaia_astrometric_paramssource_id_2:4,source_idradecpmrapmdecparallaxparallax_errorradial_veloc:[0,2],source_idref_epochradecparallax:0,space:[0,5,6],span:6,spatial:3,special:[0,5,7,8],specif:1,specifi:[0,1,2,4,5,7,8],specifictypequant:1,spectra:0,spheric:1,spirit:4,spot:2,spread:3,spur:6,sql:[0,1,2,5],ssdc:0,ssl:[0,1,3,4,9],sso_observ:0,sso_sourc:0,stack:0,stage:6,stand:[0,3,5,6],standard:[0,1,2,3],star:[0,1,2,3,4,5,6,7,8],starr:[0,3,4,5,6],starrs1:0,start:[0,1,2,3,4,6,7,8],statement:[0,9],stellar:0,step:[0,1,2,3,4,5,6,7,8],stflux:1,still:[1,3],stmag:1,store:[0,1,2,3,4,5,7,8],str:3,straight:5,strang:2,stream:[0,1,2,3,4,5,6,7,8],stretch:[0,6],string:[0,1,2,3],stripe:2,structur:[0,2,4,6],stsci:0,sty:6,style:[0,2,3],subject:[],sublicens:[],submit:[0,1,4,7,8],submodul:0,subplot2grid:6,subplot:[7,8],subsampl:0,subset:[0,2,6],substanti:[1,2],success:2,successfulli:2,suffix:4,suggest:[0,4],suitabl:4,sum:[2,5],sun:1,superset:2,support:[7,8],suppos:0,sure:[0,3,4,5,6],surround:5,survei:[0,4],surviv:0,symbol:0,sync_20201005090721:0,sync_20201005090726:0,synchron:0,syntax:[0,6],sys:[0,1,2,3,4,5,6],system:[0,1,2,6],systemat:0,tabl:[1,2,3,5,6,7,8,9],tableau:6,tabledata:4,tadu:1,tag:4,take:[0,1,4,5,6,7,8],talk:[0,4,6],tap:[0,1,3,4,9],tap_config:0,tap_schema:0,tap_upload:4,taptabl:0,taptablemeta:0,tarcmin:1,tarcsec:1,task:5,tau:1,tba:1,tbarn:1,tbeam:1,tbin:1,tbit:1,tbyte:1,tcd:1,tchan:1,tcount:1,tct:1,tdeg:1,tdyn:1,technic:6,teff_percentile_low:0,teff_percentile_upp:0,teff_val:0,telescop:0,tell:5,telltal:0,temperatur:[0,4],temptat:0,tend:[3,4],terg:1,term:4,tesla:1,test:[0,1,4,5],tev:1,texliv:6,text:[3,4,6],tgal:1,tgas_sourc:0,than:[0,1,2,3,4,5,6],thei:[0,1,2,3,5,6],them:[0,1,2,3,5,6,7,8,9],theoret:[4,5],theorist:0,thi:[0,1,2,3,4,5,6,7,8,9],thing:[0,2,3,4,5,6],think:[0,2,4,5,6],third:[0,1,2,3],those:[2,3,7,8],three:[0,1,2,3,6],through:[1,7,8],thz:1,tib:1,tibit:1,tibyt:1,tick:6,tick_param:6,tidal:[0,2],tight_layout:6,time:[0,1,2,4,5,6],titl:6,tjy:1,tkagg:5,tlm:1,tlx:1,tlyr:1,tmag:1,tmass_best_neighbour:0,tmass_neighbourhood:0,tmass_original_valid:0,tmass_xsc:0,tmin:1,tmol:1,to_:2,to_csv:3,to_hdf:[2,3,5],to_numpi:[3,5,6],to_panda:[2,3,5],todo:[0,1,2,3,4,5,6],togeth:6,tohm:1,too:[0,4],tool:[0,1,2,3,4,7,8],top:[0,1,3,4,5,6],topic:[0,6,7,8],torn:0,tort:[],tpa:1,tpc:1,tph:1,tphoton:1,tpix:1,tpixel:1,trad:1,transform:[3,4,5,7,8],transform_to:[1,2,3],translat:[3,4],transmit:4,transpar:2,transpos:[3,5,6],treat:5,tricki:[4,5],trip:5,tripl:0,tsr:1,tst:1,tupl:6,turn:0,tvox:1,tvoxel:1,twb:1,tweak:6,twice:2,two:[0,1,2,4,5,6],twocol:6,tycho2:0,tycho2_best_neighbour:0,tycho2_neighbourhood:0,type1cm:6,type:[0,1,2,3,4,5],typefac:6,typeset:6,tyr:1,ucac4_best_neighbour:0,ucac4_neighbourhood:0,ucac4_original_valid:0,ucd:4,undergradu:[0,7,8],understand:0,undetect:6,unexpect:0,uniqu:[0,1,2,3,4],unit:[0,1,2,3,5,7,8,9],unitbas:1,unitconversionerror:1,unitserror:1,unitswarn:1,unittypeerror:1,univers:0,unless:6,unlik:[0,2,4],unnam:3,unneed:3,unnus:6,unpreced:[0,6],unrecognizedunit:1,until:[1,2],updat:0,upload:[7,8],upload_resourc:4,upload_table_nam:4,upper:[0,2],uppercas:0,urat1_best_neighbour:0,urat1_neighbourhood:0,urat1_original_valid:0,url:4,use:[0,1,2,3,4,5,6,7,8],used:[0,1,2,3,4,5,6],useful:[0,2,3,4],user:[0,1,5],uses:[0,1,2,3,4,5,6,7,8],usetex:6,using:[0,1,2,3,4,5,6],usual:[3,4],utf:4,util:[0,1,3,4],valid:5,valu:[0,1,2,3,4,5,6,7,8],value_count:4,vanderpla:2,vari_cepheid:0,vari_classifier_class_definit:0,vari_classifier_definit:0,vari_classifier_result:0,vari_long_period_vari:0,vari_rotation_modul:0,vari_rrlyra:0,vari_short_timescal:0,vari_time_series_statist:0,variabl:[0,1,2,4],variable_summari:0,varieti:[2,3],variou:[0,7,8],veloc:[0,1,2,3],veri:[0,2],verifi:5,versatil:2,version:[0,2,4,6,7],vertic:[3,6],vicin:[1,3,7,8],view:6,visibility_periods_us:0,visibl:4,visual:[0,7,8],vline:6,vocabulari:2,volt:1,vot:[0,1,3],votabl:4,wai:[0,1,2,4,6,7,8],want:[0,2,3,4,5,6,7,8],warn:4,warp:0,warranti:[],water:0,watt:1,weber:1,well:[0,2,6],were:[1,2,4],wget:[2,3,4,5,6,9],what:[0,2,3,4,5,6],whelan:[0,1,2,3,4,5,6,7,8],whelen:2,when:[0,1,2,3,4,5,6],whenev:0,where:[0,1,2,3,4,5,6],whether:[],which:[0,1,2,3,4,6,7,8],white:6,whitegrid:6,who:0,whole:[4,6],whom:[],whose:[2,3,5,7,8],why:[0,2,3,4,5],wide:[0,2],wider:[3,6],width:6,window:[1,2,3,4,5],within:[0,1,2,3,7,8],without:[0,1,2,3],won:3,wonder:[0,2],word:0,work:[0,2,3,4,5,6,7,8],workshop:[0,1,2,3,4,5,6,9],worri:0,would:[0,1,2,3,4,5,6],write:[1,2,3,7,8],writeto:4,written:[0,1,3],wrong:[0,3],wrote:[1,2,3,4],www:[0,4],xlabel:[2,3,4,5,6],xlim:[2,3,5,6],xml:[0,2,4],xmln:4,xmlschema:4,xsi:4,xxx:4,xytext:6,y_flag:0,y_mean_psf_mag:0,y_mean_psf_mag_error:0,yadu:1,yarcmin:1,yarcsec:1,yau:1,yba:1,ybarn:1,ybeam:1,ybin:1,ybit:1,ybyte:1,ycd:1,ychan:1,ycount:1,yct:1,ydeg:1,ydyn:1,yerg:1,yev:1,ygal:1,yhz:1,yjy:1,ylabel:[2,3,4,5,6],ylim:[2,3,5,6],ylm:1,ylx:1,ylyr:1,ymag:1,ymin:1,ymol:1,yohm:1,you:[0,1,2,3,4,5,6,7,8,9],younger:[4,5],your:[0,1,2,3,4,5,6,7,8],yourself:[0,1,2,3,4,5,6],ypa:1,ypc:1,yph:1,yphoton:1,ypix:1,ypixel:1,yrad:1,yrdegdegma:0,yrma:[0,2],yrmasmaskm:[0,2],yry:1,ysr:1,yst:1,yvox:1,yvoxel:1,ywb:1,yyr:1,z_flag:0,z_mean_psf_mag:0,z_mean_psf_mag_error:0,zadu:1,zarcmin:1,zarcsec:1,zau:1,zba:1,zbarn:1,zbeam:1,zbin:1,zbit:1,zbyte:1,zcd:1,zchan:1,zcount:1,zct:1,zdeg:1,zdyn:1,zerg:1,zero:2,zev:1,zgal:1,zhz:1,zjy:1,zlm:1,zlx:1,zlyr:1,zmag:1,zmin:1,zmol:1,zohm:1,zone_id:0,zoom:2,zpa:1,zpc:1,zph:1,zphoton:1,zpix:1,zpixel:1,zrad:1,zry:1,zsr:1,zst:1,zvox:1,zvoxel:1,zwb:1,zyr:1},titles:["Chapter 1","Chapter 2","Chapter 3","Chapter 4","Chapter 5","Chapter 6","Chapter 7","Astronomical Data in Python","Astronomical Data in Python","Astronomical Data in Python"],titleterms:{That:6,adjust:6,annot:6,assembl:3,astronom:[7,8,9],asynchron:0,back:2,base:[2,5],best:[0,1,2,3,4,5,6],centerlin:2,chapter:[0,1,2,3,4,5,6],clean:0,column:[0,2],connect:0,coordin:1,csv:3,custom:6,data:[0,1,2,3,4,5,7,8,9],databas:0,datafram:[2,3],detail:[],draw:5,figur:6,filter:2,font:6,format:0,gaia:0,get:[1,4],instal:[0,1,2,3,4,5,6,8],instruct:8,introduct:[],join:4,languag:0,latex:6,left:6,lesson:[],librari:[0,1,2,3,4,5,6],lower:6,make:6,merg:5,miss:5,more:3,motion:[2,3],multipl:6,notebook:8,one:3,oper:0,option:[],outlin:[0,1,2,3,4,5,6],panda:2,panel:6,photometri:[4,5],plot:[2,3,5,6],point:5,polygon:[1,5],practic:[0,1,2,3,4,5,6],prepar:4,prerequisit:[0,8],proper:[2,3],proport:6,python:[7,8,9],queri:[0,3],rcparam:6,rectangl:1,region:[1,3],reload:[2,3,4,5],result:1,right:6,row:2,save:[1,2,3,5],scatter:2,select:[1,2,3,5],sheet:6,stori:6,style:6,subplot:6,summari:[0,1,2,3,4,5,6],tabl:[0,4],tell:6,time:3,transform:2,upload:4,upper:6,which:5,work:1,write:[0,4,5]}}) \ No newline at end of file diff --git a/test_setup.html b/test_setup.html new file mode 100644 index 0000000..0757850 --- /dev/null +++ b/test_setup.html @@ -0,0 +1,379 @@ + + + + + + + + Astronomical Data in Python — Astronomical Data in Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
+ +
+ +
+

Astronomical Data in Python

+

This notebook imports the libraries we need for the workshop.

+

If any of them are missing, you’ll get an error message.

+

If you don’t get any error messages, you are all set.

+
+
+
from wget import download
+
+
+
+
+
+
+
import pandas as pd
+import numpy as np
+
+
+
+
+
+
+
import matplotlib as mpl
+import matplotlib.pyplot as plt
+from matplotlib.path import Path
+from matplotlib.patches import Polygon
+
+
+
+
+
+
+
import astropy.coordinates as coord
+import astropy.units as u
+from astropy.table import Table
+
+
+
+
+
+
+
import gala.coordinates as gc
+from pyia import GaiaData
+
+
+
+
+
+
+
# Note: running this import statement opens a connection
+# to a Gaia server, so it will fail if you are not connected
+# to the internet.
+
+from astroquery.gaia import Gaia
+
+
+
+
+
Created TAP+ (v1.2.1) - Connection:
+	Host: gea.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+Created TAP+ (v1.2.1) - Connection:
+	Host: geadata.esac.esa.int
+	Use HTTPS: True
+	Port: 443
+	SSL Port: 443
+
+
+
+
+

During the workshop, we might put some code on Slack and ask you to cut and paste it into the notebook.

+

If you are on a Mac, you might encounter a problem:

+
+ + + + +
+ +
+
+ + +
+ + +
+
+
+

+ + By Allen B. Downey
+ + © Copyright 2020.
+

+
+
+
+ + +
+
+ + + + + + + + \ No newline at end of file