empyrean.PlannedObservation

class PlannedObservation(epoch_mjd_tdb, kind=PlannedObservationKind.OPTICAL, optical_code='', optical_sigma_arcsec=(1.0, 1.0), radar_transmit_station=RadarStation.GOLDSTONE_DSS14, radar_receive_station=RadarStation.GOLDSTONE_DSS14, radar_mode=RadarMode.BOTH, radar_bandwidth_hz=0.0, radar_freq_resolution_hz=0.0, radar_snr=None, radar_target_h_mag=None, radar_target_visual_albedo=None, radar_target_radar_albedo=None, radar_target_diameter_km=None, radar_target_spin_period_hours=None, radar_integration_s=0.0)[source]

Bases: object

One candidate observation: when it would be taken and what it would measure.

Tagged-union shape — the active fields depend on kind, and fields belonging to the other kind must be left at their defaults. Setting an inapplicable field raises ValueError at construction rather than being silently ignored. Prefer the optical() / radar() constructors, which set the discriminator for you.

Mirrors empyrean::PlannedObservation.

Methods

__init__(epoch_mjd_tdb[, kind, ...])

optical(epoch_mjd_tdb, optical_code[, ...])

An optical candidate at a registered observatory.

radar(epoch_mjd_tdb, *[, ...])

A radar candidate at the given receive epoch.

Attributes

kind

optical_code

Registered MPC observatory code (e.g. "F51").

optical_sigma_arcsec

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

radar_bandwidth_hz

Waveform bandwidth (Hz) — sets the delay (range) σ.

radar_freq_resolution_hz

Doppler frequency resolution (Hz) — sets the range-rate σ.

radar_integration_s

Coherent integration time (s) for the link budget.

radar_mode

Which observable(s) to measure.

radar_receive_station

Receiving dish.

radar_snr

Effective SNR as a linear power ratio, not dB.

radar_target_diameter_km

Link-budget target effective diameter (km).

radar_target_h_mag

Link-budget target absolute magnitude HH (mag).

radar_target_radar_albedo

Link-budget target radar (OC) albedo.

radar_target_spin_period_hours

Link-budget target rotation period (hours); caps the coherent integration time.

radar_target_visual_albedo

Link-budget target visual geometric albedo pVp_V.

radar_transmit_station

Transmitting dish.

epoch_mjd_tdb

Planned epoch (MJD TDB) — the receive epoch for radar.

Parameters:
  • epoch_mjd_tdb (float)

  • kind (PlannedObservationKind)

  • optical_code (str)

  • optical_sigma_arcsec (tuple[float, float])

  • radar_transmit_station (RadarStation)

  • radar_receive_station (RadarStation)

  • radar_mode (RadarMode)

  • radar_bandwidth_hz (float)

  • radar_freq_resolution_hz (float)

  • radar_snr (float | None)

  • radar_target_h_mag (float | None)

  • radar_target_visual_albedo (float | None)

  • radar_target_radar_albedo (float | None)

  • radar_target_diameter_km (float | None)

  • radar_target_spin_period_hours (float | None)

  • radar_integration_s (float)

epoch_mjd_tdb: float

Planned epoch (MJD TDB) — the receive epoch for radar.

kind: PlannedObservationKind = 'optical'
optical_code: str = ''

Registered MPC observatory code (e.g. "F51").

optical_sigma_arcsec: tuple[float, float] = (1.0, 1.0)

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

radar_transmit_station: RadarStation = 'goldstone_dss14'

Transmitting dish.

radar_receive_station: RadarStation = 'goldstone_dss14'

Receiving dish. Equal to the transmit station = monostatic.

radar_mode: RadarMode = 'both'

Which observable(s) to measure.

radar_bandwidth_hz: float = 0.0

Waveform bandwidth (Hz) — sets the delay (range) σ. Must be positive for RadarMode.DELAY or RadarMode.BOTH.

radar_freq_resolution_hz: float = 0.0

Doppler frequency resolution (Hz) — sets the range-rate σ. Must be positive for RadarMode.DOPPLER or RadarMode.BOTH.

radar_snr: float | None = None

Effective SNR as a linear power ratio, not dB.

None — the default — means derive it from the link budget over the radar_target_* properties and radar_integration_s. That is a different request, not a missing value: supply a number and the link budget is not consulted at all. Whatever the link budget had to assume comes back on PlanCandidates.radar_provenance, so a derived SNR is never silent.

radar_target_h_mag: float | None = None

Link-budget target absolute magnitude HH (mag). None = not known.

radar_target_visual_albedo: float | None = None

Link-budget target visual geometric albedo pVp_V. None = not known.

radar_target_radar_albedo: float | None = None

Link-budget target radar (OC) albedo. None = not known.

radar_target_diameter_km: float | None = None

Link-budget target effective diameter (km). None = not known.

radar_target_spin_period_hours: float | None = None

Link-budget target rotation period (hours); caps the coherent integration time. None = not known.

radar_integration_s: float = 0.0

Coherent integration time (s) for the link budget. Read only when radar_snr is None.

classmethod optical(epoch_mjd_tdb, optical_code, optical_sigma_arcsec=(1.0, 1.0))[source]

An optical candidate at a registered observatory.

Mirrors empyrean::PlannedObservation::optical.

Return type:

PlannedObservation

Parameters:
classmethod radar(epoch_mjd_tdb, *, radar_transmit_station=RadarStation.GOLDSTONE_DSS14, radar_receive_station=RadarStation.GOLDSTONE_DSS14, radar_mode=RadarMode.BOTH, radar_bandwidth_hz=0.0, radar_freq_resolution_hz=0.0, radar_snr=None, radar_target_h_mag=None, radar_target_visual_albedo=None, radar_target_radar_albedo=None, radar_target_diameter_km=None, radar_target_spin_period_hours=None, radar_integration_s=0.0)[source]

A radar candidate at the given receive epoch.

Mirrors empyrean::PlannedObservation::radar. Leave radar_snr at None to have the effective SNR derived from the link budget over the radar_target_* properties and radar_integration_s.

Return type:

PlannedObservation

Parameters:
  • epoch_mjd_tdb (float)

  • radar_transmit_station (RadarStation | str)

  • radar_receive_station (RadarStation | str)

  • radar_mode (RadarMode | str)

  • radar_bandwidth_hz (float)

  • radar_freq_resolution_hz (float)

  • radar_snr (float | None)

  • radar_target_h_mag (float | None)

  • radar_target_visual_albedo (float | None)

  • radar_target_radar_albedo (float | None)

  • radar_target_diameter_km (float | None)

  • radar_target_spin_period_hours (float | None)

  • radar_integration_s (float)