Convert Figma logo to code with AI

OpenExoplanetCatalogue logoopen_exoplanet_catalogue

The main data repository for the Open Exoplanet Catalogue

1,011
218
1,011
40

Top Related Projects

4,512

Astronomy and astrophysics core library

Quick Overview

The Open Exoplanet Catalogue is a comprehensive database of all discovered extrasolar planets, maintained as an open-source project on GitHub. It aims to provide up-to-date, well-formatted information on exoplanets and their host stars, allowing for easy access and analysis by researchers, educators, and enthusiasts.

Pros

  • Open-source and community-driven, ensuring regular updates and contributions
  • Data provided in easily parsable XML format, facilitating integration with various tools and applications
  • Includes detailed information on both confirmed and controversial exoplanets
  • Offers a user-friendly web interface for browsing the catalogue

Cons

  • Relies on community contributions, which may lead to occasional inconsistencies or delays in updates
  • XML format, while structured, may be less familiar to some users compared to other data formats like JSON or CSV
  • Requires manual curation and verification to maintain accuracy
  • May not always be as up-to-date as proprietary databases maintained by professional astronomical institutions

Getting Started

To use the Open Exoplanet Catalogue:

  1. Clone the repository:

    git clone https://github.com/OpenExoplanetCatalogue/open_exoplanet_catalogue.git
    
  2. Navigate to the systems directory to access individual XML files for each planetary system.

  3. Use your preferred XML parsing library to read and analyze the data.

  4. For updates, periodically pull the latest changes from the repository:

    git pull origin master
    
  5. To contribute, fork the repository, make your changes, and submit a pull request with a clear description of your updates or additions.

Competitor Comparisons

4,512

Astronomy and astrophysics core library

Pros of astropy

  • Comprehensive library for astronomy and astrophysics, covering a wide range of functionalities
  • Active development with frequent updates and a large community of contributors
  • Well-documented with extensive tutorials and examples

Cons of astropy

  • Steeper learning curve due to its extensive feature set
  • May be overkill for simple exoplanet data analysis tasks
  • Requires more system resources and dependencies

Code comparison

open_exoplanet_catalogue:

<planet>
  <name>Kepler-16 b</name>
  <mass>0.333</mass>
  <radius>0.7538</radius>
  <period>228.776</period>
</planet>

astropy:

from astropy.table import Table
from astropy import units as u

exoplanets = Table.read('exoplanets.csv')
mass = exoplanets['mass'] * u.jupiterMass
radius = exoplanets['radius'] * u.earthRadius
period = exoplanets['period'] * u.day

The open_exoplanet_catalogue uses XML to store exoplanet data, while astropy provides a more flexible and powerful approach using Python objects and units. Astropy's code is more verbose but offers greater functionality and integration with other astronomical tools.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Open Exoplanet Catalogue

Status update

Since June 2020, I have started maintaining the Open Exoplanet Catalogue more actively again. I plan to manually enter data for time sensitive and high profile discoveries. But due to the large number of planets that get discovered these days, I will import data from the NASA Exoplanet Archive for all other planets. See the oec_continuity repository for details. Please continue to watch out for errors and submit pull requests! -- Hanno Rein

About the Open Exoplanet Catalogue

Travis MIT arXiv

The Open Exoplanet Catalogue is a database of all discovered extra-solar planets. New planets are usually added within 24 hours of their announcement.

The database is licensed under an MIT license (see below), which basically says you can do everything with it. If you use it for a scientific publication, please include a reference to the Open Exoplanet Catalogue on github or to this arXiv paper.

The catalogue is a community project. Please send corrections and additions via pull request or email. If you have questions or comments about git or the database, please do not hesitate to contact of the contributors directly.

If you are looking for a simple comma/tab separated table, you might want to check out this repository.

How to access the catalogue using Python

It is very easy to access the Open Exoplanet Catalogue using python. Here is a short snippet to print out some basic planet data. No download, no installation and no external libraries are required.

If you are using python 3:

import xml.etree.ElementTree as ET, urllib.request, gzip, io
url = "https://github.com/OpenExoplanetCatalogue/oec_gzip/raw/master/systems.xml.gz"
oec = ET.parse(gzip.GzipFile(fileobj=io.BytesIO(urllib.request.urlopen(url).read())))
 
