Giter Club home page Giter Club logo

oopao's Introduction

OOPAO

Object-Oriented Python Adaptive Optics (OOPAO) is a project under development to propose a python-based tool to perform end-to-end AO simulations. This code is inspired from the OOMAO architecture: https://github.com/cmcorreia/LAM-Public developped by C. Correia and R. Conan (https://doi.org/10.1117/12.2054470). The project was initially intended for personal use in the frame of an ESO project. It is now open to any interested user.

FUNCTIONALITIES

_ Atmosphere: 		Multi-layers with infinitely and non-stationary phase screens, conditions can be updated on the fly if required
_ Telescope: 		Default circular pupil or user defined, with/without spiders
_ Deformable Mirror:	Gaussian Influence Functions (default) or user defined, cartesian coordinates (default) or user defined
_ WFS: 			Pyramid, SH-WFS (diffractive and geometric)
_ Source: 		NGS or LGS
_ Control Basis: 	KL modal basis, Zernike Polynomials

MODULES REQUIRED

The code is written for Python 3 (version 3.8.8) and requires the following modules:

joblib          => paralleling computing
scikit-image    => 2D interpolations
astropy         => handling of fits files
pyFFTW          => optimization of the FFT  
mpmath          => arithmetic with arbitrary precision
jsonpickle      => json files encoding
aotools         => zernike modes and functionalities for atmosphere computation
numba           => required in aotools

If GPU computation is available:

cupy => GPU computation of the PWFS code (Not required)

INSTALLATION

(Recommended) Creating a virtual environment

It is always recommended that you use a virtual environment. First create it:

python -m venv venv

# or

python3 -m venv venv

And finally activate it:

# Unix
source ./venv/bin/activate

# or

# Windows PowerShell
.\venv\Scripts\Activate.ps1

After the environment is set up and activated, this package can then be easily installed. Anytime you wish to use this package, you should activate the respective environment.

Using pip

First clone the repository:

https://github.com/cheritier/OOPAO.git

And then install the package using pip:

python -m pip install -e OOPAO

# or 

python3 -m pip install -e OOPAO

To include CUDA acceleration, just specify the [CUDA] branch:

python -m pip install -e OOPAO[CUDA]

# or 

python3 -m pip install -e OOPAO[CUDA]

If you experience errors during the installation of one of the required scientific packages (e.g. numpy, cupy), please consider using a conda environment and installing these using conda install.

CODE OPTIMIZATION

OOPAO multi-threading is based on the use of the numpy package built with the mkl library, make sure that the proper numpy package is installed to make sure that the operations are multi-threaded. To do this you can use the numpy.show_config() function in your python session:

import numpy
numpy.show_config()

CONTRIBUTORS

Main develloper and maintainer: Cédric Taïssir Héritier

Main contributors:

  • João Aveiro
  • Byron Engler
  • Arseniy Kuznetsov
  • Rafael Machado Salgueiro
  • Arnaud Striffling
  • Christophe Vérinaud

CITING OOPAO

If you use OOPAO for your own research, we kindly ask you to cite the OOPAO AO4ELT7 proceeding (Heritier et al. 2023). See https://hal.science/AO4ELT7/hal-04402878v1.

ACKNOWLEDGEMENTS

This tool has been developped during the Engineering & Research Technology Fellowship of C. Héritier funded by ESO. Some functionalities of the code make use of the aotools package developped by M. J. Townson et al (2019). See https://doi.org/10.1364/OE.27.031316.

LICENSE

This project is licensed under the terms of the GPL license.

oopao's People

Contributors

jfsauvage avatar cheritier avatar joao-aveiro avatar cverinau avatar rafaelsalgueiro58 avatar ppathak8 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.