empyrean.ODConfig

class ODConfig(force_model=ForceModelTier.STANDARD, epsilon=1e-09, max_light_time_iterations=3, num_threads=0, frame=Frame.ICRF, weighting=<factory>, debiasing=<factory>, excluded_perturbers=<factory>, origin=<factory>, iod=<factory>, output_epoch=<factory>, max_iterations=100, convergence_tol=1e-05, allow_arc_truncation=True, coorbital_enabled=True, solve_for=SolveForParams.AUTO, auto_escalation=<factory>, acceptability=<factory>, fit_station_biases=False, station_radec=<factory>, use_span_grouping=False, rejection=<factory>, auto_force_model=False, output_representation=CovarianceRepresentation.CARTESIAN, solve_for_flags=None, allow_unbracketed_maneuvers=False, photometry=None)[source]

Bases: object

Unified orbit-determination configuration.

Sensible production defaults out of the box:

  • VFCC2017 station weighting + nightly de-weighting (WeightingConfig.preset)

  • EFCC2020 catalog debiasing enabled (DebiasingConfig.enabled)

  • SolveForParams.AUTO (escalates 6→9 parameters on poor fit)

  • Adaptive outlier rejection enabled, max_passes = 4

Methods

__init__([force_model, epsilon, ...])

Attributes

allow_arc_truncation

Allow the outward-expansion pipeline to truncate a sub-arc it cannot fit as one piece.

allow_unbracketed_maneuvers

Permit solving a thrust Δv segment whose burn window is not bracketed by observations (the state absorbs it otherwise).

auto_force_model

Auto-select force-model tier from IOD orbital elements.

convergence_tol

DC convergence tolerance, tested on the undamped Gauss–Newton step's quadratic form — the number published back as DetermineResult.gn_step_qnorm, NOT the μ-damped DetermineResult.update_norm, which this tolerance does not bound.

coorbital_enabled

Master switch for the co-orbital IOD lane.

epsilon

Adaptive integrator truncation-error tolerance.

fit_station_biases

Enable Schur-eliminated per-station RA/Dec bias fitting.

force_model

frame

max_iterations

max_light_time_iterations

num_threads

0 = use all available cores.

output_representation

photometry

Post-OD photometric fit.

solve_for

solve_for_flags

Explicit per-axis wide solve request.

use_span_grouping

weighting

Observation weighting pipeline.

debiasing

Catalog-bias-correction configuration.

excluded_perturbers

Bodies to omit from the perturber set.

origin

Origin-policy selector.

iod

output_epoch

auto_escalation

acceptability

station_radec

rejection

Parameters:
  • force_model (ForceModelTier)

  • epsilon (float)

  • max_light_time_iterations (int)

  • num_threads (int)

  • frame (Frame)

  • weighting (WeightingConfig)

  • debiasing (DebiasingConfig)

  • excluded_perturbers (list[Origin | str])

  • origin (OriginPolicy)

  • iod (IODConfig)

  • output_epoch (OutputEpoch)

  • max_iterations (int)

  • convergence_tol (float)

  • allow_arc_truncation (bool)

  • coorbital_enabled (bool)

  • solve_for (SolveForParams)

  • auto_escalation (AutoEscalationPolicy)

  • acceptability (AcceptabilityThresholds)

  • fit_station_biases (bool)

  • station_radec (StationRaDecConfig)

  • use_span_grouping (bool)

  • rejection (RejectionConfig)

  • auto_force_model (bool)

  • output_representation (CovarianceRepresentation)

  • solve_for_flags (SolveFor | None)

  • allow_unbracketed_maneuvers (bool)

  • photometry (PhotometryConfig | None)

force_model: ForceModelTier = 'standard'
epsilon: float = 1e-09

Adaptive integrator truncation-error tolerance.

max_light_time_iterations: int = 3
num_threads: int = 0

0 = use all available cores.

frame: Frame = 'icrf'
weighting: WeightingConfig

Observation weighting pipeline. Default = enabled + VFCC2017 preset. See WeightingConfig for full layered control.

debiasing: DebiasingConfig

Catalog-bias-correction configuration. Default = EFCC2020 standard resolution loaded from the engine’s default data location. See DebiasingConfig.

excluded_perturbers: list[Origin | str]

Bodies to omit from the perturber set. Pass Origin instances (or canonical names). Useful when fitting an asteroid that the force model would otherwise include as a perturber — e.g. fitting Eros while excluding Origin.asteroid(433).

origin: OriginPolicy

Origin-policy selector. Default OriginPolicyMode.AUTO (heliocentric → geocentric Earth cascade). Set origin=OriginPolicy(mode=OriginPolicyMode.EXPLICIT, origin=Origin.EARTH) to pin the pipeline to a specific central body for catalog satellites or regime-classified workflows.

iod: IODConfig
output_epoch: OutputEpoch
max_iterations: int = 100
convergence_tol: float = 1e-05

DC convergence tolerance, tested on the undamped Gauss–Newton step’s quadratic form — the number published back as DetermineResult.gn_step_qnorm, NOT the μ-damped DetermineResult.update_norm, which this tolerance does not bound. The engine default is 1e-5.

allow_arc_truncation: bool = True

Allow the outward-expansion pipeline to truncate a sub-arc it cannot fit as one piece.

Setting False makes an arc spanning a dynamical discontinuity FAIL loudly instead of delivering a fit of the reconcilable sub-arc with the rest tagged outside_arc. Per-observation rejection is orthogonal and still runs, and under an AUTO origin policy the refusal feeds the origin cascade rather than surfacing — pin the origin to get a pure loud failure.

coorbital_enabled: bool = True

Master switch for the co-orbital IOD lane. Enabling it does not route ordinary objects through the lane — it still fires only when every co-orbitality gate passes.

solve_for: SolveForParams = 'auto'
auto_escalation: AutoEscalationPolicy
acceptability: AcceptabilityThresholds
fit_station_biases: bool = False

Enable Schur-eliminated per-station RA/Dec bias fitting.

station_radec: StationRaDecConfig
use_span_grouping: bool = False
rejection: RejectionConfig
auto_force_model: bool = False

Auto-select force-model tier from IOD orbital elements.

output_representation: CovarianceRepresentation = 'cartesian'
solve_for_flags: SolveFor | None = None

Explicit per-axis wide solve request. When set, overrides the coarse solve_for and asks the engine for an Explicit fit over the requested axes (Marsden / DT / AMRAT / thrust). None = use solve_for.

allow_unbracketed_maneuvers: bool = False

Permit solving a thrust Δv segment whose burn window is not bracketed by observations (the state absorbs it otherwise). Default False — refuse loudly.

photometry: PhotometryConfig | None = None

Post-OD photometric fit. None (default) disables it; the fit runs after the orbit is solved and never touches the state.