{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Exploring\n", "\n", "An exoplanet `Population` is designed to be a (hopefully!) relatively easy way to interact with data for a group of exoplanet systems. Here we step through the basics of how we can explore a population of planets, access standardized planet properties, and filter subsets of planet populations." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Getting started\n", "The `exoatlas` package contains the tools we will use. All planet properties inside a population have astropy [units](https://docs.astropy.org/en/stable/units/) associated with them, so we make also want to have access to those units for our calculations." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import exoatlas as ea\n", "import astropy.units as u" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can always check what version of `exoatlas` we're using with its hidden `.__version__`." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0.2.4'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ea.__version__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create a `Population`\n", "Now, to get started, we'll make a population that contains all confirmed transiting exoplanets. We can read more about the different populations we can create over one the [Creating](creating.html) page. When we create this population, the code will download a table of the latest data from the NASA Exoplanet Archive." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/Users/zkbt/.exoatlas/data/standardized-TransitingExoplanets.txt is 0.009 days old.\n", "Should it be updated? [y/N]\n", "[transitingexoplanets] Loaded standardized table from /Users/zkbt/.exoatlas/data/standardized-TransitingExoplanets.txt\n" ] } ], "source": [ "pop = ea.TransitingExoplanets()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(The code will let you know how long ago your local dataset was updated, and ask if you'd like to update it now.)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## What's inside a `Population`?\n", "The core ingredient to an exoplanet `Population` is a table of planet properties that have been standardized and populated with astropy units. This `pop.standard` table is an astropy [Table](https://docs.astropy.org/en/stable/table/), so its contents can be accessed or modified as any other astropy `Table`." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "Table length=3135\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", "
nameradecperiodsemimajoraxiseomegainclinationtransit_epochtransit_durationtransit_depthstellar_teffstellar_radiusstellar_massUJmagVJmagBJmagRCmagICmagJmagHmagKmagWISE1magWISE2magWISE3magWISE4magradiusradius_uncertainty_upperradius_uncertainty_lowertransit_artransit_brv_semiamplitudemassmass_uncertainty_uppermass_uncertainty_lowerdistancedistance_uncertainty_upperdistance_uncertainty_lowerdiscoverer
degdegdAUdegdegddKsolRadsolMassearthRadearthRadearthRadearthMassearthMassearthMasspcpcpc
str17float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64str44
55Cnce133.14921628.3308180.7365390.01544nannan83.32455733.013nannan5196.00.940.91nan5.966.83nannan4.7684.2654.0154.0013.2964.0514.0141.910.08-0.08nan0.41nan8.080.31-0.3112.590.01-0.01McDonald Observatory
BD+20594b53.65096720.59923241.6855nan0.0nan89.55nannan0.000495766.01.081.67nan11.03811.728nannan9.779.4329.3689.319.3449.3328.9762.5780.112-0.11255.8nan3.122.24819.5349-9.5349180.391.25-1.25K2
CoRoT-10b291.0637080.74614313.24060.10550.53218.988.552454273.34360.12420.01610365075.00.790.89nan15.2216.68nannan12.52711.92911.78211.6411.75211.3968.92310.870.78-0.7831.330.85301.0874.050.85-50.85345.070.0-70.0CoRoT
CoRoT-11b280.6872635.9376882.994330.04360.0nan83.172454597.6790.10420.0114496440.01.371.27nan12.93913.596nannan11.58911.41611.24811.17311.26511.479.19816.030.34-0.346.890.818280.0740.51108.06-108.06560.030.0-30.0CoRoT
CoRoT-12b100.765677-1.2964392.8280420.040160.07105.085.482454398.627070.107260.017445675.01.121.08nan15.51516.343nannan14.02413.6313.55713.4713.4712.538.6116.141.46-1.46nan0.573125.5291.43822.247-20.6581150.085.0-85.0CoRoT
CoRoT-13b102.721137-5.0864454.035190.0510.0nan88.022454790.80910.1308nan5945.01.011.09nan15.03915.777nannan13.7113.40613.37613.1713.21712.6158.9469.920.157-0.15710.810.374157.8415.70420.976-20.9761060.0100.0-100.0CoRoT
CoRoT-14b103.424211-5.5360371.512140.0270.0nan79.62454787.66940.0693nan6035.01.211.13nan16.03316.891nannan14.32114.00713.80613.67913.72912.039.1412.220.78-0.784.780.861230.02415.4190.7-190.71340.0110.0-110.0CoRoT
CoRoT-16b278.524691-6.0025955.352270.06180.33168.4185.012454923.91380.09960.01025650.01.191.1nan15.6316.68nannan13.49612.9812.847nannannannan13.111.79-1.5711.20.82561.96170.03227.014-26.379840.090.0-90.0CoRoT
CoRoT-17b278.699254-6.6122343.76810.04610.00.088.342454923.30930.1966670.00445740.01.591.04nan15.46nannannan13.17412.61512.472nannannannan11.430.78-0.786.230.18312.4772.2995.34-95.34920.050.0-50.0CoRoT
.....................................................................................................................
WTS-1b293.993236.2903253.3520570.0470.1nan85.52454318.7472nan0.0176366250.01.151.2nan16.13nannannan15.37515.18715.271nannannannan16.71.79-2.02nan0.69nan1274.44111.24-111.243200.0900.0-400.0United Kingdom Infrared Telescope
WTS-2b293.73279636.8154911.01870680.018550.0nan83.552454317.81333nannan5000.00.750.82nan15.916.8nannan13.92813.46413.41413.29913.36712.1079.17615.2780.684-0.684nan0.584256.0355.969650.8528-50.85281000.0nannanUnited Kingdom Infrared Telescope
Wolf503b206.847687-6.1368756.001180.0571nannannan2458185.360870.0550417nan4716.00.690.69nan10.2611.27nan9.098.3247.7747.617nannannannan2.030.076-0.073nan0.387nannaninfinf44.580.1-0.1K2
XO-1b240.5493528.1695863.94153nan0.0nan88.81nannan0.0180000000000000025750.00.880.88nan11.1911.8510.8110.439.9399.6019.5279.4959.5189.5079.24812.7780.785-0.78511.37nan116.0263.798941.3179-41.3179164.330.62-0.62XO
XO-2Nb117.02696850.22582.615861780.0368nannan88.012454508.738290.1118292nan5307.00.990.97nan11.13812.00210.66910.2439.7449.349.3089.249.319.2368.83311.1310.135-0.1357.9860.28nan179.891787.94575-7.94575154.941.45-1.45XO
XO-3b65.46958157.8171813.19154nan0.29nan79.32nannan0.00896429.01.540.58nan9.810.25nannan9.0138.8458.7918.7548.7658.7368.37215.8051.345-1.3454.95nan1488.02316.9807378.2177-378.2177214.312.7-2.7XO
XO-4b110.38822358.2681084.12508nan0.0nan88.8nannan0.00780000000000000056397.01.451.1nan10.67411.24nannan9.6679.4769.4069.3739.3989.3788.71614.0110.897-0.8977.68nan168.6451.318660.3877-60.3877274.792.91-2.91XO
XO-5b116.71652739.0945784.18775580.05150.0nan86.82456864.31290.12990.01085430.01.131.04nan12.13nannannan10.77410.44310.34510.33310.38110.2928.35412.780.34-0.34nan0.55146.0378.29.53-9.53278.373.9-3.9XO
XO-6b94.79328273.8276823.76500070.08150.0nan86.02456652.712450.1208333nan6720.01.931.47nan10.25nannannan9.4719.2669.2469.2139.2329.348.70923.2032.466-2.4669.080.633450.01398.452infinf237.062.43-2.43XO
piMenc84.291214-80.4691246.26790.068390.0nan87.4562458325.5040.12304170.00036037.01.11.096.365.676.25nannan4.8694.4244.2414.2693.9724.1994.2192.0420.05-0.0513.380.591.584.820.84-0.8618.280.02-0.02Transiting Exoplanet Survey Satellite (TESS)
" ], "text/plain": [ "\n", " name ra ... discoverer \n", " deg ... \n", " str17 float64 ... str44 \n", "--------- ---------- ... --------------------------------------------\n", " 55Cnce 133.149216 ... McDonald Observatory\n", "BD+20594b 53.650967 ... K2\n", "CoRoT-10b 291.063708 ... CoRoT\n", "CoRoT-11b 280.687263 ... CoRoT\n", "CoRoT-12b 100.765677 ... CoRoT\n", "CoRoT-13b 102.721137 ... CoRoT\n", "CoRoT-14b 103.424211 ... CoRoT\n", "CoRoT-16b 278.524691 ... CoRoT\n", "CoRoT-17b 278.699254 ... CoRoT\n", " ... ... ... ...\n", " WTS-1b 293.9932 ... United Kingdom Infrared Telescope\n", " WTS-2b 293.732796 ... United Kingdom Infrared Telescope\n", " Wolf503b 206.847687 ... K2\n", " XO-1b 240.54935 ... XO\n", " XO-2Nb 117.026968 ... XO\n", " XO-3b 65.469581 ... XO\n", " XO-4b 110.388223 ... XO\n", " XO-5b 116.716527 ... XO\n", " XO-6b 94.793282 ... XO\n", " piMenc 84.291214 ... Transiting Exoplanet Survey Satellite (TESS)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop.standard" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If desired, columns could be added to this standardized table:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "N = len(pop)\n", "pop.standard['something'] = np.arange(N) + 5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## How do we access planet properties?\n", "The main way to access planet properties within a `Populatoin` is with its attributes. That is, we can access an array of the values for some property `x` by calling `pop.x`. Behind the scenes, the population will look to see if there is a column called `\"x\"` in the standardized table and return that column. For example, we can get an array of planet names with:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['55Cnce', 'BD+20594b', 'CoRoT-10b', ..., 'XO-5b', 'XO-6b',\n", " 'piMenc'], dtype='" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop.something" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also have access to quantities that are not directly included in the table itself but can be calculated from them. For example, we can get an array of the amount of insolation that the planets receive from their stars as:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[transitingexoplanets] 1626/3135 semimajoraxes are missing\n", "[transitingexoplanets] 0/3135 are still missing after NVK3L\n" ] }, { "data": { "text/latex": [ "$[3313157.1,~20290.402,~45613.962,~\\dots,~513270.26,~1402428.9,~421394.84] \\; \\mathrm{\\frac{W}{m^{2}}}$" ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop.insolation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this case, the insolation is calculated from the planet's orbital separation and the luminosity of the star (which is itself calculated from the stellar effective temperature and radius).\n", "\n", "If information needed to do a calculation is missing, `exoatlas` will try to estimate them from other available information. In the `.insolation` case, some planets had no semimajor axes defined in the `.standard` table, but we were able to calculate this quantity from the orbital period, the stellar mass, and Newton's Version of Kepler's 3rd Law." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Short descriptions of some common attributes can printed with the `describe_columns()` function." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " name = name of the planet\n", " ra = Right Ascension of the system\n", " dec = Declination of the system\n", " distance = distance to the system\n", " distance_modulus = apparent magnitude - absolute magnitude\n", " discoverer = telescope/project that found this planet\n", " stellar_teff = stellar effective temperature\n", " stellar_mass = stellar mass\n", " stellar_radius = stellar radius\n", " stellar_luminosity = luminosity of the star\n", " stellar_brightness = photon flux from the star at Earth (a function of wavelength)\n", " period = orbital period of the planet\n", " semimajoraxis = the semimajor axis of the planet's orbit\n", " a_over_rs = scaled orbital distance a/R*\n", " b = impact parameter b\n", " e = eccentricity\n", " omega = argument of periastron\n", " radius = planet radius\n", " mass = planet mass\n", " density = density of the planet\n", " insolation = bolometric energy flux the planet receives from its star\n", "relative_insolation = insolation relative to Earth\n", " teq = equilibrium temperature of the planet (assuming 0 albedo)\n", " surface_gravity = surface gravity of the planet\n", " scale_height = scale height of an H2-rich atmosphere\n", " escape_velocity = escape velocity of the planet\n", " escape_parameter = ratio of gravitational potential to thermal energy for an H atom\n", " transit_epoch = a transit midpoint\n", " transit_duration = duration of the transit\n", " transit_depth = fraction of starlight the planet blocks\n", " transit_ar = (transit-derived) scaled orbital distance a/R*\n", " transit_b = (transit-derived) impact parameter b\n", "transmission_signal = transit depth of one scale height of atmosphere\n", " emission_signal = thermal-emission eclipse depth (a function of wavelength)\n", " reflection_signal = reflected-light eclipse depth (for an albedo of 1)\n" ] } ], "source": [ "ea.describe_columns()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With this toolkit, you can now access the data you need to make some pretty fundamental plots in exoplanetary science. For example:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[transitingexoplanets] 1626/3135 semimajoraxes are missing\n", "[transitingexoplanets] 0/3135 are still missing after NVK3L\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.loglog(pop.relative_insolation, pop.radius, '.')\n", "plt.xlabel('Flux Received (relative to Earth)')\n", "plt.ylabel('Planet Radius (Earth radii)');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## How do we access some sub-population of planets?\n", "Often we'll want to pull out some subset of a population. We might want a smaller sample of planets, or all the planets that meet some particular criterion, or maybe the properties of one individual planet. In our experience with `numpy` arrays or `astropy` tables, we've often done this by indexing (`x[0]` or `x[[0, 1, 5]]`), slicing (`x[3:30]`), or masking (`x[some_array > some_other_array]`). \n", "\n", "We can apply the same methods to a `Population`, creating smaller populations by indexing, slicing, or masking. Anything we can do with a `Population` we can do with one of these sub-`Population`s that we create." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pop" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "one_planet = pop[0]\n", "one_planet" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " [population] 0/1 semimajoraxes are missing\n", " [population] 0/1 are still missing after NVK3L\n" ] }, { "data": { "text/plain": [ "(array(['55Cnce'], dtype=',\n", " )" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "one_planet.name, one_planet.radius, one_planet.insolation" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prime_planets = pop[[2, 3, 5, 7, 11, 13, 17, 19, 23]]\n", "prime_planets" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "first_ten = pop[:10]\n", "first_ten" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "every_other_exoplanet = pop[::2]\n", "every_other_exoplanet" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "small = pop[pop.radius < 4*u.Rearth]\n", "small" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Additionally, we can extract an individual planet or a list of planets by indexing the population with planet name(s). This is using astropy tables' `.loc` functionality, with `\"name\"` being used as an index." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cute_planet = pop['GJ 1214b']\n", "cute_planet" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cute_planets = pop[['LHS 1140b', 'GJ 1214b', 'GJ 436b']]\n", "cute_planets" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Explore!\n", "That's about it. For more information about different pre-defined populations see [Creating](creating.html), and for more about pre-packaged visualizations see [Visualizing](visualizing.html)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }