Skip to content

Version 2.0.0-alpha: Python + more realistic OD noise models + OD estimation flexibility + Export to Parquet and CCSDS OEM

Compare
Choose a tag to compare
@ChristopherRabotin ChristopherRabotin released this 25 May 14:09
· 572 commits to master since this release
c9e51e4

Version 2.0.0-alpha

This is a big release!

First, working from @thomasantony 's work, Nyx now has Python bindings. I expect that most users will want to use the Python bindings directly instead of developing in Rust. Even in my limited experience with the Nyx library in Python, it enables for much faster iteration from a mission analysis or orbit determination engineer point of view. The package is available on pypi so you can run pip install nyx_space. Expect to see some iteration on how this work with version 2.0.0-beta, most notably for changes to how ephemeris and orientation files are used.

Second, no more CSV exports. Nyx now exports (and imports) everything in Parquet files: this allows for very easy interoperability with dataframes, thereby allowing users to create, modify, or search data using pandas, polars. Note that Nyx leverages the metadata of these parquet files to store additional information (like ground station configuration in the simulation of orbit determination measurements), but writing that is not yet supported in neither pandas or polars (but pyarrow supports it).

Third, the orbit determination code has been heavily refactored. This work enables estimation of different state sizes: this will allow estimating the biases in the transponders, or the coefficient of reflectivity of a vehicle (these functionalities aren't yet implemented, cf. #94 ). It also allows for online measurement rejection: for example, if the residual ratio of a measurement is more than 3-sigmas away from the mean residual, it can be rejected on the fly instead of having to manually remove it from the list of measurements. The refactoring also now includes a first order Gauss Markov process for noise modeling. This is the industry standard: a time correlated noise with a user-provided time constant, and a constant noise floor. That said, if one wants different noises, they can now write them directly in a measurement parquet file in Python, and have Nyx ingest that!

Fourth, the big thing that is lacking in Nyx, and in this release, is documentation. To acknowledge that, there's now a Github issue template to request better documentation. It'll likely only be done in https://github.com/nyx-space/nyx/milestone/7 since version 2.0.0-beta will bring in a number of other breaking changes. Jump into @ThibFrgsGmz 's discussion here as well: #137 . On his recommendation, Nyx will use the Diataxis documentation method.

What's Changed

New Contributors

Full Changelog: 1.1.2...2.0.0-alpha