Version 2.0.0-alpha: Python + more realistic OD noise models + OD estimation flexibility + Export to Parquet and CCSDS OEM
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
- Initial Python bindings by @ChristopherRabotin in #114
- Update shadow-rs requirement from 0.20.0 to 0.21.0 by @dependabot in #123
- [WIP] Demo of boolean combination of events and trajectories now in parquet only by @ChristopherRabotin in #126
- (doc) add synthax coloring to codeblocks by @ThibFrgsGmz in #135
- (feat) add f-string formatting by @ThibFrgsGmz in #136
- Significant improvements in noise modeling by @ChristopherRabotin in #129
- Add online measurement rejection by @ChristopherRabotin in #145
- High fidelity noise models for orbit determination by @ChristopherRabotin in #146
- Update pretty_env_logger requirement from 0.4 to 0.5 by @dependabot in #148
- Various usability enhancements for Python user by @ChristopherRabotin in #149
- Export OD results in Parquet by @ChristopherRabotin in #147
- Add support for WASM targets by @thomasantony in #153
- Fix #154 by @ChristopherRabotin in #155
New Contributors
- @ThibFrgsGmz made their first contribution in #135
- @thomasantony made their first contribution in #153
Full Changelog: 1.1.2...2.0.0-alpha