ESA PLATO ArXiv (astroquery.esa.plato)#

The primary goal of PLATO (PLAnetary Transits and Oscillations of stars) is to open a new way in exoplanetary science by detecting terrestrial exoplanets and characterising their bulk properties, including planets in the habitable zone of Sun-like stars. PLATO will provide the key information (planet radii, mean densities, stellar irradiation, and architecture of planetary systems) needed to determine the habitability of these unexpectedly diverse new worlds. PLATO will answer the profound and captivating question: how common are worlds like ours and are they suitable for the development of life?

Understanding planet habitability is a true multi-disciplinary endeavour. It requires knowledge of the planetary composition, to distinguish terrestrial planets from non-habitable gaseous mini-Neptunes, and of the atmospheric properties of planets.

PLATO will be leading this effort by combining:

  • planet detection and radii determination from photometric transits of planets in orbit around bright stars (V < 11),

  • determination of planet masses from ground-based radial velocity follow-up,

  • determination of accurate stellar masses, radii, and ages from asteroseismology, and

  • identification of bright targets for atmospheric spectroscopy.

The mission will characterise hundreds of rocky (including Earth twins), icy or giant planets by providing exquisite measurements of their radii (3 per cent precision), masses (better than 10 per cent precision) and ages (10 per cent precision). This will revolutionise our understanding of planet formation and the evolution of planetary systems.

PLATO will assemble the first catalogue of confirmed and characterised planets with known mean densities, compositions, and evolutionary ages/stages, including planets in the habitable zone of their host stars.

Examples#

1. Login/Logout#

Authentication is managed through the login() and logout() methods provided by the PLATO Astroquery module.

>>> from astroquery.esa.plato import PlatoClass
>>> plato = PlatoClass()
>>> plato.login()
>>> plato.logout()

2. Get available tables and columns#

PLATO Astroquery module allows users to explore the data structure of the TAP by listing available tables and their columns. This is useful for understanding what data is accessible before running ADQL queries.

>>> from astroquery.esa.plato import PlatoClass
>>> plato = PlatoClass()
>>> tables = plato.get_tables()
>>> pic_target_table = plato.get_table(table='pic_go.pic_target_go')
>>> pic_target_table.columns

3. ADQL Queries to PLATO TAP#

The Query TAP functionality facilitates the execution of custom Table Access Protocol (TAP) queries within the PLATO ArXiv. Results can be exported to a specified file in the chosen format, and queries may be executed asynchronously.

>>> from astroquery.esa.plato import PlatoClass
>>> plato = PlatoClass()
>>> plato.query_tap(query='select top 10 * from pic_go.pic_target_go order by "AKs" asc')
<Table length=10>
   active_end_date       active_start_date             AG                  AKs          BOLnCameraObsNCAM_T BOLnCameraSatNCAM_T ...       Teff       tPICplanetFlag tPICscientificRanking tPICsourceFlagNCAM_BOL  VmagCalculated
                                                      mag                  mag                                                  ...        K                                                                           mag
        object                 object               float64              float64               int32               int32        ...     float64          int32             float64                int32              float64
--------------------- ----------------------- -------------------- -------------------- ------------------- ------------------- ... ---------------- -------------- --------------------- ---------------------- ----------------
9999-12-31T00:00:00.0 2026-02-05T14:04:43.678 0.000392371839482578 5.63007559782083e-05                  --                  -- ... 2928.56228932549              0                    --                      0 13.0350036388273
9999-12-31T00:00:00.0 2026-02-05T14:04:43.678 0.000493503112186251 6.08337729744008e-05                  12                  12 ... 3755.39620642323              8                   1.0                     56 8.82921452227563
9999-12-31T00:00:00.0 2026-02-05T14:04:43.678 0.000509265302321117 7.22192043991787e-05                   6                   0 ...               --             16                   1.0                     16 21.9206369681403
9999-12-31T00:00:00.0 2026-02-05T14:04:43.678 0.000657507513223402 8.14809584614101e-05                   0                   0 ... 3717.27060392989             20                   1.0                     56 8.11376138419801
9999-12-31T00:00:00.0 2026-02-05T14:04:43.678 0.000698787706941163 9.65585284990327e-05                  12                   0 ... 3090.49108860058              0     0.770008027553558                     40 13.5596587907992
9999-12-31T00:00:00.0 2026-02-05T14:04:43.678  0.00072118635430255 0.000101119744311243                  12                   0 ... 3025.46216323845              0     0.563190996646881                     40 13.8272979075602
9999-12-31T00:00:00.0 2026-02-05T14:04:43.678  0.00077666913888679 0.000102020745858284                  24                   0 ... 3355.59052045222              0     0.010423400439322                      8 11.6218496065505
9999-12-31T00:00:00.0 2026-02-05T14:04:43.678 0.000777363925250955 0.000102159257544666                  24                   0 ... 3352.92381276721              0     0.010423400439322                      8 11.5894182420438
9999-12-31T00:00:00.0 2026-02-05T14:04:43.678 0.000772691669641403 0.000108586032306435                  12                   0 ...  3015.7425470315              0     0.393148988485336                     40  12.930940579556
9999-12-31T00:00:00.0 2026-02-05T14:04:43.678  0.00100721872539282 0.000110645043470278                   0                   0 ... 4887.11519647067              0     0.170971006155014                     35 6.15823494035644

