Skip to main content

Scalable Parallel Execution of Computations Upscaling Large Adaptive optics simulations

Project description

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}
}

Project details


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.3.tar.gz (18.4 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.3-py3-none-any.whl (520.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: specula-1.0.3.tar.gz
  • Upload date:
  • Size: 18.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for specula-1.0.3.tar.gz
Algorithm Hash digest
SHA256 a62f4646b56853a995bbd90add96ff68fabf673fc66f96b10eba6a2b904d8b9a
MD5 cfebc7127f4d3d11f03184803fb7bd3c
BLAKE2b-256 20dc441bd281e75cfe7b8dbd29804a1728c3031f3c24bb7d80591f87569e1943

See more details on using hashes here.

Provenance

The following attestation bundles were made for specula-1.0.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: specula-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 520.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for specula-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a285dcaf2cd08e92192dcb3a04b34467d1065b4f6bfdde31b2f3c355943579d4
MD5 bfc9be233021bf7fe4a12e3c275d2757
BLAKE2b-256 d44a51d7761fa31c48d8493b420b0074dae5de25dd2b88d57b01893e384835a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for specula-1.0.3-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.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page