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.2.tar.gz (18.3 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.2-py3-none-any.whl (446.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for specula-1.0.2.tar.gz
Algorithm Hash digest
SHA256 fc00230b8e3487d30031055748c1b09079664be859ff89f9fbde60e4434488dd
MD5 1452ac87fee668ee9e058147043fc69f
BLAKE2b-256 d40ad7917e8ffaf86673a46acb30d3bebb500b6f00fb10fa2647e76265f0e3a1

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for specula-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d00b0d18666950a420eebf14a6c707466d844ce5e0b1f29765367fce15a62c91
MD5 6e45ad27bc922859f6c35e9ef17a5ba2
BLAKE2b-256 e233a11d960fdf9743e32455c037b42f51d11b1c69b3d4a9455fd8f0d4281301

See more details on using hashes here.

Provenance

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