Skip to main content

PYramid Simulator Software for Adaptive OpTics Arcetri

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.
  • main: 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_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 (for physical propagation)
  • cupy (for GPU acceleration, optional)

Optional libraries

Some features require additional libraries:

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

Install optional dependencies (pycairo will be installed as dependency of orthogram) with:

pip install orthogram
pip install control

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.

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.0a9.tar.gz (18.2 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.0a9-py3-none-any.whl (373.6 kB view details)

Uploaded Python 3

File details

Details for the file specula-1.0.0a9.tar.gz.

File metadata

  • Download URL: specula-1.0.0a9.tar.gz
  • Upload date:
  • Size: 18.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for specula-1.0.0a9.tar.gz
Algorithm Hash digest
SHA256 12c53eb2a67b262d2c59bd3695194eaaed2319eaa0519061d61ad4079b51b578
MD5 cef26808c0d506248d7db572e2bff3ee
BLAKE2b-256 08fddfeb659fc71ee94e892c3415f77950215adfdcbb9c66fcc98659a7e75416

See more details on using hashes here.

File details

Details for the file specula-1.0.0a9-py3-none-any.whl.

File metadata

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

File hashes

Hashes for specula-1.0.0a9-py3-none-any.whl
Algorithm Hash digest
SHA256 6134e766df4f62d135597cc30346534f2054274a3d8a64449dc9cc65ca85b839
MD5 4a946701ab865dfa67518d611df975f0
BLAKE2b-256 27399eb488bfcdaa1bb7248187c0d04d8a5f9deeca388a655486543158c0c917

See more details on using hashes here.

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