Star light curves

What a V3 star light curve contains: the catalog, the curves, every column, its units and time system, and how detections, limits and uncertainties are defined.

API 3.1 · stars release 55c97bc0c218a6c5 · SS release ef7caf53a399bc1f

The V3 catalog#

Sky Patrol V3 measures every ASAS-SN image at fixed catalog positions. The catalog holds 164,180,266 stars, and the light curves hold about 1.21 trillion measurements from 15,164,380 images (release skypatrolV3_packed_20261029).

Gaia DR2 and DR3 identifiers#

Every V3 star with a Gaia counterpart carries its Gaia DR3 and Gaia DR2 source_id. They appear in the star record (GET /v3/stars/{ref}, key gaia) and on the star page, and a Gaia id leads back to its star: GET /v3/stars/gaia/dr3/{source_id}, the batch form POST /v3/stars/gaia/dr3, any {ref} written Gaia DR3 <source_id>, /v3/resolve and the search box. The API reference has the details.

JSON
"gaia": {"dr3": {"source_id": "660820614442429056", "sep_mas": 0.16, "quality": "unique", "flags": 1},
         "dr2": {"source_id": "660820614442429056", "sep_mas": 0.12, "quality": "unique", "flags": 1},
         "g": 15.11}

Gaia source ids need 63 bits, so JSON carries them as decimal strings, like solar-system object_ids. sep_mas is the separation in milliarcseconds at epoch 2015.5; g is the Gaia G magnitude (DR3; DR2 when there is no DR3 match). A release without a match is null.

How the match was made#

StarsGaia DR3Gaia DR2
All 164,180,266… matched… matched
Supplementary white dwarfs fainter than the g = 18 limit (…)……

The match was checked independently against the live ESA archive: cone searches around … random and special stars found the same source with the same separation in every case, and Gaia's own DR2–DR3 link (gaiadr3.dr2_neighbourhood) agrees with … of the (DR2, DR3) pairs it covers.

Match quality#

qualityMeaningDR3DR2
uniqueOne Gaia source within 1″, and no other V3 star took it……
closest_of_severalSeveral Gaia sources within 1″; the nearest is given (a close pair or a crowded field)……
sharedThe Gaia source is also the match of another V3 star; a lookup by that id returns every such star, nearest first……
nullNo Gaia source within 1″……

flags is a bit mask: 1 matched, 2 several Gaia sources within 1″, 4 shared with another V3 star, 8 compared without a Gaia proper motion (DR3 only), 16 Gaia duplicated_source, 32 separation above 100 mas, 64 V3 g − Gaia G outside [−2, +4] (a variable star, a blend or poor photometry; only on matches closer than 100 mas).

Caveats#

If you use these identifiers, please also cite the Gaia mission (Gaia Collaboration, Prusti et al. 2016) and the release you used: Gaia DR3 (Gaia Collaboration, Vallenari et al. 2023) or Gaia DR2 (Gaia Collaboration, Brown et al. 2018).

Images, cameras and bands#

ASAS-SN has five units of four telescopes each, in Hawaii, Chile (two units), South Africa and Texas. Each telescope has its own camera, named by two letters such as bA or bm. An image name is the camera plus a six-digit number, for example bA685528; the image_num column holds the number. The cameras have 8.0″ pixels.

V3 uses only reduced images whose reduction and astrometric solution succeeded. Images that were not marked good by the pipeline are kept but flagged (IMAGE_NOT_GOOD).

Curves and apertures#

A star's light curve is made of curves. Each curve is one (field, band, aperture) combination: ASAS-SN fields overlap, so a star can be measured in two or three fields, and each field has its own calibration. The curve column indexes the header's curves list, which gives each curve's field, band, aperture and its rows (start, count). CSV, JSON and Parquet expand curve into field, band and aperture columns.

Rows are grouped by curve and sorted by time within each curve. Sort by bjd yourself if you need one time-ordered series.

ParameterValuesEffect
aperturedefault, 1, 1.5, 2, 3, allAperture radius in pixels (8″, 12″, 16″, 24″). Most stars are measured only in their default aperture, which differs from star to star; /v3/stars/{ref} and the light-curve header's object give default_aperture and the available apertures.
bandg, V, allKeep one band
fieldscomma listKeep only these fields
rowsall, detecteddetected drops the upper limits
exclude_qualitybit maskDrop rows with any of these quality bits
colslean, fullColumn set (below)

Time#

