pyrao 0.1.6

Python wrapper for rao rust package.
Documentation
  • Coverage
  • 0%
    0 out of 15 items documented0 out of 2 items with examples
  • Size
  • Source code size: 58.43 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 3.07 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 39s Average build duration of successful builds.
  • all releases: 39s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • jcranney

PyPI - Version GitHub Actions Workflow Status

pyrao

pyrao is a few things:

  • a Python wrapper for rao package - a set of Adaptive Optics (AO) tools written in Rust,
  • a standalone AO simulator with Python APIs, fast enough to run 8m class simulations at real time on a modest laptop,
  • a data stream generator for developing tools based on ImageStreamIO,
  • an experiment in linear algebra + statistics, optimal control/estimation, python-wrapped-rust (using PyO3).

There are many things that pyrao is not, but most importantly:

  • pyrao is not an "end-to-end numerical simulation tool for AO" (see [#assumptions])
  • pyrao is not an RTC in its own right, though it emulates some functionalities of one.

pyrao is also suitable for the following tasks, but has not yet been developed for them:

  • a Gymnasium formatted environment for developping and testing reinforcement learning.
  • a performance evaluation tool - provided you can simulate your system in rao.

If there are tasks you think pyrao could be suitable for and you would like to see them developed, raise an issue.

Installation

Annoyingly, there is already a PyPI package named pyrao, so to install with pip, you should use:

pip install rao

but then to import the package, use (as expected):

import pyrao

Usage

The usage of this wrapper is very actively changing, based on my own needs. Currently, the main use-case for the Python wrapper is for rapid generation of interaction matrices and covariance matrices, both for linear simulations of AO systems, and for fitting of parameters by comparing measured and analytical matrices.

For example usages, see the following:

Assumptions

We assume that everything in the AO loop is linear, and all sources of noise are additive Gaussian iid processes. For example, we assume that the measurements are a linear combination of atmospheric phase (according to some sampling of von Karman layers), actuator commands (according to some influence functions), and a noise vector with a specified covariance matrix.

Disclaimer

This is presently a hobby-project, so development may be slow and/or unpredictable. However, if you have a change you would like to see, or a feature you would like added, I encourage you to file an issue - since it's likely something I haven't considered and it could prove useful to others. If you make a change yourself and you think others might also find it useful, please consider making a pull request so that I can include your edits in this repo. If you have any other feedback, feel free to share it with me directly via email: jesse.cranney@anu.edu.au.