# Output mass and radius of all planets 
for planet in oec.findall(".//planet"):
    print([planet.findtext("mass"), planet.findtext("radius")])
 
# Find all circumbinary planets 
for planet in oec.findall(".//binary/planet"):
    print(planet.findtext("name"))
 
# Output distance to planetary system (in pc, if known) and number of planets in system
for system in oec.findall(".//system"):
    print(system.findtext("distance"), len(system.findall(".//planet")))

If you are using python 2:

import xml.etree.ElementTree as ET, urllib, gzip, io
url = "https://github.com/OpenExoplanetCatalogue/oec_gzip/raw/master/systems.xml.gz"
oec = ET.parse(gzip.GzipFile(fileobj=io.BytesIO(urllib.urlopen(url).read())))

# Output mass and radius of all planets 
for planet in oec.findall(".//planet"):
    print [planet.findtext("mass"), planet.findtext("radius")]
 
# Find all circumbinary planets 
for planet in oec.findall(".//binary/planet"):
    print planet.findtext("name")
 
# Output distance to planetary system (in pc, if known) and number of planets in system
for system in oec.findall(".//system"):
    print system.findtext("distance"), len(system.findall(".//planet"))

Data Structure

The following table shows all the possible tags in the Open Exoplanet Catalogue.

TagCan be child ofDescriptionUnit
systemThis is the root container for an entire planetary system
planetsystem, binary, starThis is the container for a single planet. The planet is a free floating (orphan) planet if this tag is a child of system.
starsystem, binaryThis is the container for a single star. A star can be host to one or more planets (circum-stellar planets).
binarysystem, binaryA binary consists of either two stars, one star and one binary or two binaries. In addition a binary can be host to one or more planets (circum-binary planets).
declinationsystemDeclination+/- dd mm ss
rightascensionsystemRight ascensionhh mm ss
distancesystemDistance from the Sunparsec
namesystem, binary, star, planetName of this object. This tag can be used multiple times if the object has multiple Names.
semimajoraxisbinary, planetSemi-major axis of a planet (heliocentric coordinates) if child of planet. Semi-major axis of the binary if child of binary.AU
separationbinary, planetProjected separation of planet from its host, or if child of binary the projected separation from one component to the other. This tag can occur multiple times with different units. It is different from the tag semimajoraxis as it does not imply a specific orbital configuration.AU, arcsec
positionanglebinaryPosition angledegree
eccentricitybinary, planetEccentricity
periastronbinary, planetLongitude of periastrondegree
longitudebinary, planetMean longitude at a given Epoch (same for all planets in one system)degree
meananomalybinary, planetMean anomaly at a given Epoch (same for all planets in one system)degree
ascendingnodebinary, planetLongitude of the ascending nodedegree
inclinationbinary, planetInclination of the orbitdegree
impactparameterplanetImpact parameter of transit
epochsystemEpoch for the orbital elementsBJD
periodbinary, planetOrbital periodday
transittimebinary, planetTime of the center of a transitBJD
periastrontimebinary, planetTime of periastronBJD
maximumrvtimebinary, planetTime of maximum radial velocityBJD
massplanet, starMass (or m sin(i) for radial velocity planets)Jupiter masses (planet), Solar masses (star)
radiusplanet, starPhysical radiusJupiter radii (planet), Solar radii (star)
temperatureplanet, starTemperature (surface or equilibrium)Kelvin
ageplanet, starAgeGyr
metallicitystarStellar metallicitylog, relative to solar
spectraltypestar, planetSpectral type
magBbinary, star, planetB magnitude
magVbinary, star, planetVisual magnitude
magRbinary, star, planetR magnitude
magIbinary, star, planetI magnitude
magJbinary, star, planetJ magnitude
magHbinary, star, planetH magnitude
magKbinary, star, planetK magnitude
discoverymethodplanetDiscovery method of the planet. For example: timing, RV, transit, imaging.
istransitingplanetWhether the planet is transiting (1) or not (0).
descriptionplanetShort description of the planet
discoveryyearplanetYear of the planet's discoveryyyyy
lastupdateplanetDate of the last (non-trivial) updateyy/mm/dd
spinorbitalignmentplanetRossiter-McLaughlin Effect.degree
constellationsystemConstellation (IAU definition)

Errors

