speckcn2

:satellite: :cyclone: A platform to use speckle patterns to describe atmospheric turbulence

https://github.com/males-project/specklecn2profiler

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.7%) to scientific vocabulary

Keywords

equivariant-networks image-processing machine-learning python signal-processing turbulence
Last synced: 6 months ago · JSON representation ·

Repository

:satellite: :cyclone: A platform to use speckle patterns to describe atmospheric turbulence

Basic Info
Statistics
  • Stars: 9
  • Watchers: 1
  • Forks: 0
  • Open Issues: 1
  • Releases: 4
Topics
equivariant-networks image-processing machine-learning python signal-processing turbulence
Created about 2 years ago · Last pushed about 1 year ago
Metadata Files
Readme Contributing License Code of conduct Citation

README.md

Python application test Coverage Documentation Status PyPI - Python Version PyPI FAIR checklist badge DOI RSD status

MALES banner MALES banner

SpeckleCn2Profiler:

Improving Satellite Communications with SCIDAR and Machine Learning

Graphical abstract

Overview

Optical satellite communications is a growing research field with bright commercial perspectives. One of the challenges for optical links through the atmosphere is turbulence, which is also apparent by the twinkling of stars. The reduction of the quality can be calculated, but it needs the turbulence strength over the path the optical beam is running. Estimation of the turbulence strength is done at astronomic sites, but not at rural or urban sites. To be able to do this, a simple instrument is required. We want to propose to use a single star Scintillation Detection and Ranging (SCIDAR), which is an instrument that can estimate the turbulence strength, based on the observation of a single star. In this setting, reliable signal processing of the received images of the star is most challenging. We propose to solve this by Machine Learning.

Repository Contents

This repository contains the workflow to implement and train machine learning models for turbulence strength estimation from SCIDAR data. Extensive Documentation is available to explain the methodology, algorithms used, and guidelines for using the code.

Getting Started

To get started with the project, follow these steps:

  • Prerequisites: In order to correctly install speckcn2 you need python3.9 or higher. If you don't have it installed, you can download it from the official website. You will also need the header files that are required to compile Python extensions and are contained in python3-dev. On Ubuntu, you can install them with: bash apt-get install python3-dev

  • Install the package: bash python -m pip install speckcn2

  • Or: Clone the repository: bash git clone https://github.com/MALES-project/SpeckleCn2Profiler.git cd SpeckleCn2Profiler git submodule init git submodule update pip install .

Usage

To use the package, you run the commands such as:

console python <mycode.py> <path_to_config.yml>

where <mycode.py> is the name of the script that trains/uses the speckcn2 model and <path_to_config.yml> is the path to the configuration file.

Here you can find a typical example run and an explanation of all the main configuration parameter. In the example submodule you can find multiple examples and multiple configuration to take inspiration from.

What can we predict?

A machine learning model trained using speckcn2 can predict:

1. Instantaneous turbulence strength

prediction Given a speckle pattern, the model can predict the instantaneous turbulence strength and also provide an uncertainty estimate if more patterns are available.

2. Parameters estimation

The model can also estimate important parameters that are useful for the analysis of the speckle pattern. At the moment we support: * Fried parameter r0 * Isoplanatic angle 0 * Rytov Index ``

We also provide histograms of the estimated parameters and the error of the estimation.

Contribution Guidelines

We welcome contributions to improve and expand the capabilities of this project. If you have ideas, bug fixes, or enhancements, please submit a pull request. Check out our Contributing Guidelines to get started with development.

Generative-AI Disclaimer

Parts of the code have been generated and/or refined using GitHub Copilot. All AI-output has been verified for correctness, accuracy and completeness, revised where needed, and approved by the author(s).

How to cite

Please consider citing this software that is published in Zenodo under the DOI 10.5281/zenodo.11447920.

License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.

Owner

  • Name: MALES-project
  • Login: MALES-project
  • Kind: organization

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: Speckle to Cn2
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Simone
    family-names: Ciarella
    email: s.ciarella@esciencecenter.nl
    affiliation: Netherlands eScience Center
    orcid: 'https://orcid.org/0000-0002-9247-139X'
  - given-names: Victor
    family-names: Azizi
    affiliation: Netherlands eScience Center
    orcid: 'https://orcid.org/0000-0003-3535-8320'
  - given-names: Luisa
    family-names: Orozco
    email: l.orozco@esciencecenter.nl
    orcid: 'https://orcid.org/0000-0002-9153-650X'
    affiliation: Netherlands eScience Center
  - given-names: Marguerite
    family-names: Arvis
    email: m.arvis@tudelft.nl
    orcid: 'https://orcid.org/0009-0006-7409-3985'
    affiliation: Delft University of Technology
  - given-names: Rudolf
    family-names: Saathof
    email: r.saathof@tudelft.nl
    orcid: 'https://orcid.org/0000-0003-0368-0139'
    affiliation: Delft University of Technology