bjd is the Barycentric Julian Date in the TDB time scale (BJDTDB) at mid-exposure, as a 64-bit float. The website plots BJD − 2450000. The full column set adds jd, the Julian Date in UTC at mid-exposure, and ut_date, the image's UT date and time string exactly as recorded. Do not try to rebuild ut_date from jd; about 5% of images would not match.

Magnitudes and upper limits#

Every image that covered the star is a row, whether or not the star was detected. A row is detected when the aperture counts exceed 5 times their uncertainty.

Rowdetectedmagmag_errlimit
Detection1the magnitudethe 1σ errorthe 5σ limit
Not detected, limit known0the 5σ limit99.999the 5σ limit
Not detected, no limit0a placeholder (about 99.999 + zero point)99.999NaN

So select rows with detected and limit, never by testing mag:

Python
import numpy as np
import pandas as pd

lc = pd.read_csv("https://asassn-v3.ifa.hawaii.edu/v3/stars/11010359/lc?format=csv", comment="#")
det = lc[lc.detected == 1]                               # measured magnitudes
lim = lc[(lc.detected == 0) & np.isfinite(lc.limit)]    # 5-sigma upper limits
print(len(det), "detections,", len(lim), "upper limits")

Magnitudes are 25 + zp − 2.5 log10(counts), where zp is the image's zero point at the star's position. The limit is 25 + zp − 2.5 log10(5 × counts_err).

Flux#

flux and flux_err are flux densities in mJy, computed for every row with finite counts, detected or not. The flux of a non-detection is the forced measurement at the catalog position and can be negative; averaging fluxes, not magnitudes, is the right way to combine faint epochs.

flux = F0 × counts × 10−0.4 (25 + zp) × 1000, with F0 = 3631 Jy in g (AB) and 3836.3 Jy in V.

Uncertainties#

For a detection, mag_err combines the photometric error and the zero-point error: mag_err² = (1.0857 counts_err / counts)² + zp_err². flux_err combines the same two terms in flux.

The counts error comes from the error model chosen with error_model:

legacy (default)
The rc1 model: counts_err² = |counts| / gain + area × σbg², where σbg is the background scatter measured in the sky annulus.
v2
A model built on measured per-camera gain, read noise and dark current. The server offers it only when its supplement is installed, which is not the case at launch.

These errors are statistical only. For bright stars (g < 12) the epoch-to-epoch scatter is 2 to 4 times larger, because flat-field, zero-point and position errors of 0.009 to 0.020 mag per camera are not included. For epoch-to-epoch work, add a floor in quadrature: √(mag_err² + 0.014²) is a fair default. Solar-system light curves include such a floor by default (error floor).

Quality flags#

The quality column holds 13 warning bits. They never remove rows by themselves. The bits split into three groups:

The quality flags page explains each bit and how to choose a mask.

Columns#

Lean columns (cols=lean, the default)#

ColumnTypeUnitMeaning
bjdf8dBJDTDB at mid-exposure
magf4magMagnitude if detected; otherwise the 5σ limit (rules)
mag_errf4mag1σ magnitude error; 99.999 if not detected
limitf4mag5σ limiting magnitude; NaN if none
fluxf4mJyFlux density (forced; can be negative)
flux_errf4mJyFlux density error
qualityu2Q5 quality bits
detectedu11 if detected at 5σ, else 0
camerau1Camera, coded through dictionaries.camera (a string in text formats)
image_numu4Image number; the image name is camera + %06d
curveu1Index into header.curves

Text, JSON, Arrow and Parquet add field, band and aperture (pixels) after curve.

Full columns (cols=full)#

All lean columns, plus:

ColumnTypeUnitMeaning
jdf8dJD (UTC) at mid-exposure
ut_datestrUT date and time of the image, as recorded
imagestrImage name, e.g. bA685528
fwhmf4pixImage FWHM
zpf4magZero point at the star's position
countsf4ADUSky-subtracted aperture counts
counts_errf4ADUCounts error
wcs_medf4arcsecMedian astrometric residual of the image WCS (header WCS_MED, arcsec; 1 pixel = 8″)
zp_fit_stdf4magScatter of the zero-point fit
x, yf4pixAperture centre on the reduced image (FITS, 1-based); NaN if not stored
flatf4Aperture-weighted harmonic mean of the flat field

The full set rebuilds the rc1 client's LightCurve.rows exactly. It is about three times the size of the lean set, so ask for it only when you need it.

Sentinel values#

ValueWhereMeaning
99.999mag_errNot detected
about 99.999 + zpmagNot detected and no limit
NaN (empty in CSV, null in JSON)limit, flux_err, x, yNot available
n = 0headerThe star exists but has no photometry