Uncertainties can be added to values using the following attributes of the tag. We assume that these uncertainties represent the standard error of the measurement (68.2% confidence level). However, keep in mind that it is often not possible to collapse an entire posterior distribution to a single number.

The syntax for error bars is: <mass errorminus="0.1" errorplus="0.1">1.0</mass>

The syntax for upper/lower limits is: <mass upperlimit="1.0" />

Constants

The Open Exoplanet Catalogue stores information using a few basis units. For stars, mass and radius units are derived from our star, Sol (the Sun). For exoplanets, mass and radius units are derived from the planet Jupiter.

The mass of Jupiter, the Sun, and even Earth are so huge that it is more meaningful to simply reference their mass in relation to each other, rather than common SI units. These values are approximate.

RatioValue
Sol/Jupiter mass1047.566
Jupiter/Earth mass317.8284
Sol/Earth mass332,946.1

In many publications, radius measurements are quoted based on Earth’s or Jupiter’s equatorial radius, so we list here the relevant IAU recommended nominal constants.

Constant NameValue
Solar radius695,700 km
Jupiter equatorial radius71,492 km
Earth equatorial radius6378.1 km

There are a few more units and standards used: degrees, days, billions of years (gigayears or Gyr), AU, parsecs, sexagesimal degrees (declination), and sexagesimal hour angle (Right Ascension). These are all much more well defined than the mass and radius units above, so we will not produce them here. Please note that the Open Exoplanet Catalogue makes no accommodation for different celestial reference frames.

Plots

Mass vs semi-major axis Architecture Discovery year Period ratios

To create custom plots please visit this repository for example scripts.

Download ASCII tables

A few words of caution: Many planetary systems are part of binary star systems. The architecture of these systems is correctly represented in the original XML files of the Open Exoplanet Catalogue. In fact, it is to my knowledge the only catalogue that can do that. However, you might prefer to work with a simpler comma or tab separated table instead of the hierarchical XML file format. During the conversion process, some information is inevitably lost. Most importantly, the architecture of the star system. One cannot easily represent an arbitrary binary/triple/quadruple system in a simple table. Additionally, if planets have multiple identifiers only the first identifier is outputted. Using the original XML file format and git, you can use the git blame functionality to find references to scientific publications for every numeric value in the database. This functionality is also lost in the conversion process.

In a separate repository, you will find a comma separated and a tab separated ASCII table of the Open Exoplanet Catalogue.

Documentation

This file describes the philosophy and data-format of the catalogue. However, everything should be rather self-explanatory. The actual data is in the systems directory. Each XML file corresponds to one planetary system.

If you are editing the file with vim, have a look at the xmledit plugin. I found it very helpful.

How to include references to publications

It seems that the most elegant place to put references to publications is the commit message. This allows one to trace back each individual value in the database to the source using git blame. Furthermore it does not add any additional clutter to the text files themselves. So, when committing any changes, please create one commit per publication and include the reference in the commit message from now on.

Derived products

The following list contains links to other catalogues, websites and apps that are derived from or make use of the Open Exoplanet Catalogue.

  • oec_web: A suite of HTML pages acting as a front-end of the Open Exoplanet Catalogue. It includes visualizations of orbits, planet sizes and habitable zones. It also includes a plotting tool to generate correlation diagrams. The website is hosted at openexoplanetcatalogue.com.
  • oec_plots: Plots and example scripts that make use of the Open Exoplanet Catalogue.
  • oec_outreach: A clone of the main repository with images and tags that are mainly used for outreach purposes.
  • oec_iphone: Compressed files, references to refereed publications, resized images and legacy support for various versions of the mobile version are in the repository.
  • ExoData: A Python module for loading the catalogue into python for use with applications along with many exoplanet related equations and tools.
  • iPhone Exoplanet App: Popular iOS application with many visualizations of the entire catalogue. Version 9.1 and later will fully support planets in multiple star systems.

License

Copyright (C) 2012 Hanno Rein

Permission is hereby granted, free of charge, to any person obtaining a copy of this database and associated scripts (the "Database"), to deal in the Database without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Database, and to permit persons to whom the Database 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 Database. A reference to the Database shall be included in all scientific publications that make use of the Database.

THE DATABASE 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 DATABASE OR THE USE OR OTHER DEALINGS IN THE DATABASE.