repository-code: 'https://github.com/MALES-project/SpeckleCn2Profiler'
url: 'https://speckcn2.readthedocs.io'
abstract: >-
  Estimate Cn2 from Speckle patterns using machine learning
keywords:
  - machine learning
  - equivariant cnn
  - optical satelites
  - turbulence
  - laser communication
license: Apache-2.0
version: 1.0.1

GitHub Events

Total
  • Create event: 17
  • Release event: 2
  • Issues event: 10
  • Watch event: 4
  • Delete event: 13
  • Issue comment event: 3
  • Push event: 115
  • Pull request review comment event: 1
  • Pull request review event: 3
  • Pull request event: 24
Last Year
  • Create event: 17
  • Release event: 2
  • Issues event: 10
  • Watch event: 4
  • Delete event: 13
  • Issue comment event: 3
  • Push event: 115
  • Pull request review comment event: 1
  • Pull request review event: 3
  • Pull request event: 24

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 0
  • Total pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 2 minutes
  • Total issue authors: 0
  • Total pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 2 minutes
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • SCiarella (26)
  • luisaforozco (5)
  • MagArvis (1)
  • v1kko (1)
Pull Request Authors
  • SCiarella (11)
  • v1kko (5)
  • luisaforozco (3)
Top Labels
Issue Labels
Optional (3) enhancement (1) documentation (1) bug (1) good first issue (1)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 119 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 42
  • Total maintainers: 1
pypi.org: speckcn2

Estimate Cn2 from Speckle patterns using machine learning

  • Versions: 42
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 119 Last month
Rankings
Dependent packages count: 10.0%
Forks count: 29.8%
Stargazers count: 31.9%
Average: 34.5%
Dependent repos count: 66.3%
Maintainers (1)
Last synced: 6 months ago

Dependencies

.github/workflows/code-style.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • pre-commit/action v3.0.0 composite
.github/workflows/test.yaml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • fortran-lang/setup-fortran v1 composite
  • ryan-rozario/pipreqs-action master composite
  • schneegans/dynamic-badges-action v1.6.0 composite
.github/workflows/publish.yaml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • fortran-lang/setup-fortran v1 composite
  • pypa/gh-action-pypi-publish release/v1 composite
pyproject.toml pypi
  • PyYAML *
  • cython *
  • escnn *
  • h5py *
  • lie_learn @ git+https://github.com/AMLab-Amsterdam/lie_learn
  • matplotlib >= 3.6.0
  • numpy *
  • scipy >=1.9.3
  • torch *
  • torchvision *
requirements.txt pypi
  • PyYAML *
  • cython *
  • escnn *
  • h5py *
  • matplotlib >=3.6.0
  • numpy *
  • scipy >=1.9.3
  • torch *
  • torchvision *
requirements_full.txt pypi
  • autograd ==1.6.2
  • certifi ==2024.2.2
  • charset-normalizer ==3.3.2
  • contourpy ==1.2.1
  • cycler ==0.12.1
  • cython ==3.0.10
  • escnn ==1.0.11
  • filelock ==3.13.3
  • fonttools ==4.50.0
  • fsspec ==2024.3.1
  • future ==1.0.0
  • h5py ==3.10.0
  • idna ==3.6
  • jinja2 ==3.1.3
  • joblib ==1.3.2
  • kiwisolver ==1.4.5
  • markupsafe ==2.1.5
  • matplotlib ==3.8.4
  • mpmath ==1.3.0
  • networkx ==3.2.1
  • numpy ==1.25.2
  • nvidia-cublas-cu12 ==12.1.3.1
  • nvidia-cuda-cupti-cu12 ==12.1.105
  • nvidia-cuda-nvrtc-cu12 ==12.1.105
  • nvidia-cuda-runtime-cu12 ==12.1.105
  • nvidia-cudnn-cu12 ==8.9.2.26
  • nvidia-cufft-cu12 ==11.0.2.54
  • nvidia-curand-cu12 ==10.3.2.106
  • nvidia-cusolver-cu12 ==11.4.5.107
  • nvidia-cusparse-cu12 ==12.1.0.106
  • nvidia-nccl-cu12 ==2.19.3
  • nvidia-nvjitlink-cu12 ==12.4.127
  • nvidia-nvtx-cu12 ==12.1.105
  • packaging ==24.0
  • pillow ==10.3.0
  • py3nj ==0.2.1
  • pymanopt ==2.2.0
  • pyparsing ==3.1.2
  • python-dateutil ==2.9.0.post0
  • pyyaml ==6.0.1
  • requests ==2.31.0
  • scipy ==1.9.3
  • six ==1.16.0
  • sympy ==1.12
  • torch ==2.2.2
  • torchvision ==0.17.2
  • triton ==2.2.0
  • typing-extensions ==4.10.0
  • urllib3 ==2.2.1