empyrean.ObservatoryConfig

class ObservatoryConfig(obs_code, sigma_arcsec, max_apparent_mag, min_elongation_deg, min_elevation_deg=None, max_sun_altitude_deg=None)[source]

Bases: object

Per-site astrometric assumptions and observability filters.

Not consulted by empyrean.evaluate_plan(): the only field that takes these, PlanningConfig.observatories, refuses any non-empty list. Pass each candidate’s σ to PlannedObservation.optical() instead; the observability filters are engine-set on that entry point and are not caller-configurable. The class exists because it is part of the shared planning configuration, and becomes live if a surface that reads it is exposed.

Two of the four filters below stay inert even then. min_elevation_deg and max_sun_altitude_deg are applied by the engine’s visibility survey, which no channel of this distribution exposes; plan evaluation gates each candidate on apparent magnitude and solar elongation alone. So PlanCandidates.observable means “not ruled out from Earth”, never “schedulable from this site”.

Mirrors empyrean::ObservatoryConfig field for field. The four astrometric and site-invariant fields carry no defaults on either side, so a config cannot be half-specified without saying so.

The two visibility limits are optional here, and None on either means “take the engine’s own default” — a deliberate deferral, not a number invented on this side. That is a spelling difference from Rust, which states min_elevation_deg as a plain float (its default, 0.0, being the geometric horizon a zero already means) and only max_sun_altitude_deg as an Option. Both spellings reach the same engine values.

Methods

__init__(obs_code, sigma_arcsec, ...[, ...])

Attributes

max_sun_altitude_deg

Solar altitude at or below which the site counts as dark (degrees).

min_elevation_deg

Minimum geometric elevation of the target above the site's local horizon (degrees), ignoring atmospheric refraction.

obs_code

MPC observatory code.

sigma_arcsec

Assumed 1σ (RA·cosδ, Dec) uncertainty in arcsec.

max_apparent_mag

Limiting apparent magnitude.

min_elongation_deg

Minimum solar elongation (degrees).

Parameters:
obs_code: str

MPC observatory code.

sigma_arcsec: tuple[float, float]

Assumed 1σ (RA·cosδ, Dec) uncertainty in arcsec.

max_apparent_mag: float

Limiting apparent magnitude.

min_elongation_deg: float

Minimum solar elongation (degrees).

min_elevation_deg: float | None = None

Minimum geometric elevation of the target above the site’s local horizon (degrees), ignoring atmospheric refraction.

None takes the engine’s default of 0.0, the geometric horizon — the least-opinionated statement the geometry can make, not an observing recommendation: airmass there is about 38, and real programs cut between 20° and 30°.

max_sun_altitude_deg: float | None = None

Solar altitude at or below which the site counts as dark (degrees). None takes the engine’s default of −18°, astronomical twilight.

Optional rather than a plain float because 0.0 is a legal solar altitude — the Sun’s centre on the geometric horizon — so a defaulted zero would quietly plan a campaign in daylight. The other conventions are civil (−6°) and nautical (−12°); above +90° disables the gate.