Vera C. Rubin Observatory Observations Submitted to the Minor Planet Center
This page contains exports of the observations taken by the Vera C. Rubin Observatory (observatory code X05) that were submitted to the Minor Planet Center.
These files are generated from the Asteroid Institute BigQuery replica of the MPC database. See the mpcq BigQuery dataset documentation for details about the dataset, key tables (including public_obs_sbn
), and performance guidance.
Full dataset exports
Complete Rubin (X05) observations included in this feed. Rows and time range are shared across formats; sizes and generation times are per-file.
Loading full export metadata…
Daily Partitions
Observations are included based on the public_obs_sbn.created_at
timestamp (UTC). This can differ from the observation timestamp (obstime
) and the MPC submission_id
, so the coverage for a given UTC date may include observations with earlier or later obstime
depending on when they were ingested/created in the database.
Date (UTC) | Observations | Earliest Obs Time | Latest Obs Time | CSV Files | Parquet Files |
---|
Sync daily data (gsutil)
Install the Google Cloud SDK (which includes gsutil
) and mirror the Rubin MPC daily files locally.
# CSV (daily files only)
gsutil -m rsync -r -x '.*(?<!\.csv.gz)$' gs://asteroid-institute-public/production/rubin/mpc/obs_sbn/daily/ ./rubin_mpc/csv
# Parquet (daily files only)
gsutil -m rsync -r -x '.*(?<!\.parquet)$' gs://asteroid-institute-public/production/rubin/mpc/obs_sbn/daily/ ./rubin_mpc/parquet
Note: The bucket is public; no authentication is required to read.
Full dataset files
Please do not download this daily due to bandwidth costs.
# Download full CSV and Parquet (curl)
curl -L -o ./rubin_mpc/full/obs_sbn_X05_full.csv.gz \
https://storage.googleapis.com/asteroid-institute-public/production/rubin/mpc/obs_sbn/full/csv/obs_sbn_X05_full.csv.gz
curl -L -o ./rubin_mpc/full/obs_sbn_X05_full.parquet \
https://storage.googleapis.com/asteroid-institute-public/production/rubin/mpc/obs_sbn/full/parquet/obs_sbn_X05_full.parquet
SQLite (full, gzipped):
gs://asteroid-institute-public/production/rubin/mpc/obs_sbn/sqlite/rubin.sqlite.gz
# Download and decompress full SQLite (curl)
curl -L -o ./rubin_mpc/full/rubin.sqlite.gz \
https://storage.googleapis.com/asteroid-institute-public/production/rubin/mpc/obs_sbn/sqlite/rubin.sqlite.gz
gunzip -f ./rubin_mpc/full/rubin.sqlite.gz
Quickstart: read and query locally (Python)
# CSV
import pandas as pd
# Update the date to one you have locally
df = pd.read_csv("./rubin_mpc/csv/2024-08-17.csv.gz")
print(df.shape)
print(df.head())
# Example: inspect columns then filter
print(df.columns.tolist())
# e.g., df[df["mag"] < 20] if a 'mag' column exists
# Parquet
import pandas as pd
df = pd.read_parquet("./rubin_mpc/parquet/2024-08-17.parquet")
print(df.shape)
print(df.head())
# Distribution of r-band magnitudes in April-June 2025
import sqlite3, pandas as pd
con = sqlite3.connect('./rubin_mpc/full/rubin.sqlite')
q = """
SELECT CAST(mag AS INTEGER) AS mag_int, COUNT(*) AS n
FROM obs_sbn
WHERE band = 'r'
AND obstime BETWEEN '2025-04-01' AND '2025-06-01'
GROUP BY mag_int
ORDER BY mag_int;
"""
df = pd.read_sql_query(q, con)
print(df)
print('\nTotal obs in range:', df['n'].sum())