Skip to main content

SPECULA

Python AO end-to-end simulator

SPECULA is a Python-based, object-oriented software derived from PASSATA and developed by the Adaptive Optics group at the Arcetri Observatory for end-to-end Monte-Carlo simulations of adaptive optics systems. It can be accelerated using GPU-CUDA via CuPy.

See the documentation here: specula.readthedocs.io

Directories

  • docs: contains the documentation.
  • config: contains functions and parameter files to calibrate and run a closed loop of an adaptive optics system (single-conjugated, multi-conjugated, natural, laser, ...).
  • specula: the main library, structured as follows:
    • data: data required by utility functions.
    • data_objects: classes that wrap the data and provide methods to access them.
    • display: classes for data visualization.
    • lib: utility functions used by multiple objects.
    • processing_objects: classes that model the simulation elements as a function of inputs and time.
    • scripts: various scripts.
  • test: contains functions to test SPECULA using the unittest framework.

Requirements

  • Python 3.8+
  • numpy
  • scipy
  • matplotlib
  • flask
  • flask-socketio
  • socketio
  • scikit-image
  • cupy (for GPU acceleration, optional)
  • astro-seeing
  • symao
  • synim

Optional libraries

Some features require additional libraries:

  • orthogram: for automatic block diagram creation (see orthogram, requires pycairo)
  • control: for conversion of transfer function system in SPECULA format and vice-versa and analysis of transfer function

Contributing to SPECULA

To contribute to SPECULA, follow these steps:

  1. Fork this repository.
  2. Create a branch: git checkout -b <branch_name>
  3. Make your changes and add tests for the new functionality.
  4. Commit your changes: git commit -m '<commit_message>'
  5. Push to the branch: git push
  6. Create the pull request.

We require tests for all new features to ensure the stability of the project.

Citation

If you use SPECULA in your research, please cite:

@article{specula2026,
  author = {Fabio Rossi and Alfio Puglisi and Guido Agapito},
  title = {{Introducing a new generation adaptive optics simulation framework: from PASSATA to SPECULA}},
  volume = {12},
  journal = {Journal of Astronomical Telescopes, Instruments, and Systems},
  number = {1},
  publisher = {SPIE},
  pages = {019001},
  year = {2026},
  doi = {10.1117/1.JATIS.12.1.019001},
  URL = {https://doi.org/10.1117/1.JATIS.12.1.019001}
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

specula-1.0.4.tar.gz (18.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

specula-1.0.4-py3-none-any.whl (537.4 kB view details)

Uploaded Python 3

File details

Details for the file specula-1.0.4.tar.gz.

File metadata

  • Download URL: specula-1.0.4.tar.gz
  • Upload date:
  • Size: 18.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for specula-1.0.4.tar.gz
Algorithm Hash digest
SHA256 d2c522a49acbd7ddb203e95f38446ba750e10a64af0e82b1b944717b5fe8205e
MD5 f951c8492e675c23dcd1f8a4ffcafc52
BLAKE2b-256 c88c4f5f26674a1868faa6c57f41a44b62b77abf538420cc4a85421ec847b597

See more details on using hashes here.

Provenance

The following attestation bundles were made for specula-1.0.4.tar.gz:

Publisher: publish.yml on ArcetriAdaptiveOptics/SPECULA

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file specula-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: specula-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 537.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for specula-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 9a685e58ef10358670d6fb0e0c3e61e73da2ea2fef864fb8f3ad2405ecfa2728
MD5 08927f03aeb99e0d586de97f65260070
BLAKE2b-256 bf2485de65e17796cb4bb89c09972f813364bf0279acfe2a6b1406b5b18abb85

See more details on using hashes here.

Provenance

The following attestation bundles were made for specula-1.0.4-py3-none-any.whl:

Publisher: publish.yml on ArcetriAdaptiveOptics/SPECULA

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.0.4 This release

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page