4. Filtering the PIC Target Catalogue#

The minimal content of the PLATO Input Catalog (PIC) includes the positions and basic parameters of the selected dwarf and sub-giant stars with spectral types later than F5, around which planet transits will be searched for and followed up. In addition, each target must have an associated table of contaminating sources to support the optimization of photometric masks and improve exoplanet candidate validation. The PIC also provides parameters that streamline the validation, confirmation, and follow-up of detected candidates, making these processes more efficient and cost-effective.

This module contains a specific method to search in the PIC Targets, allowing users to filter for all the columns available within this table. Together with search by target_name or coordinates and radius (if not defined, the default radius is 1 arcmin), the catalogue can be filtered across all the columns available. To check the columns available in this catalogue, the following method can be executed using get_metadata=True:

>>> from astroquery.esa.plato import PlatoClass
>>> plato = PlatoClass()
>>> plato.search_pic_target_go(get_metadata=True)
<Table masked=True length=80>
         Column                                    Description                            Unit  Data Type  UCD   UType
         str26                                        object                             object    str6   object object
------------------------ --------------------------------------------------------------- ------ --------- ------ ------
         active_end_date                                                            None   None      char   None   None
       active_start_date                                                            None   None      char   None   None
                    "AG"                                        Extinction in the G band    mag    double   None   None
                   "AKs"                                       Extinction in the Ks band    mag    double   None   None
   "BOLnCameraObsNCAM_T"  BOL number of NCAM cameras observing the star (Typical values)   None       int   None   None
   "BOLnCameraSatNCAM_T"           BOL number of saturated NCAM cameras (Typical values)   None       int   None   None
                     ...                                                             ...    ...       ...    ...    ...
      "targetStatusFlag" Bitmask indicating the status of a target (current vs previous)   None       int   None   None
                  "Teff"                                   Stellar effective temperature      K    double   None   None
        "tPICplanetFlag"  Bitmask indicating the presence of confirmed/candidate planets   None       int   None   None
 "tPICscientificRanking"                             Scientific ranking for tPIC targets   None    double   None   None
"tPICsourceFlagNCAM_BOL"    Bitmask indicating to which tPIC sample an object belongs to   None       int   None   None
        "VmagCalculated"  Apparent magnitude in the Johnson-Cousin V filter (calculated)    mag    double   None   None

Once the columns of interest have been extracted, it is possible to execute the same function with the following options, that can be combined to extract the required data:

  • Define the reference target or coordinates where a cone search will be executed.

>>> from astroquery.esa.plato import PlatoClass
>>> plato = PlatoClass()
>>> plato.search_pic_target_go(target_name='Gaia DR3 5262913119040164480')
Executed query:SELECT * FROM pic_go.pic_target_go WHERE 1=CONTAINS(POINT('ICRS', RAdeg, DEdeg),CIRCLE('ICRS', 111.43276923, -73.19124693, 0.016666666666666666))
<Table length=1>
   active_end_date       active_start_date            AG               AKs         BOLnCameraObsNCAM_T BOLnCameraSatNCAM_T ...       Teff       tPICplanetFlag tPICscientificRanking tPICsourceFlagNCAM_BOL  VmagCalculated
                                                     mag               mag                                                 ...        K                                                                           mag
        object                 object              float64           float64              int32               int32        ...     float64          int32             float64                int32              float64
--------------------- ----------------------- ----------------- ------------------ ------------------- ------------------- ... ---------------- -------------- --------------------- ---------------------- ----------------
9999-12-31T00:00:00.0 2026-02-05T14:04:43.678 0.190095728139203 0.0201944720119584                   0                   0 ... 5532.92044505408              0   0.00102269998751581                      4 12.7033026175856
  • Retrieve only a specific set of columns.

>>> from astroquery.esa.plato import PlatoClass
>>> plato = PlatoClass()
>>> plato.search_pic_target_go(target_name='Gaia DR3 5262913119040164480', columns=['DEdeg', 'RAdeg', 'PlatoMagNCAM'])
Executed query:SELECT DEdeg, RAdeg, PlatoMagNCAM FROM pic_go.pic_target_go WHERE 1=CONTAINS(POINT('ICRS', RAdeg, DEdeg),CIRCLE('ICRS', 111.43276923445, -73.19124693094, 0.016666666666666666))
<Table length=1>
      DEdeg            RAdeg         PlatoMagNCAM
       deg              deg              mag
     float64          float64          float64
----------------- ---------------- ----------------
-73.1911625699751 111.432509739341 12.2231114055724
  • Filter by any other column available in the previous method.

