ILLUSTRATIVE · NASA / SVS · NOT ADITYA-L1 DATA
Data · schemas
Table schemas
Every column in the canonical tables, with its type and meaning.
What is this?
The schema of every canonical table: each column, its type, its units and what a missing value means.
Why should I trust it?
Carried verbatim from the frozen data dictionary written at the dataset freeze, not restated in the site's own words.
Where can I verify it?
- The dataset cardProvenance and limitations
- How the tables were builtStage by stage
- Per-table digestsThe bytes behind the schema
- The raw payloadDigest-addressed JSON
T1 — solexs_lc_1min (610,560 rows · 424 files)
One row per minute of a SoLEXS observing day. Source: .lc (light curve) + .gti, SDD2.
| Column | Type | Units | Source / derivation | Allowed values | Missing semantics |
|---|---|---|---|---|---|
timestamp |
datetime64[ns,UTC] | — | minute index of the observation day | 1,440/day, monotonic, unique | never missing |
counts_total |
float64 | counts | Σ of .lc COUNTS over finite seconds in the minute |
≥ 0 | NaN ⟺ no finite second (q_no_data) |
live_time_s |
float64 | s | GTI-covered seconds in the minute (inclusive endpoints, STOP−START+1) |
0 … 60 | never missing; 0 = fully excluded |
rate_total |
float64 | counts/s | counts_total / live_time_s |
≥ 0 | NaN where live_time_s == 0 — not imputed |
gti_fraction |
float64 | — | live_time_s / 60 |
0.0 … 1.0 | never missing |
n_seconds_present |
int16 | count | number of finite .lc seconds in the minute |
0 … 60 | never missing |
q_no_data |
bool | — | n_seconds_present == 0 |
True/False | flag |
q_partial |
bool | — | 0 < gti_fraction < 1 |
True/False | flag |
detector |
category | — | SoLEXS detector | SDD2 only |
never missing |
src_file |
object | — | source .lc path |
— | never missing |
src_sha256 |
object | — | SHA-256 of the source archive (Phase 0.5.1 manifest) | 64 hex | never missing |
archive_version |
object | — | ISSDC archive variant | v1.0, v1.1 |
never missing |
counts_total(light curve) is band-limited and is not Σ(T2counts) — seeSCIENTIFIC_FINDINGS.mdF-1. The two are carried independently; neither is derived from the other.
T2 — solexs_spec_1min (610,560 rows · 424 files)
One row per minute; the full SoLEXS spectrum. Source: .pi (OGIP Type II PHA) + .gti, SDD2.
| Column | Type | Units | Source / derivation | Allowed values | Missing semantics |
|---|---|---|---|---|---|
timestamp |
datetime64[ns,UTC] | — | minute index | 1,440/day | never missing |
counts |
object → array[340] float64 | counts | per-channel Σ over finite seconds in the minute | ≥ 0 per channel | NaN per channel where no finite second |
live_time_s |
float64 | s | GTI-covered seconds (inclusive) | 0 … 60 | never missing |
gti_fraction |
float64 | — | live_time_s / 60 |
0.0 … 1.0 | never missing |
n_seconds_present |
int16 | count | finite spectra contributing | 0 … 60 | never missing |
q_no_data |
bool | — | no finite spectrum in the minute | True/False | flag |
q_partial |
bool | — | partial GTI coverage | True/False | flag |
detector |
category | — | SoLEXS detector | SDD2 |
never missing |
chantype |
category | — | channel type from CHANTYPE |
PI |
never missing |
src_file, src_sha256, archive_version |
object | — | provenance | — | never missing |
Channel axis: counts[i] is PI channel i, i ∈ [0, 339] — an ordinal index. No channel_energy_keV column exists, by design: the archive contains no response matrix, so no channel→energy mapping is possible. Do not assume linearity in energy.
T3 — hel1os_lc_1min (1,027,773 rows · 373 files)
LONG form (spec r6): one row per (minute, detector), keyed uniquely by that pair. Source: HEL1OS lightcurve_*.fits, ownership from the Version Resolution Engine.
| Column | Type | Units | Source / derivation | Allowed values | Missing semantics |
|---|---|---|---|---|---|
timestamp |
datetime64[ns,UTC] | — | minute index | — | never missing |
detector |
object | — | the detector this row describes | CZT1,CZT2,CDTE1,CDTE2 |
never missing |
{det}_{lo}_{hi}_rate |
float64 | counts/s | mean of CTR over the minute's samples |
≥ 0 | NaN when {det} ≠ this row's detector (structural) |
{det}_{lo}_{hi}_stat_err |
float64 | counts/s | mean of STAT_ERR |
≥ 0 | as above |
{det}_{lo}_{hi}_n_samples |
float64 | count | samples contributing to the minute | ≥ 1 | as above |
orbit_id |
object | — | owning orbit (version-resolved) | HLS_…_V### |
never missing |
orbit_version |
object | — | orbit product version | V111,V211,V112,V311 |
never missing |
src_file, src_sha256, archive_version |
object | — | provenance | — | never missing |
Band columns present (edges parsed from EXTNAME, allowlist-validated):
- CZT1/CZT2:
20_40,40_60,60_80,80_150,18_160(keV) - CDTE1/CDTE2:
5_20,20_30,30_40,40_60,1p8_90(keV;1p8= 1.8)
Structural NaN: because the table is long-form, each row populates only its own detector's band columns; the other three detectors' columns are NaN by construction, not by missing data. Filter by
detectorbefore using band columns. A wide view may be derived, but the canonical form is long (spec r6) because ownership is per (minute, detector).
T4 — hel1os_hk_1min (277,054 rows · 389 files)
One row per minute of HEL1OS housekeeping. Source: aux/hk.fits.
| Column | Type | Units | Derivation | Notes |
|---|---|---|---|---|
timestamp |
datetime64[ns,UTC] | — | minute index | never missing |
czt1temp, czt2temp, cdte1temp, cdte2temp |
float64 | °C | minute mean | detector temperatures |
czthvmon, cdtehvmon |
float64 | V | minute mean | high-voltage monitors |
czt1ctr, czt2ctr, cdte1ctr, cdte2ctr |
float64 | counts/s | minute mean | per-detector rate monitors |
czt1enth |
float64 | keV | minute mean | energy threshold |
cdte1enerthr, cdte2enerthr |
float64 | (undeclared) | minute mean | energy thresholds; unit not declared in the archive |
cdte1pilectr, cdte2pilectr |
float64 | count | minute max | pile-up counters |
czt1satctr1, czt2satctr1 |
float64 | count | minute max | saturation counters |
czt1hotpixcnt, czt2hotpixcnt |
float64 | count | minute max | hot-pixel counters |
sunradeg, sundecdeg |
float64 | degrees | minute mean | Sun pointing |
fehkstat |
float64 | — | minute mean | front-end housekeeping status word |
suninfov |
bool | — | minute min (conservative: True only if every sample is True) | Sun-in-field-of-view |
n_samples |
int64 | count | HK records in the minute | ≥ 1 |
orbit_id, src_file, src_sha256, archive_version |
object | — | provenance | never missing |
Ordering: the parser preserves archive (telemetry-arrival) order and never sorts. Source records contain sub-second out-of-order steps (
SCIENTIFIC_FINDINGS.mdF-3). All aggregations used here are order-independent. A consumer needing chronological order must callapp.v2.utils.timeseries.chronological_sort()explicitly.
T5 — hel1os_spec_1min (1,026,816 rows · 373 files)
One row per (minute, detector); HEL1OS spectra. Source: hel1os_*_spectra_*.fits.
| Column | Type | Units | Derivation | Allowed values | Missing semantics |
|---|---|---|---|---|---|
timestamp |
datetime64[ns,UTC] | — | minute index | — | never missing |
detector |
object | — | spectra detector | CZT1,CZT2,CDTE1,CDTE2 |
never missing |
counts |
object → array[detchans] float64 |
counts | per-channel Σ over finite spectra in the minute | ≥ 0 | NaN per channel where absent |
stat_err |
object → array[detchans] float64 |
counts | per-channel Σ of STAT_ERR |
≥ 0 | as above |
live_time_s |
float64 | s | Σ EXPOSURE of contributing spectra |
≥ 0 | never missing |
n_spectra |
int64 | count | spectra contributing to the minute | ≥ 1 | never missing |
chantype |
category | — | from CHANTYPE |
PHA |
never missing |
detchans |
int16 | count | channel-space size — carried explicitly (r5) | 341 (CZT) or 511 (CdTe) | never missing |
orbit_id, src_file, src_sha256, archive_version |
object | — | provenance | — | never missing |
Three incommensurable channel spaces (F-4): SoLEXS PI 340, HEL1OS CZT PHA 341, HEL1OS CdTe PHA 511. Never concatenate
countsarrays across families or instruments — always filter bydetchans/detectorfirst. Channel indices are ordinal; no response matrix exists.
T6 — gti_intervals (2,130 rows · 1 file)
Long-form good-time intervals, one row per interval.
| Column | Type | Units | Derivation | Notes |
|---|---|---|---|---|
instrument |
object | — | source instrument | solexs |
detector |
object | — | detector | SDD2 (SDD1 contributes no intervals — F-12 inactive) |
start_utc |
datetime64[ns,UTC] | — | interval start | inclusive |
stop_utc |
datetime64[ns,UTC] | — | interval stop | inclusive |
duration_s |
float64 | s | stop − start + 1 (inclusive convention) |
> 0 always |
src_file, src_sha256 |
object | — | provenance | never missing |
A GTI-excluded second may carry a finite count (spec r5). The invariant is one-directional:
NaN(counts) ⇒ GTI-excluded. The excess is unexplained (A-14 / F-2).
T7 — provenance_manifest (5,199 rows · 1 file)
One row per parsed source file. Every canonical row traces here via src_file.
| Column | Type | Derivation | Notes |
|---|---|---|---|
src_file |
object | source path | join key; unique with (product,detector) |
src_sha256 |
object | archive SHA-256 (Phase 0.5.1 manifest) | 64 hex |
instrument |
object | solexs / hel1os |
— |
detector |
object | e.g. SDD1,SDD2,CZT1,CDTE2 |
None for whole-orbit products |
product |
object | lc,pi,gti,hk,spectra,lightcurve,events |
— |
archive_version |
object | v1.0,v1.1,V111,… |
— |
obs_date |
object | YYYYMMDD |
— |
orbit_id |
object | HEL1OS orbit, else None |
— |
creator |
object | producing pipeline, from the FITS header | e.g. solexs_pipeline-1.4 |
processing_date |
object | header DATE |
None for HEL1OS (no DATE header) |
rows_in / rows_out |
int64 | source rows / emitted rows | 0/0 legal for F-12 inactive detectors |
parser_version |
object | parser identity | v2-0.5.2 |
parsed_at_utc |
object | build wall-clock time | the one non-reproducible field — excluded from content hashes |
time_epoch_resolution |
object | resolved time convention | unix_seconds (SoLEXS) / relative_seconds (HEL1OS spectra) / mjd_days |
assumptions_applied |
object → array[str] | assumptions recorded at parse | audit trail |
Provenance behaviour (all tables)
- Every canonical row carries
src_file+src_sha256; no row lacks provenance (verified: 0 orphans, 0 duplicates, 0 missing). src_sha256is the archive SHA-256 from the Phase 0.5.1 manifest — it pins the input, not the output.- HEL1OS tables additionally carry
orbit_id, resolved by the Version Resolution Engine per (minute, detector). Two detectors in the same minute may legitimately have differentorbit_ids at orbit boundaries. - Provenance columns are not measurements; they must not be used as features.
artifacts/v2/phase05/DATA_DICTIONARY.md