Sidereon.Sidereal (Sidereon v0.23.0)

Copy Markdown View Source

Sidereal repeat-period helpers and residual filtering.

Durations cross the public Elixir boundary as seconds. Residual samples are unitless to the filter, so callers may pass metres, cycles, or another scalar residual unit as long as each series uses one unit consistently.

Summary

Functions

Filter a residual series with a supplied repeat period in seconds.

Compute a broadcast-derived per-satellite orbit repeat lag in seconds.

Score repeating components at candidate periods.

Return the default constellation repeat period in seconds.

Types

constellation()

@type constellation() ::
  :gps | :glonass | :galileo | :beidou | :qzss | :navic | :sbas | String.t()

error_reason()

@type error_reason() ::
  :invalid_input | :no_broadcast_record | :unsupported_constellation | term()

satellite_id()

@type satellite_id() ::
  String.t() | {String.t(), pos_integer()} | {atom(), pos_integer()}

Functions

filter(series, period_s, opts \\ [])

Filter a residual series with a supplied repeat period in seconds.

orbit_repeat_lag(broadcast, satellite_id, near_epoch_j2000_s)

@spec orbit_repeat_lag(Sidereon.GNSS.Broadcast.t(), satellite_id(), number()) ::
  {:ok, float()} | {:error, error_reason()}

Compute a broadcast-derived per-satellite orbit repeat lag in seconds.

periodicity_strength(series, candidate_periods_s, opts \\ [])

@spec periodicity_strength([number()], [number()], keyword()) ::
  {:ok, [{float(), float()}]} | {:error, error_reason()}

Score repeating components at candidate periods.

Returns {period_s, strength} pairs, where strength is in [0, 1].

repeat_period(system)

@spec repeat_period(constellation()) :: float()

Return the default constellation repeat period in seconds.