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
unittestframework.
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:
- Fork this repository.
- Create a branch:
git checkout -b <branch_name> - Make your changes and add tests for the new functionality.
- Commit your changes:
git commit -m '<commit_message>' - Push to the branch:
git push - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc00230b8e3487d30031055748c1b09079664be859ff89f9fbde60e4434488dd
|
|
| MD5 |
1452ac87fee668ee9e058147043fc69f
|
|
| BLAKE2b-256 |
d40ad7917e8ffaf86673a46acb30d3bebb500b6f00fb10fa2647e76265f0e3a1
|
Provenance
The following attestation bundles were made for specula-1.0.2.tar.gz:
Publisher:
publish.yml on ArcetriAdaptiveOptics/SPECULA
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
specula-1.0.2.tar.gz -
Subject digest:
fc00230b8e3487d30031055748c1b09079664be859ff89f9fbde60e4434488dd - Sigstore transparency entry: 1082082515
- Sigstore integration time:
-
Permalink:
ArcetriAdaptiveOptics/SPECULA@62eba253c57640888fc6fa28143c8125ea5c2896 -
Branch / Tag:
refs/tags/v1.0.2 - Owner: https://github.com/ArcetriAdaptiveOptics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@62eba253c57640888fc6fa28143c8125ea5c2896 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d00b0d18666950a420eebf14a6c707466d844ce5e0b1f29765367fce15a62c91
|
|
| MD5 |
6e45ad27bc922859f6c35e9ef17a5ba2
|
|
| BLAKE2b-256 |
e233a11d960fdf9743e32455c037b42f51d11b1c69b3d4a9455fd8f0d4281301
|
Provenance
The following attestation bundles were made for specula-1.0.2-py3-none-any.whl:
Publisher:
publish.yml on ArcetriAdaptiveOptics/SPECULA
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
specula-1.0.2-py3-none-any.whl -
Subject digest:
d00b0d18666950a420eebf14a6c707466d844ce5e0b1f29765367fce15a62c91 - Sigstore transparency entry: 1082082580
- Sigstore integration time:
-
Permalink:
ArcetriAdaptiveOptics/SPECULA@62eba253c57640888fc6fa28143c8125ea5c2896 -
Branch / Tag:
refs/tags/v1.0.2 - Owner: https://github.com/ArcetriAdaptiveOptics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@62eba253c57640888fc6fa28143c8125ea5c2896 -
Trigger Event:
push
-
Statement type: