{ "cells": [ { "cell_type": "code", "execution_count": 1, "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": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Gaia" ] }, { "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": [ { "data": { "text/plain": [ "list" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(tables)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 5, "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": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Retrieving table 'gaiadr2.gaia_source'\n", "Parsing table 'gaiadr2.gaia_source'...\n", "Done.\n" ] } ], "source": [ "meta = Gaia.load_table('gaiadr2.gaia_source')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "meta" ] }, { "cell_type": "code", "execution_count": 8, "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": "code", "execution_count": 9, "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": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Retrieving table 'gaiadr2.panstarrs1_original_valid'\n", "Parsing table 'gaiadr2.panstarrs1_original_valid'...\n", "Done.\n" ] } ], "source": [ "meta2 = Gaia.load_table('gaiadr2.panstarrs1_original_valid')" ] }, { "cell_type": "code", "execution_count": 11, "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": [ "for column in meta2.columns:\n", " print(column.name)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Writing queries\n", "\n", "More text here..." ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [], "source": [ "columns = 'source_id, ref_epoch, ra, dec, parallax'" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [], "source": [ "columns2 = 'source_id, ref_epoch, ra, dec, parallax, parallax_error, radial_velocity'" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [], "source": [ "query_base = \"\"\"SELECT\n", "TOP 30\n", "{columns}\n", "FROM gaiadr2.gaia_source\n", "WHERE parallax < {max_parallax}\n", " AND bp_rp BETWEEN -0.75 AND 2\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [], "source": [ "query = query_base.format(columns=columns2, max_parallax=1)" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'SELECT\\nTOP 30\\nsource_id, ref_epoch, ra, dec, parallax, parallax_error, radial_velocity\\nFROM gaiadr2.gaia_source\\nWHERE parallax < 1\\n AND bp_rp BETWEEN -0.75 AND 2\\n'" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "query" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SELECT\n", "TOP 30\n", "source_id, ref_epoch, ra, dec, 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(query)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Add one thing at a time and test as you go" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO: Query finished. [astroquery.utils.tap.core]\n" ] } ], "source": [ "job = Gaia.launch_job_async(query)" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "job" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "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", " ref_epoch float64 yr Reference epoch 0\n", " ra float64 deg Right ascension 0\n", " dec float64 deg Declination 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 30\n", "Jobid: 1605559085364O\n", "Phase: COMPLETED\n", "Owner: None\n", "Output file: async_20201116153805.vot\n", "Results: None\n" ] } ], "source": [ "print(job)" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [], "source": [ "results = job.get_results()" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "data": { "text/html": [ "Table length=30\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_epochradecparallaxparallax_errorradial_velocity
yrdegdegmasmaskm / s
int64float64float64float64float64float64float64
18597729672005484802015.5311.771641800933731.605574369846310.77676656710134280.27955289399217836--
18597823130419448322015.5311.1739052615442331.258797158719847-0.254506888800642430.5006522058606456--
18597808699331532802015.5311.0667937587726331.2192070195836530.343199788483384170.9313353159918977--
18598150578813697282015.5311.5578766357712731.62814807023982-1.19551223562505450.7536507995983105--
18597647208537335042015.5311.696871776401931.434121014193668-2.41168921076873531.0180585839909577--
18597604946150526722015.5311.722914419995531.3447284559601620.339450250459302440.026879108757164063--
18597734138771468802015.5311.823971768771131.5938682761331-0.0231835525781269280.05352617574037097--
18597697030166753282015.5311.969864636669231.5640871174253840.71333022247416060.8298725715561183--
18598131680897720322015.5311.5953101813630631.5329829477371320.36767149371630330.7347671145224394--
.....................
18597923417852878082015.5311.249243736205931.4732067943193170.33042630888564130.13675690977806274--
18597834082524610562015.5311.1180465757439631.2975103423159280.07465393343791340.37680767316478425--
18598102818701331202015.5311.1317236562021531.6869818631307080.268531282382077850.4553883976568405--
18597948156857446402015.5310.9636793925928431.31718097982628-2.9924960676335031.1089042277934307--
18597576771082314242015.5311.9964930756169731.5067280132675340.72818719166763260.7765992662451379--
18597711461345036802015.5311.7460579764317631.4857736696784120.130993519068294040.6713360113643849--
18597686679306137602015.5311.8193987090811631.502967530456080.333511196227516570.20853032024261492--
18597836874395203842015.5311.102653187830931.3188302276307940.363061185666941230.059633195646531766--
18598138853417352962015.5311.620510312927931.569289167922214-0.070595281569173820.14061938403885946--
18597776701758227202015.5311.1223877109449631.202006218552450.0621013562129573840.33608219792403937--
" ], "text/plain": [ "\n", " source_id ref_epoch ... parallax_error radial_velocity\n", " yr ... mas km / s \n", " int64 float64 ... float64 float64 \n", "------------------- --------- ... -------------------- ---------------\n", "1859772967200548480 2015.5 ... 0.27955289399217836 --\n", "1859782313041944832 2015.5 ... 0.5006522058606456 --\n", "1859780869933153280 2015.5 ... 0.9313353159918977 --\n", "1859815057881369728 2015.5 ... 0.7536507995983105 --\n", "1859764720853733504 2015.5 ... 1.0180585839909577 --\n", "1859760494615052672 2015.5 ... 0.026879108757164063 --\n", "1859773413877146880 2015.5 ... 0.05352617574037097 --\n", "1859769703016675328 2015.5 ... 0.8298725715561183 --\n", "1859813168089772032 2015.5 ... 0.7347671145224394 --\n", " ... ... ... ... ...\n", "1859792341785287808 2015.5 ... 0.13675690977806274 --\n", "1859783408252461056 2015.5 ... 0.37680767316478425 --\n", "1859810281870133120 2015.5 ... 0.4553883976568405 --\n", "1859794815685744640 2015.5 ... 1.1089042277934307 --\n", "1859757677108231424 2015.5 ... 0.7765992662451379 --\n", "1859771146134503680 2015.5 ... 0.6713360113643849 --\n", "1859768667930613760 2015.5 ... 0.20853032024261492 --\n", "1859783687439520384 2015.5 ... 0.059633195646531766 --\n", "1859813885341735296 2015.5 ... 0.14061938403885946 --\n", "1859777670175822720 2015.5 ... 0.33608219792403937 --" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "astropy.table.table.Table" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(results)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## Exercise\n", "\n", "Read about SQL operators\n", "\n", "https://www.w3schools.com/sql/sql_operators.asp\n", "\n", "Then modify the previous query to select rows where \n", "`bp_rp` is between -0.75 and 2.\n", "\n", "You can read about this variable at\n", "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": 104, "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", "
a
0a
1a
2a
\n", "" ], "text/plain": [ " a\n", "0 a\n", "1 a\n", "2 a" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "df1 = pd.DataFrame(index=[0, 1, 2])\n", "df1['a'] = 'a'\n", "df1" ] }, { "cell_type": "code", "execution_count": 105, "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", "
b
0b
2b
4b
\n", "
" ], "text/plain": [ " b\n", "0 b\n", "2 b\n", "4 b" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = pd.DataFrame(index=[0, 2, 4])\n", "df2['b'] = 'b'\n", "df2" ] }, { "cell_type": "code", "execution_count": 108, "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", "
ab
0ab
1aNaN
2ab
\n", "
" ], "text/plain": [ " a b\n", "0 a b\n", "1 a NaN\n", "2 a b" ] }, "execution_count": 108, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1['b'] = df2['b']\n", "df1" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3, 2)" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1.shape" ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1 is df2" ] }, { "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 }