>>> from astroquery.esa.plato import PlatoClass
>>> plato = PlatoClass()
>>> plato.search_pic_target_go(target_name='Gaia DR3 5262913119040164480', columns=['DEdeg', 'RAdeg', 'PlatoMagNCAM'], PlatoMagNCAM=('>', 12))
Executed query:SELECT DEdeg, RAdeg, PlatoMagNCAM FROM pic_go.pic_target_go  WHERE PlatoMagNCAM > 12 AND 1=CONTAINS(POINT('ICRS', RAdeg, DEdeg),CIRCLE('ICRS', 111.43276923445, -73.19124693094, 0.016666666666666666))
<Table length=1>
      DEdeg            RAdeg         PlatoMagNCAM
       deg              deg              mag
     float64          float64          float64
----------------- ---------------- ----------------
-73.1911625699751 111.432509739341 12.2231114055724

As it can be observed in the previous example, the numeric parameter has been defined using a predefined syntaxis. Some additional examples and their correspondent ADQL transformation executed by this method are provided below:

  • Exact match: StarName='star1' -> StarName = 'star1'

  • Wildcards with : ``StarName=’star’`` -> StarName ILIKE 'star%'

  • Wildcartds with %: StarName='star%' -> StarName ILIKE 'star%'

  • String list: StarName=['star1', 'star2'] -> StarName = 'star1' OR StarName = 'star2'

  • Numeric comparison: ra=('>', 30) -> ra > 30

  • Filter by numeric interval: ra=(20, 30) -> ra >= 20 AND ra <= 30

5. Filtering the PIC Contaminants#

Using this module, astronomical sources located in the vicinity of a target star that may contribute additional flux within the PIC targets can be identified. The mechanism is analogous to the previous method: get_metadata=True can be used to retrieve the list of available columns to be filtered and a search can be executed by target name, coordinates (default radius is again 1 arcmin, but it can be defined by the user) or any other column available in the table.

>>> from astroquery.esa.plato import PlatoClass
>>> plato = PlatoClass()
>>> plato.search_pic_contaminant_go(target_name='Gaia DR3 5262913119040164480')

By combining the previous commands, it is possible to identify the PIC contaminants associated to each of the targets in the Plato Input Catalogue. As

>>> from astroquery.esa.plato import PlatoClass
>>> plato = PlatoClass()
>>> pic_targets = plato.search_pic_target_go(coordinates='95.97064 -48.07963', radius=0.1)
>>> pic_target_contaminants = {}
>>> for target in pic_targets:
...       pic_name = target["PICname"]
...       pic_coordinates = f"{target['RAdeg']} {target['DEdeg']}"
...       contaminants = plato.search_pic_contaminant_go(coordinates=pic_coordinates)
...       pic_target_contaminants[pic_name] = contaminants

The parameter pic_target_contaminants now contains the list of PIC Names (that can be retrieved using pic_target_contaminants.keys()), together with the associated contaminants at a distance of 1 arcmin (a different radius can be defined when executing the command). Then, for each of the PIC Names, users can retrieve the individual results for the contaminants using pic_target_contaminants[PIC_Name].

6. Plot PLATO data#

Once the required data has been extracted, it is possible to generate a chart to plot the required data:

>>> from astroquery.esa.plato import PlatoClass
>>> plato = PlatoClass()
>>> results = plato.search_pic_target_go(target_name='Gaia DR3 5262913119040164480', radius=5)
Executed query:SELECT * FROM pic_go.pic_target_go WHERE 1=CONTAINS(POINT('ICRS', RAdeg, DEdeg),CIRCLE('ICRS', 111.43276923445, -73.19124693094, 5.0))
>>> plato.plot_plato_results(x=results['RAdeg'], y=results['DEdeg'], x_label='RA (deg)', y_label='DEC (deg)', plot_title='PIC Targets', color='red')
PLATO Plot.

A third dimension can be drawn in the previous plot, assigning a value for the Z axis. This will generate the series with a colormap showing this third list of values. Please bear in mind that the colormap shall be available within Matplotlib collection.

>>> from astroquery.esa.plato import PlatoClass
>>> plato = PlatoClass()
>>> results = plato.search_pic_target_go(target_name='Gaia DR3 5262913119040164480', radius=5)
Executed query:SELECT * FROM pic_go.pic_target_go WHERE 1=CONTAINS(POINT('ICRS', RAdeg, DEdeg),CIRCLE('ICRS', 111.43276923445, -73.19124693094, 5.0))
>>> plato.plot_plato_results(x=results['RAdeg'], y=results['DEdeg'], z=results['BOLnCameraObsNCAM_T'], x_label='RA (deg)', y_label='DEC (deg)', z_label='Num. Cameras', plot_title='PIC Targets', color='viridis')
PLATO Plot with colormap.

This method also allows to define x_error and y_error series, that will be added to the previous plot. As a result of this method, the fig and ax objects from Matplotlib are returned, allowing the user to modify the plot in the desired way or maybe update the current one, as they can be used as input parameters.

Reference/API#

astroquery.esa.plato Package#

European Space Astronomy Centre (ESAC) European Space Agency (ESA)

Classes#

PlatoClass(*[, auth_session, tap_url])

This module connects with ESA Plato TAP

Conf()

Configuration parameters for astroquery.esa.plato.