Source code for adam_core.photometry.bandpasses.tables
from __future__ import annotations
import pyarrow as pa
import quivr as qv
[docs]
class BandpassCurves(qv.Table):
"""
Canonical bandpass response curves.
Each row represents a single filter response curve: wavelength (nm) and a
normalized dimensionless throughput (0..1).
"""
filter_id = qv.LargeStringColumn()
instrument = qv.LargeStringColumn()
band = qv.LargeStringColumn()
wavelength_nm = qv.LargeListColumn(pa.float64())
throughput = qv.LargeListColumn(pa.float64())
source = qv.LargeStringColumn()
[docs]
class ObservatoryBandMap(qv.Table):
"""
Map (MPC observatory_code, reported band) -> canonical filter_id.
`key` is a convenience column: f"{observatory_code}|{reported_band}".
"""
observatory_code = qv.LargeStringColumn()
reported_band = qv.LargeStringColumn()
filter_id = qv.LargeStringColumn()
key = qv.LargeStringColumn()
[docs]
class AsteroidTemplates(qv.Table):
"""
Asteroid reflectance templates, including fixed population mixes.
`reflectance` is dimensionless and should be normalized at 550 nm.
"""
template_id = qv.LargeStringColumn()
wavelength_nm = qv.LargeListColumn(pa.float64())
reflectance = qv.LargeListColumn(pa.float64())
weight_C = qv.Float64Column()
weight_S = qv.Float64Column()
citation = qv.LargeStringColumn()
[docs]
class TemplateBandpassIntegrals(qv.Table):
"""
Precomputed template×filter integrals.
The stored scalar is intended for photon-counting synthetic photometry:
I = ∫ F_sun(λ) * R_ast(λ) * T(λ) * λ dλ
where F_sun is the adopted solar spectrum, R_ast is reflectance, and T is throughput.
"""
template_id = qv.LargeStringColumn()
filter_id = qv.LargeStringColumn()
integral_photon = qv.Float64Column()