Skip to content

Trajectory structure and event finding #147

Open

Description

High level description

New feature

I've put a substantial amount of work into the Trajectory type in Nyx. Quite frankly, it's extremely useful, and it should be ported to ANISE.

This will include event finding, which is very robust (Brent solver) and one of the main features of the trajectory structure.

To make this generic over an Orbit structure, I export the trait bounds as is recommended by PyO3: https://pyo3.rs/v0.20.0/trait_bounds .

One of the main limitations of using the Trajectory structure in Python in Nyx is that it cannot be pickled. This sounds like it shouldn't be a big deal, but Kedro (among other frameworks) will pickle data between computational steps. As such, I think that pythonize would be useful, where the serialized representation of the structure is used as a proxy. In Nyx, I rely on using the parquet intermediate file, but that isn't convenient.

Once I tackle nyx-space/nyx#86, I'll have a better idea on how to integrate Nyx's Spacecraft object with ANISE's Orbit object. Nyx relies on spacecraft trajectories in several spots (e.g. orbit determination of spacecraft instead of just of their orbits): that feature must remain.

Requirements

  • Store any number of states in a trajectory structure
  • Interpolate in between these states using the Hermite algorithm currently available for Type 13 SPK
  • Find events in a trajectory, including falling or rising edges
  • Support Pickling of the data for Python interaction

Test plans

Grab those from Nyx.

Design

Move the Nyx implementation in full.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions