OptiCommPy
OptiCommPy: Open-source Simulation of Fiber Optic Communications with Python - Published in JOSS (2024)
Science Score: 93.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 9 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: joss.theoj.org, zenodo.org -
○Committers with academic emails
-
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
Scientific Fields
Repository
Simulate optical communications systems with Python.
Basic Info
- Host: GitHub
- Owner: edsonportosilva
- License: gpl-3.0
- Language: Python
- Default Branch: main
- Homepage: https://opticommpy.readthedocs.io/en/latest/index.html
- Size: 237 MB
Statistics
- Stars: 155
- Watchers: 9
- Forks: 48
- Open Issues: 6
- Releases: 7
Topics
Metadata Files
README.md
This repository is a Python-based framework to simulate systems, subsystems, and components of fiber optic communication systems, for educational and research purposes.
Available features
- Several digital modulations available (M-PAM, square M-QAM, M-PSK, OOK) to simulate IM-DD and coherent optical systems.
- Numerical models to simulate optical transmitters, optical amplification, nonlinear propagation over optical fibers, and optical receivers.
- CPU and GPU-based implementations of the split-step Fourier Method to simulate polarization multiplexed WDM transmission.
- Standard digital signal processing (DSP) blocks employed in coherent optical receivers, such as:
- Signal resampling.
- Matched filtering.
- Clock recovery.
- Electronic chromatic dispersion compensation (EDC).
- Several NxN MIMO adaptive equalization algorithms.
- Carrier phase recovery algorithms.
- Functions to implement forward error correction (FEC) encoders and decoders.
- For most of the cases, Numba is used to speed up the code.
- Evaluate transmission performance with metrics such as:
- Bit-error-rate (BER).
- Symbol-error-rate (SER).
- Error vector magnitude (EVM).
- Mutual information (MI).
- Generalized mutual information (GMI).
- Normalized generalized mutual information (NGMI).
- Visualization of the spectrum of electrical/optical signals, signal constellations, and eyediagrams.
How can I contribute?
If you want to contribute to this project:
- Create a new issue in the GitHub repository to discuss the feature you want to implement.
- Fork the repository and create a new branch.
- Make sure you have the latest version of the code.
- Check the conventions adopted in the code writing (e.g. naming conventions, docstrings, etc.).
- Remember to write an example of usage for the new feature you are implementing.
- After the process is finished, send a pull request.
If you want to suggest or discuss anything related to OptiCommPy, please get in touch via e-mail (edsonporto88@gmail.com).
Requirements/Dependencies
- python>=3.2
- numpy>=1.24.4
- scipy>=1.13.0
- matplotlib>=3.7.0
- numba>=0.54.1
- tqdm>=4.64.1
- simple-pid>=1.0.1
- mpl-scatter-density>=0.7.0
- sphinx-rtd-theme>=1.2.2
- nbsphinx>=0.9.3
- nbsphinx-link>=1.3.0
- prettytable>=3.16.0
- cupy-cuda12x >= 13.1.0 (optional, in case GPU processing is desired)
Installation
Using pip:
pip install OptiCommPy
Cloning the repository from GitHub:
$ git clone https://github.com/edsonportosilva/OptiCommPy.git
$ cd OptiCommPy
$ pip install .
Documentation
We are continuously making efforts to improve the code documentation. You can find the latest documentation in opticommpy.readthedocs.io.
Citing this repository
Edson Porto da Silva, Adolfo Fernandes Herbster. "OptiCommPy: Open-source Simulation of Fiber Optic Communications with Python", Journal of Open Source Software, 9(98), 6600, (2024) https://doi.org/10.21105/joss.06600
Owner
- Name: Edson Porto da Silva
- Login: edsonportosilva
- Kind: user
- Location: Campina Grande (PB)
- Company: UFCG
- Website: https://scholar.google.com.br/citations?user=GhsC1FUAAAAJ
- Twitter: EdsonPSilva
- Repositories: 6
- Profile: https://github.com/edsonportosilva
Professor at the Electrical Engineering Department of the Federal University of Campina Grande (UFCG)
JOSS Publication
OptiCommPy: Open-source Simulation of Fiber Optic Communications with Python
Authors
Tags
Optical Communications Digital Signal Processing PhotonicsGitHub Events
Total
- Issues event: 3
- Watch event: 46
- Issue comment event: 11
- Push event: 61
- Pull request review comment event: 4
- Pull request event: 4
- Pull request review event: 2
- Fork event: 12
Last Year
- Issues event: 3
- Watch event: 46
- Issue comment event: 11
- Push event: 61
- Pull request review comment event: 4
- Pull request event: 4
- Pull request review event: 2
- Fork event: 12
Committers
Last synced: 5 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Edson Porto da Silva | e****8@g****m | 1,817 |
| Adolfo Herbster | a****r@g****m | 28 |
| Silas João | s****1@g****m | 12 |
| Carlos Daniel Fontes da Silva | 1****s | 7 |
| Sourcery AI | 3 | |
| Frank Schaefer | k****e@w****e | 1 |
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 14
- Total pull requests: 17
- Average time to close issues: 5 days
- Average time to close pull requests: 16 days
- Total issue authors: 12
- Total pull request authors: 8
- Average comments per issue: 2.71
- Average comments per pull request: 1.18
- Merged pull requests: 12
- Bot issues: 0
- Bot pull requests: 4
Past Year
- Issues: 2
- Pull requests: 4
- Average time to close issues: 22 days
- Average time to close pull requests: about 21 hours
- Issue authors: 2
- Pull request authors: 4
- Average comments per issue: 3.5
- Average comments per pull request: 2.5
- Merged pull requests: 3
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- Echo-cwb (2)
- Tonghui-Ji (1)
- JefFan4YC (1)
- lahdjirayhan (1)
- frankschae (1)
- Vancuum (1)
- ZuXianA (1)
- joamatab (1)
- Lllllyq (1)
Pull Request Authors
- adophobr (4)
- sourcery-ai[bot] (4)
- daniel7fontes (3)
- edsonportosilva (3)
- alexsludds (3)
- silasabs (2)
- frankschae (2)
- joamatab (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 3
-
Total downloads:
- pypi 210 last-month
-
Total dependent packages: 0
(may contain duplicates) -
Total dependent repositories: 0
(may contain duplicates) - Total versions: 23
- Total maintainers: 1
proxy.golang.org: github.com/edsonportosilva/opticommpy
- Documentation: https://pkg.go.dev/github.com/edsonportosilva/opticommpy#section-documentation
- License: gpl-3.0
-
Latest release: v0.10.0-alpha
published 5 months ago
Rankings
proxy.golang.org: github.com/edsonportosilva/OptiCommPy
- Documentation: https://pkg.go.dev/github.com/edsonportosilva/OptiCommPy#section-documentation
- License: gpl-3.0
-
Latest release: v0.10.0-alpha
published 5 months ago
Rankings
pypi.org: opticommpy
Optical Communications Algorithms with Python
- Homepage: https://github.com/edsonportosilva/OptiCommPy
- Documentation: https://opticommpy.readthedocs.io/
- License: GPL-3.0 license
-
Latest release: 0.10.0
published 5 months ago
Rankings
Maintainers (1)
Dependencies
- matplotlib >=1.4.3
- numba >=0.54.1
- numpy >=1.9.2
- scikit-commpy >=0.7.0
- scipy >=0.15.0
- tqdm *
- xeus-python >=0.12.5
- matplotlib *
- numba *
- numpy *
- scikit-commpy *
- scipy *
- sympy *
- tqdm *
