Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

🧱 Creating Populations

The primary goal of exoatlas is to create populations of exoplanets which which we can interact in fairly standardized way. Here we summarize a few different pre-defined Population objects we can create. From all these basic populations, you can make your own to play with by indexing, slicing, or masking as described in Populations.

import exoatlas as ea
import exoatlas.visualizations as vi
import astropy.units as u

ea.version()
'0.7.8'

Throughout this page we’ll use a handy PlanetGallery() gallery visualization to see some basic properties of a particular population. For more on useful plots and plotting tools, see Visualizing.

“PredefinedPopulation” = a commonly useful archival dataset

The atlas contains a few predefined populations, for which data are automatically downloaded from archives and standardized into tables in exoatlas’s preferred format. This downloading and standardizing can take a while, so the results will be stored locally, in a directory you can locate with:

ea.locate_local_data()
💾 `exoatlas` archive data will be stored in:
/Users/zabe0091/exoatlas-data

By default, downloaded data will be stored inside your current working directory. If you’ll be using exoatlas from lots of different directories on your computer, and you don’t want to keep downloading fresh copies of the archive into each working directory, you can define one path that should be used for exoatlas data for your entire computer by setting a global EXOATLAS_DATA environment. For example, on a mid-2020s Mac, this looks like editing the shell configuration file ~/.zshrc and adding a line like export EXOATLAS_DATA="/Users/zabe0091/exoatlas-data".

If you ever want to reset the local data, you do so with:

  • ea.reset_local_data() to remove all local files, including raw downloads

  • ea.reset_standardized_data() to remove standardized files but keep raw downloads

If you have recently updated your local version of exoatlas and run into problems with data acting weird, you may want to consider doing a data reset.

“SolarSystem” = major Solar System planets

The eight planets in our own Solar System are useful as a comparison sample. Their properties are built-in with exoatlas, so they don’t need to be downloaded from any archive.

solar = ea.SolarSystem()
solar
✨ Solar System | 8 elements ✨
vi.PlanetGallery().build(solar);
<Figure size 1000x500 with 4 Axes>

Likewise, we have the dwarf planets, smaller minor planets, and moons:

dwarfs = ea.SolarSystemDwarfPlanets()
dwarfs
✨ Solar System Dwarf Planets | 5 elements ✨
minor = ea.SolarSystemMinorPlanets()
minor
✨ Solar System Minor Planets | 10183 elements ✨
moons = ea.SolarSystemMoons()
moons
✨ Solar System Moons | 41 elements ✨

“Exoplanets” = confirmed, published, exoplanets

The NASA Exoplanet Archive maintains a list of confirmed transiting exoplanets. These are systems that have been published in the peer-reviewed literature. Most of them have been characterized in sufficient detail that they are unlikely to be false positives. This archive contains planets discovered through a variety of methods. We can access all exoplanets in the archive, regardless of discovery method, with:

exoplanets = ea.Exoplanets()
exoplanets
✨ Exoplanets | 6128 elements ✨

For many purposes, it will be really handy to have just those exoplanets that transit their stars. To access those:

transiting = ea.TransitingExoplanets()
transiting
✨ Transiting Exoplanets | 4554 elements ✨
vi.PlanetGallery().build([transiting, solar]);
<Figure size 1000x500 with 4 Axes>

Subsets

Some common subsets have been defined as their own Population objects. To make your own subsets, see Populations for how to filter a sample of planets down according to its properties.

Which planets were discovered by the NASA Kepler mission or not?

kepler = ea.Kepler()
kepler
✨ Kepler | 3309 elements ✨
nonkepler = ea.NonKepler()
nonkepler
✨ Non-Kepler | 1245 elements ✨
vi.PlanetGallery().build([kepler, nonkepler, solar]);
<Figure size 1000x500 with 4 Axes>

Which planets were discovered by the NASA TESS mission or not?

tess = ea.TESS()
tess
✨ TESS | 753 elements ✨
nontess = ea.NonTESS()
nontess
✨ NonTESS | 3801 elements ✨
vi.PlanetGallery().build([nontess, tess, solar]);
<Figure size 1000x500 with 4 Axes>

Which planets were discovered from telescopes in space or telescopes on the ground?

space = ea.Space()
space
✨ Space-based | 4098 elements ✨
ground = ea.Ground()
ground
✨ Ground-based | 456 elements ✨
vi.PlanetGallery().build([space, ground, solar]);
<Figure size 1000x500 with 4 Axes>

Which planets have masses that have been detected at better than 5σ5\sigma?

good = ea.GoodMass(sigma=5)
good
✨ Good Mass | 969 elements ✨
bad = ea.BadMass(sigma=5)
bad
✨ Bad Mass | 3598 elements ✨
vi.PlanetGallery().build([bad, good]);
<Figure size 1000x500 with 4 Axes>

Collections

Because we often might want to load up a bunch of population subsets at once, we provide built-in functions that create dictionaries of planets grouped by particular properties. For example, let’s see exoplanets grouped by their original discovery method:

methods = ea.get_exoplanets_by_method()
methods
{np.str_('Astrometry'): ✨ Astrometry | 6 elements ✨, np.str_('Disk Kinematics'): ✨ Disk Kinematics | 1 elements ✨, np.str_('Eclipse Timing Variations'): ✨ Eclipse Timing Variations | 17 elements ✨, np.str_('Imaging'): ✨ Imaging | 94 elements ✨, np.str_('Microlensing'): ✨ Microlensing | 270 elements ✨, np.str_('Orbital Brightness Modulation'): ✨ Orbital Brightness Modulation | 9 elements ✨, np.str_('Pulsar Timing'): ✨ Pulsar Timing | 8 elements ✨, np.str_('Pulsation Timing Variations'): ✨ Pulsation Timing Variations | 2 elements ✨, np.str_('Radial Velocity'): ✨ Radial Velocity | 1171 elements ✨, np.str_('Transit'): ✨ Transit | 4511 elements ✨, np.str_('Transit Timing Variations'): ✨ Transit Timing Variations | 39 elements ✨, 'Solar System': ✨ Solar System | 8 elements ✨}
vi.PlanetGallery().build(methods);
<Figure size 1000x500 with 4 Axes>
teffs = ea.get_exoplanets_by_teff()
teffs
{'O': ✨ O | 2 elements ✨, 'B': ✨ B | 12 elements ✨, 'A': ✨ A | 31 elements ✨, 'F': ✨ F | 1166 elements ✨, 'G': ✨ G | 2195 elements ✨, 'K': ✨ K | 1686 elements ✨, 'M': ✨ M | 547 elements ✨, 'L': ✨ L | 0 elements ✨, 'T': ✨ T | 2 elements ✨, 'Y': ✨ Y | 1 elements ✨}
vi.PlanetGallery().build(teffs);
<Figure size 1000x500 with 4 Axes>

All of these populations assume the values quoted in the archive are correct. If you need to update values, or choose values from different references, please see Curating. If you’re confident your population is good enough for your needs, you can skip along ahead!