201.16. Numbered_identifications table#
201.16. Numbered_identifications table¶
For the Rubin Science Platform at data.lsst.cloud.
Data Release: Data Preview 2
Container Size: Large
LSST Science Pipelines version: r30.0.10
Last verified to run: 2026-08-05
Repository: github.com/lsst/tutorial-notebooks
DOI: 10.11578/rubin/dc.20250909.20
Learning objective: To understand the contents of the numbered_identifications table and how to access it.
LSST data products: numbered_identifications
Packages: lsst.rsp
Credit: Originally developed by the Rubin Community Science team. Please consider acknowledging them if this notebook is used for the preparation of journal articles, software releases, or other notebooks.
Get Support: Everyone is encouraged to ask questions or raise issues in the Support Category of the Rubin Community Forum. Rubin staff will respond to all questions posted there.
1. Introduction¶
The numbered_identifications table contains all the numbered objects (minor planets, comets, and natural satellites) with their primary provisional designations, plus additional information from the Minor Planet Center (MPC) for all known Solar System objects (SSOs) as of a given date, including but not limited to detections and discoveries made by Rubin. For DP2, this includes known SSOs up to 30 March 2026, a total of 887,935 objects.
This table is ingested from the MPC, where Rubin acts as a downstream distributor with the fields in the numbered_identifications table originating upstream at the MPC; inconsistencies or missing information in the MPC's numbered_identifications table may therefore be present in the DP2 table.
For further information on the numbered_identifications table, see the MPC documentation.
The numbered_identifications table can be joined with the DP2 mpc_orbits and current_identifications tables on the packed_primary_provisional_designation and unpacked_primary_provisional_designation fields (see Section 3.1.3).
- TAP table name:
dp2.numbered_identifications - columns: 9
- rows: 887,935
Related tutorials: The TAP data access services are demonstrated in the 100-level "How to" tutorials.
1.1. Import packages¶
Import standard python package pandas.
From the lsst package, import module for the TAP service.
from lsst.rsp import RSPDiscovery
1.2. Define parameters and functions¶
Create an instance of the TAP service.
discovery = RSPDiscovery("dp2")
service = discovery.get_tap_client()
2. Schema (columns)¶
To browse the table schema visit the Rubin schema browser, or use the TAP service via the Portal Aspect or as demonstrated in Section 2.1.
2.1. Retrieve table schema¶
To retrieve the table schema, define a query for the schema columns of the numbered_identifications table and run the query job.
query = "SELECT column_name, datatype, description, unit " \
"FROM tap_schema.columns " \
"WHERE table_name = 'dp2.numbered_identifications'"
job = service.submit_job(query)
job.run()
job.wait(phases=['COMPLETED', 'ERROR'])
print('Job phase is', job.phase)
if job.phase == 'ERROR':
job.raise_if_error()
Job phase is COMPLETED
Retrieve the query results and display them as an astropy table with the to_table() attribute.
assert job.phase == 'COMPLETED'
results = job.fetch_result().to_table()
results
| column_name | datatype | description | unit |
|---|---|---|---|
| str64 | str64 | str512 | str64 |
| created_at | char | When this row was created | |
| iau_designation | char | IAU-approved designation (not filled at the moment) | |
| iau_name | char | IAU-approved name (not filled at the moment) | |
| id | int | Internal ID (generally not seen/used by the user) | |
| naming_credit | char | Credit for suggesting the name | |
| packed_primary_provisional_designation | char | The primary provisional designation in packed form (e.g. K08A00B) | |
| permid | char | Permanent designation (number) | |
| unpacked_primary_provisional_designation | char | The primary provisional designation in unpacked form (e.g. 2008 AB) | |
| updated_at | char | When this row was updated |
Delete the job, but not the results.
del query
job.delete()
2.2. Key Columns¶
Of the 9 columns in the numbered_identifications table, a few are the most commonly used.
2.2.1. Primary designation¶
The primary provisional designation (unpacked format):
unpacked_primary_provisional_designation
The primary provisional designation (packed format):
packed_primary_provisional_designation
3. Data access¶
The numbered_identifications table is only available via the TAP service. It is not available with the butler.
3.1. TAP (Table Access Protocol)¶
The numbered_identifications table is stored in Qserv and accessible via the TAP services using ADQL queries.
3.1.1. Catalog size¶
Retrieve the size of the numbered_identifications catalog.
query = "SELECT COUNT(*) "\
"FROM dp2.numbered_identifications "
job = service.submit_job(query)
job.run()
job.wait(phases=['COMPLETED', 'ERROR'])
print('Job phase is', job.phase)
if job.phase == 'ERROR':
job.raise_if_error()
Job phase is COMPLETED
Fetch the results as an astropy table.
assert job.phase == 'COMPLETED'
results = job.fetch_result().to_table()
print(results)
COUNT1 ------ 887935
The DP2 numbered_identifications table contains identification information from the MPC for all known SSOs as of 30 March 2026, consisting of 887,935 objects in total and includes but is not limited to detections and discoveries made by Rubin.
3.1.2. Demo query¶
Define a query to return two of the key columns from Section 2.2 for the top 100 entries in the numbered_identifications table.
To query the full numbered_identifications table, remove "TOP 100" from the below query.
query = "SELECT TOP 10 unpacked_primary_provisional_designation, "\
"permid "\
"FROM dp2.numbered_identifications "
job = service.submit_job(query)
job.run()
job.wait(phases=['COMPLETED', 'ERROR'])
print('Job phase is', job.phase)
if job.phase == 'ERROR':
job.raise_if_error()
Job phase is COMPLETED
Fetch the results as an astropy table and convert to a pandas dataframe.
assert job.phase == 'COMPLETED'
results = job.fetch_result()
result_df = results.to_table().to_pandas()
Option to display the results.
result_df
| unpacked_primary_provisional_designation | permid | |
|---|---|---|
| 0 | A801 AA | 1 |
| 1 | A849 GA | 10 |
| 2 | A868 NA | 100 |
| 3 | A923 PF | 1000 |
| 4 | 1951 SY | 10000 |
| 5 | 1982 SH1 | 100000 |
| 6 | 1982 UC3 | 100001 |
| 7 | 1983 QC1 | 100002 |
| 8 | 1983 RN3 | 100003 |
| 9 | 1983 VA | 100004 |
Clean up.
job.delete()
del query, results