Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Trajectory structure and event finding #147

Open
ChristopherRabotin opened this issue Dec 23, 2023 · 0 comments
Open

Trajectory structure and event finding #147

ChristopherRabotin opened this issue Dec 23, 2023 · 0 comments
Labels
API: python Related to the Python API API: rust Related to the Rust API Kind: new feature Status: backlog

Comments

@ChristopherRabotin
Copy link
Member

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
Labels
API: python Related to the Python API API: rust Related to the Rust API Kind: new feature Status: backlog
Projects
None yet
Development

No branches or pull requests

1 participant