PYWFS Examples

This page describes the simulated single-conjugate adaptive optics example based on a pyramid wavefront sensor.

Purpose

The PYWFS example is the richer simulator-backed path for users who already want more optical realism than the synthetic SHWFS quick start described in Synthetic SHWFS Example.

The example uses the OOPAO simulator to stand in for AO hardware and demonstrates the expected configuration shape for:

  • a wavefront sensor

  • a slopes processor

  • a loop controller

  • a wavefront corrector

  • a science camera

Files

The main example assets live under examples/scao/:

  • run_soft_rtc.py: script-driven soft-RTC walkthrough with logging and status output

  • pywfs_example_OOPAO.ipynb: notebook walkthrough of the same setup

  • pywfs_OOPAO_config.yaml: example configuration

What the Config Shows

The example configuration defines the standard sections used by a basic AO chain:

loop:
        gain: 0.1
        numDroppedModes: 0
        functions:
                - standardIntegrator

wfs:
        name: OOPAOWFS
        width: 28
        height: 28
        darkCount: 1000
        functions:
                - expose

slopes:
        type: PYWFS
        signalType: slopes
        flatNorm: True
        functions:
                - computeSignal

wfc:
        name: OOPAOWFC
        numActuators: 100
        numModes: 80
        functions:
                - sendToHardware

This is the configuration pattern to copy when building a simulator-backed system after the synthetic quick start is already familiar.

Running the Example

The recommended first path is the script version because it keeps the setup reproducible and prints status updates while the loop is running.

python examples/scao/run_soft_rtc.py --duration 10

By default the script:

  • clears the standard pyRTC streams

  • builds the OOPAO wavefront sensor, deformable mirror, and science camera wrappers

  • computes a quick interaction matrix with the atmosphere removed

  • closes the loop for the requested duration

Useful variants:

python examples/scao/run_soft_rtc.py --skip-im --duration 5
python examples/scao/run_soft_rtc.py --no-kl-basis --duration 5

If you prefer interactive exploration, open examples/scao/pywfs_example_OOPAO.ipynb after the script workflow is familiar. The notebook walks through the same stages cell by cell.

Notes and Limitations

  • This example depends on OOPAO and is not the zero-dependency first run.

  • It is best suited to Linux-based development environments.

  • The script path is better for repeatable setup; the notebook path is better for step-by-step debugging and inspection.

  • Treat it as the reference simulation path, not as a drop-in hardware deployment recipe.

Next Steps

After the simulated example works reliably, the next step is usually to replace one abstract component at a time with your hardware-specific implementation under pyRTC.hardware.