Qlunc
Qlunc: Quantification of lidar uncertainty - Published in JOSS (2021)
Science Score: 98.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○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 and JOSS metadata -
✓Academic publication links
Links to: zenodo.org -
✓Committers with academic emails
3 of 6 committers (50.0%) from academic institutions -
✓Institutional organization owner
Organization swe-unistuttgart has institutional domain (www.ifb.uni-stuttgart.de) -
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
Keywords from Contributors
Repository
A numerical framework to estimate hardware, data processing and pointing uncertainties of ground-based Doppler wind lidars
Basic Info
Statistics
- Stars: 10
- Watchers: 5
- Forks: 6
- Open Issues: 0
- Releases: 4
Topics
Metadata Files
readme.md
Quantification of lidar uncertainties - Qlunc
What is Qlunc?
Qlunc is a python-based, open-source software, aligned with the Wind lidar Ontology by IEA TCP Wind Task52 , which can be used to estimate errors in wind velocity and wind direction estimations when probing the wind with lidars. The code has an objected-oriented structure; by using python objects and simulating real lidar components the code puts all together in modules to build up a lidar digital twin. The code is modular and offers the possibility of creating different lidar objects on parallel ( refer to Tutorial2.ipynb ). This enables seamless integration of lidar modules with distinct characteristics, allowing the simulation of various lidar devices.
Figure 1. General structure of Qlunc
Creating a lidar device
The user creates the different lidar components by instantiating python classes, including its functional parameters and defining their specific uncertainty functions. Then, each module (also python objects) is "filled" with the corresponding components and their uncertainties are computed following uncertainty propagation method according to the GUM model. Once each component is "ensembled", building up the different modules, the modules are included into the lidar object.
Creating atmospheric conditions
The user creates also atmospheric scenarios to account for the different atmospheric conditions the lidar has to deal with. Power law exponent α, temperature and humidity are accepted, either single values or time-dependent variabilities of these inputs, taken from peripherals.
Qlunc (NEW!) available capabilities
Uncertainties in hardware
The flexibility of the code allows users, not only to assess global lidar uncertainty due to signal noise, but also to query uncertainties contributed by noise in specific modules or even single components.
🆕 Estimated uncertainties in $V_{wind}$ and Φ with information from 3D wind vector 🆕
🆕 Estimated uncertainties in $V{LOS}$ , $V{h}$ and Φ due to errors in pointing accuracy and focus distance 🆕
Considered as a major contributor to uncertainty in lidar estimations, the new Qlunc's add-on uses a combination of analytic and Monte Carlo approaches for estimating the intrinsic lidar uncertainty including: - Hardware noise - Speckle noise - Bias in the sampling frequency - Bias in the laser wavelength - Quantisation and FFT-based signal processing - Uncertainty in the lidar line-of-sight and horizontal wind speeds, as well as the uncertainty in the wind direction, all due to errors in pointing accuracy and focus distance - Lidar unceratinty correlations assessment
Plots
- Photodetector signal-to-noise ratio and separate contributions due to shot noise, thermal noise, dark current noise and, if needed, trans-impedance amplifier noise.
- 🆕 Uncertainties in $V{LOS}$ , $V{h}$ and $V_{wind}$ with the wind direction
- 🆕 Uncertainties in $V_{LOS}$ with focus distance, elevation angle and azimuth angle for a fixed wind direction
- 🆕 Uncertainty in Φ lidar estimation
- 🆕 Uncertainty in vertical and horizontal measuring planes
Figure 2. Horizontal wind speed and wind direction uncertainties - Lissajous Pattern
How to use Qlunc
:warning: Please downolad the latest release (V1.0).
Create an environment and install dependencies
1) Having Anaconda installed is a prerequisite if we want to work in a different environment than base, and it is recommended. Then, based on the requirements added to the environment.yaml file we build the new environment named Qlunc_Env by default.
2) In the Anaconda prompt, go to the directory where you have clone/download Qlunc and type:
file.
conda env create -f environment.yml
conda activate <envname>
3) Your environment is ready to rumble. You have now a new environment with all the packages needed to run Qlunc.
4) In case you don't want to create a new environment, just install the requirements listed in the environment.yml file.
Download or clone the repository to a local directory.
By downloading or cloning the repository user will get several folders within which Qlunc is organized.
First,
1) Create a folder named Qlunc_Output in '\Qlunc' main directory. Here the data will be saved.
2) Copy and paste the file Qlunc_inputs_Dual.yml, for a dual lidar solution, or Qlunc_inputs_Triple.yml, for a triple lidar solution, from TestFiles_Qlunc into Main and rename it to Qlunc_inputs.yml for a quick start/test. Otherwise, fill in the template in the same folder (TestFiles_Qlunc) and rename it to Qlunc_inputs.yml. Copy and paste this file into the Main folder.
The content of each folder in the repository is breafly explained here below. Further information can be found in the readme in the corresponding folder.
Main
Main is the core of Qlunc. It contains the scripts to create the classes describing the components, modules, general inputs of the lidar device and atmospheric scenarios, and instantiates the classes to build up the virtual lidar(s).
- Qlunc_Classes.py contains the code which creates the lidar components and modules. Each lidar module/component is assigned to a python class.
- Qlunc_Instantiate.py instantiate the lidar classes taking the values from Qlunc_inputs.yml.
UQ_Functions
- Contains the functions that compute the uncertainties from different devices, calculting also the uncertainty propagation corresponding to the different modules and the lidar uncertainty as well. Users can define their own functions to calculate specific module uncertainties, and combined/expanded uncertainties as well.
Utils
- Contains scripts meant to do different tasks. Contains funtions which interface directly with Qlunc and are necessary to compute calculations. Also contains
Qlunc_Plotting.py, a script to automate plots andQlunc_ImportModules.pyto import the necessary python packages. - The new functions implemented for this release estimating the uncertainty in $V{LOS}$ and $V{h}$ are allocated here.
TestFile_Qlunc
Qlunc_inputs.yml: Human-friendly data file used as input to Qlunc. Copy and paste it intoMainorTemplate_yaml_inputs_file.ymlto create your own use case
Tutorials
- Contains 3 Jupyter Notebook-based tutorials with their corresponding yaml files and working examples. These tutorials are meant to serve as a guide to get familiar with Qlunc's routines, and show current capabilities of the framework. Users can find more information about these tutorials in the corresponding
readmein the folderTutorials.
Requirements
The environment.yml file summarises the python packages needed to run Qlunc
How to run Qlunc
1) Fill in the Qlunc_inputs.yml with the desired values for uncertainty estimation
2) Run Qlunc_Instantiate.py to instantiate the lidar classes
3) Type "QluncData = Lidar.Uncertainty(Lidar,AtmosphericScenario,cts,Qluncyamlinputs)". A dictionary with relevant parameters about lidar(s) uncertainties and configuration(s) is stored in QluncData
4) Alternatively, user can execute Qlunc through a graphical user interface `QluncGUI.pyinMain` developed to ease the use of Qlunc
Author
Contributions
Contributions are very welcome! If you wish to: - Colaborate: please contact the author - Report issues or enhance the code: post an issue or make a pull request - Seek for support: please contact the author
License
Qlunc is licensed under SD 3-Clause License
Citing and Contact
University of Stuttgart - Stuttgart Wind Energy
email: costa@ifb.uni-stuttgart.de
Owner
- Name: Stuttgart Wind Energy (SWE) - Uni Stuttgart
- Login: SWE-UniStuttgart
- Kind: organization
- Website: https://www.ifb.uni-stuttgart.de/en/research/windenergy/
- Repositories: 5
- Profile: https://github.com/SWE-UniStuttgart
The Chair of Wind Energy at the University of Stuttgart (SWE) carries out research into wind energy systems.
JOSS Publication
Qlunc: Quantification of lidar uncertainty
Authors
Tags
wind lidar lidar hardware uncertainty OpenScience OpenLidar digital twinGitHub Events
Total
- Watch event: 3
- Delete event: 1
- Push event: 14
- Pull request event: 6
- Create event: 1
Last Year
- Watch event: 3
- Delete event: 1
- Push event: 14
- Pull request event: 6
- Create event: 1
Committers
Last synced: 5 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Francisco Costa | c****a@i****e | 1,958 |
| Costa | f****a@I****e | 101 |
| PacoPers | 7****s | 5 |
| Daniel S. Katz | d****z@i****g | 2 |
| Arfon Smith | a****n | 1 |
| Andy | a****n@y****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 13
- Total pull requests: 96
- Average time to close issues: 10 months
- Average time to close pull requests: about 2 hours
- Total issue authors: 1
- Total pull request authors: 1
- Average comments per issue: 0.46
- Average comments per pull request: 0.05
- Merged pull requests: 88
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 6
- Average time to close issues: N/A
- Average time to close pull requests: 1 day
- Issue authors: 0
- Pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 6
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- PacoCosta (13)
Pull Request Authors
- PacoCosta (101)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v2 composite
- actions/upload-artifact v1 composite
- openjournals/openjournals-draft-action master composite
Francisco Costa García