OptiCommPy

OptiCommPy: Open-source Simulation of Fiber Optic Communications with Python - Published in JOSS (2024)

https://github.com/edsonportosilva/opticommpy

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

adaptive-equalization bit-error-rate cupy digital-modulation digital-signal-processing eye-diagrams fiber-optic-communications jupyter-notebook ldpc modulation-techniques numba ofdm optical-communications photonics python split-step-fourier-method

Scientific Fields

Mathematics Computer Science - 42% confidence
Last synced: 4 months ago · JSON representation

Repository

Simulate optical communications systems with Python.

Basic Info
Statistics
  • Stars: 155
  • Watchers: 9
  • Forks: 48
  • Open Issues: 6
  • Releases: 7
Topics
adaptive-equalization bit-error-rate cupy digital-modulation digital-signal-processing eye-diagrams fiber-optic-communications jupyter-notebook ldpc modulation-techniques numba ofdm optical-communications photonics python split-step-fourier-method
Created about 4 years ago · Last pushed 5 months ago
Metadata Files
Readme License

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.

PyPI PyPI - Downloads Documentation Status DOI DOI

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

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
Published
June 11, 2024
Volume 9, Issue 98, Page 6600
Authors
Edson Porto da Silva ORCID
Electrical Engineering Department, Federal University of Campina Grande (UFCG), Brazil
Adolfo Fernandes Herbster ORCID
Electrical Engineering Department, Federal University of Campina Grande (UFCG), Brazil
Editor
Lucy Whalley ORCID
Tags
Optical Communications Digital Signal Processing Photonics

GitHub 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

All Time
  • Total Commits: 1,868
  • Total Committers: 6
  • Avg Commits per committer: 311.333
  • Development Distribution Score (DDS): 0.027
Past Year
  • Commits: 364
  • Committers: 4
  • Avg Commits per committer: 91.0
  • Development Distribution Score (DDS): 0.047
Top Committers
Name Email 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
  • Versions: 7
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.3%
Average: 5.5%
Dependent repos count: 5.7%
Last synced: 4 months ago
proxy.golang.org: github.com/edsonportosilva/OptiCommPy
  • Versions: 7
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.5%
Dependent repos count: 5.7%
Last synced: 4 months ago
pypi.org: opticommpy

Optical Communications Algorithms with Python

  • Versions: 9
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 210 Last month
Rankings
Dependent packages count: 6.6%
Forks count: 8.9%
Stargazers count: 12.1%
Average: 15.9%
Downloads: 21.2%
Dependent repos count: 30.6%
Maintainers (1)
Last synced: 4 months ago

Dependencies

requirements.txt pypi
  • 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
setup.py pypi
  • matplotlib *
  • numba *
  • numpy *
  • scikit-commpy *
  • scipy *
  • sympy *
  • tqdm *