Searching for Other Solar Systems

November 21, 2023

Searching for Other Solar Systems

Humans have known for thousands of years about the existence of other planets in our own Solar System. The history of solar system astronomy stretches back across time, potentially to prehistoric cultures. For example, indigenous Australian cultures have long described the motion of the planets across the night sky. Humanity’s picture of Earth’s place in the Solar System and wider universe continues to evolve today, using both space- and ground-based telescopes. One of the many unanswered questions in astronomy is how unique our Solar System is. Is there another Earth? Is there life elsewhere in the Milky Way? In the universe? 

Over the last 30 years, the field of exoplanet science has blossomed, and may hold some of the answers to these questions. Exoplanets are planets that orbit stars other than our Sun, in planetary systems across the Milky Way. As of the publishing of this post, we have found over 5000 planets, with thousands more likely to come in the coming decades. 

We are particularly interested in multi-planet systems, or systems with multiple planets. We can study whether these systems look like our Solar System. Let’s get data on these systems from the NASA Exoplanet Archive (NEA), which collates all of the published exoplanet data in one central location for researchers to analyze. We’ll search the NEA for systems with multiple planets and plot them up to see what they look like. The code below can be found in this GitHub repository.

Introducing the NASA Exoplanet Archive

The NASA Exoplanet Archive hosts information on all of the confirmed exoplanets, as well as many other planet candidates from different telescopes. We can first look at the overview table, which lists all the measured parameters for the confirmed exoplanets.

Figure 1. NASA Exoplanet Archive confirmed planets table, accessed 16 November 2023

The overview table provides  several rows for each exoplanet (e.g. 11 UMi b has three rows). This is because different measurements of planetary systems can return different planet parameters, so separate rows provide information about separate measurements. We can select the set of measurements that we are most confident in using the “Default Parameter Set” column. If we set this to 1, we will only see 1 row for each exoplanet. 

Scraping Data from the NASA Exoplanet Archive (NEA)

We can scrape data from the NEA in order to answer research questions. In my research, I use this technique to download up-to-date subsets of the database without having to download the full database manually and then sort through it. We can use the Table Access Protocol (TAP) to query this database. This means that we can use the TAP to apply a set of conditions to the database, and download the remaining data. This is an alternative to downloading the full table as a .csv file every time we want to access the data. Using the TAP is similar to using an API (which the NEA also has, but is phasing out), where we can interact with the database programmatically via Python. Let’s get started!

We’re going to be downloading data on multi-planet systems, in order to compare these systems to the Solar System by plotting the exoplanets’ orbital periods.

First, let’s import a few useful plotting packages: numpy, pandas and matplotlib, as well as a package which will let us connect to the archive via the web (pyvo).

# Import relevant packages

import pyvo as vo

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

Setting Up the TAP to access the NEA

# Initialize a TAP service object to connect to the database

service = vo.dal.TAPService("https://exoplanetarchive.ipac.caltech.edu/TAP")


def run_query(query, service=service):

    """Function to execute query."""

    query_result = service.search(query)  # sync query

    result = query_result.to_table()  # convert to table

    return result

Now that we have the infrastructure to query the NEA, let’s construct our query. We will write the query in SQL, which is a language for storing and processing data in relational databases.

We want to get all of the columns, so will select everything using the asterisk. We are searching the "ps" table, which corresponds to the Planetary Systems table that we saw before. We are going to search for table entries where the number of planets > 5 (for ease of plotting), where the default flag is 1 (i.e. we are using the preferred parameters in the archive).

multiplanet_query = """

SELECT *

FROM ps

WHERE sy_pnum > 5 AND default_flag = 1

"""

# Run the query, and convert the output to a Pandas dataframe

result = run_query(multiplanet_query).to_pandas()

Processing the Data

Now that we have our data set, we can plot it! If we want to compare these high-multiplicity (i.e. containing more than 5 exoplanets) systems to our Solar System, we can plot them all together.

fig, ax = plt.subplots()


# For each row in the results table, plot a marker corresponding to the planet’s period

for idx, row in result.iterrows():

    ax.scatter(x=row['pl_orbper'], y=row['hostname'], c='navy', zorder=2, s=60)


# Let’s format the plot so it looks a little clearer

ax.xaxis.grid(False)

ax.yaxis.grid(True, linestyle='dashed')

ax.set_xlabel("Period (d)")

ax.tick_params(axis='y', which='minor', left=False, right=False)

ax.invert_yaxis()


# The orbital periods of planets vary a lot, so let’s make the x-axis logarithmic

ax.set_xscale('log')

ax.set_ylabel("")


# Uncomment the line below to add the solar system!

# ax.scatter(x=solarsystemperiods, y=['Sol']*8, c='teal', zorder=3, s=60)


plt.show()

Tada! Here we are plotting the orbital period of the exoplanets in each system on the x-axis, and the system name on the y-axis. The x-axis is logarithmic, which helps us to visualize exoplanetary systems which extend across large ranges of orbital period.

Comparing to the Solar System

Now let’s add the Solar System:

Many of the multi-planet systems that we have discovered look pretty different to the Solar System! For example, all 7 of the TRAPPIST-1 planets orbit closer to their star than Mercury does to our Sun. This is where it is important to note that we’ve plotted the orbital periods logarithmically. Even though the systems might look like they start at similar orbital periods, that is not the case. Many of the other multi-planet systems seem more tightly packed than the Solar System - the planets are closer together. This raises interesting questions about the stability of the system over millions of years, as the planets can disrupt each other’s orbits.

This plot also doesn’t show us information about how big the planets are. Many of the confirmed planets are much bigger than Earth, as these are the easiest to detect. We haven’t found a Solar System analog yet, but with additional data in the coming decades from the Ariel, PLATO, and Roman Space Telescope missions, we will be able to study how unique Earth is in the Milky Way, and search for life beyond Earth.

Other Uses of this Data

In this post, I have demonstrated just one of the many research questions we can try to answer using the expansive sample of confirmed exoplanets. I encourage you to explore more of the data set, and see what other interesting comparisons you can make!