Docs · Exporting data
Exporting Photon Ledger data
Photon Ledger keeps a tidy index of every sub-frame it scans. On the Pro tier you can take that index out of the app and into anywhere else you work — spreadsheets, notebooks, BI dashboards, or your own scripts — via CSV export.
What you can export
Everything in PL is built on the same underlying index of FITS headers. Three views of that index are useful outside the app:
- Frame-level metadata — one row per sub-frame. Path, target, filter, exposure, image type, date, instrument, telescope, focal length, binning, gain, sensor temperature. The full grain.
- Session-level summaries — one row per (target, filter, night). Frame count and total exposure rolled up to a session, useful for log-book-style records.
- Aggregate totals — one row per (target, filter). Total integration hours, total frames, first and last seen. The headline numbers you'd quote on AstroBin or in a write-up.
All three are derived from the same source, so they always agree with each other and with the in-app dashboard.
CSV export (Pro)
From the Dashboard, choose Export › CSV and pick one of the three pre-built reports (Frames, Sessions, Totals). PL writes a file with stable column headers, RFC 4180 quoting (double-quote any field containing a comma, newline, or quote), and UTF-8 encoding without a BOM. The header row is always the first line.
The Frames report can get large — expect roughly one row per sub-frame in your archive. The Sessions and Totals reports are dramatically smaller and are usually what you want for sharing.
Sample CSV schemas
Column names below are illustrative — see the in-app exporter for the authoritative schema, which may add or rename fields over time.
Frames CSV
| Column | Typical content |
|---|---|
path | Absolute or archive-relative path to the FITS file |
target | From OBJECT (e.g. M81) |
filter | From FILTER (e.g. Ha, L, R) |
exposure_s | From EXPTIME, in seconds |
image_type | From IMAGETYP (Light / Flat / Dark / Bias) |
date_obs_utc | From DATE-OBS, ISO 8601 UTC |
instrume | From INSTRUME (camera) |
telescop | From TELESCOP (OTA) |
focallen | From FOCALLEN, in mm |
xbinning | From XBINNING |
gain | From GAIN |
ccd_temp | From CCD-TEMP, in °C |
Sessions CSV
| Column | Typical content |
|---|---|
session_date | Local astronomical night (YYYY-MM-DD) |
target | Target name |
filter | Filter name |
frame_count | Number of light frames for this (target, filter, night) |
total_exposure_s | Sum of EXPTIME across those frames |
instrume | Camera used (or list, if mixed) |
telescop | Telescope used (or list, if mixed) |
Totals CSV
| Column | Typical content |
|---|---|
target | Target name |
filter | Filter name |
total_hours | Total integration in hours (decimal) |
frame_count | Total light-frame count |
first_seen | Earliest DATE-OBS for this pair |
last_seen | Latest DATE-OBS for this pair |
Integrating with external tools
- Pandas —
df = pd.read_csv("totals.csv")and you're done. Numeric columns parse straight tofloat/int; passparse_dates=["date_obs_utc"]to get realdatetime64s. - Excel / Numbers / LibreOffice — double-click the CSV. Column types are typically inferred correctly. If your locale uses comma as the decimal separator, import via the data wizard and pick UTF-8 + comma delimiter.
- Grafana, Metabase, Superset — most BI tools can ingest a CSV directly or via a staging table. Load the Frames or Sessions CSV and build panels from there.
- AstroBin — export Totals as CSV and copy the relevant
target,filter,frame_count,total_hoursrows into AstroBin's acquisition fields when you publish an image.
Free-tier note
CSV export is a Pro feature. The free tier indexes up to 5,000 frames in a local SQLite database and includes the in-app dashboard — plenty for evaluation and small archives. See pricing for the full split.
Related reading
- Pricing — Free vs Pro feature split.
- FITS headers — which header fields drive each column.
- Getting started — first scan, settings, dashboard.
- How to count your integration time — what these totals actually mean.