empyrean.DetermineResults

class DetermineResults(orbits, summary, residuals, failures, unmatched_orbit_ids, _results=<factory>)[source]

Bases: object

The result of a batch orbit determination — every object the observations grouped into, delivered or not.

determine() fits every object in the input. Three tables describe the run:

  • orbits — one row per object that produced an orbit.

  • summary — one row per input object, so an object that failed is a row saying so rather than an absence.

  • residuals — every delivered fit’s per-observation rows, each tagged with the object_id it belongs to.

Index by object identifier for the full single-object view:

fits = determine(observations)
print(len(fits), "object(s);", len(fits.delivered), "delivered")
yr4 = fits["2024 YR4"]  # DetermineResult
print(yr4.acceptability.extrapolation_acceptable)

Fitting one object is the one-entry case, not a separate call: single() unwraps it and refuses (loudly) if the batch turned out to hold more than one.

Methods

__init__(orbits, summary, residuals, ...[, ...])

single()

The one fit, for the common single-object call.

Attributes

all_failed

True when the batch ran but no object produced an orbit.

delivered

Identifiers of the objects that produced an orbit.

object_ids

Every object identifier, in table order.

orbits

Fitted orbits — one row per delivered object, carrying object_id, covariance, and the fitted non-grav / SRP slots.

summary

One row per input object, delivered or failed.

residuals

Per-observation residuals of every delivered fit, each row tagged with its object_id.

failures

Objects that produced no orbit, keyed by identifier.

unmatched_orbit_ids

Seed orbits that matched no observation group and therefore constrained nothing.

Parameters:
  • orbits (CartesianOrbits | KeplerianOrbits | CometaryOrbits | SphericalOrbits)

  • summary (FitSummary)

  • residuals (ObservationResults)

  • failures (dict[str, DetermineFailure])

  • unmatched_orbit_ids (list[str])

  • _results (dict[str, DetermineResult])

orbits: CartesianOrbits | KeplerianOrbits | CometaryOrbits | SphericalOrbits

Fitted orbits — one row per delivered object, carrying object_id, covariance, and the fitted non-grav / SRP slots. Feed straight back into propagation or ephemeris generation.

summary: FitSummary

One row per input object, delivered or failed.

residuals: ObservationResults

Per-observation residuals of every delivered fit, each row tagged with its object_id.

failures: dict[str, DetermineFailure]

Objects that produced no orbit, keyed by identifier.

unmatched_orbit_ids: list[str]

Seed orbits that matched no observation group and therefore constrained nothing. Reported rather than dropped.

property object_ids: list[str]

Every object identifier, in table order.

property delivered: list[str]

Identifiers of the objects that produced an orbit.

property all_failed: bool

True when the batch ran but no object produced an orbit. The per-object failures are the diagnosis.

single()[source]

The one fit, for the common single-object call.

Raises — loudly — when the batch holds anything other than exactly one delivered object: zero objects, more than one (naming them, so the caller can index instead), or one whose fit failed. It never chooses among several fits on the caller’s behalf.

Return type:

DetermineResult