{"id":15551409,"url":"https://github.com/edsonportosilva/opticommpy","last_synced_at":"2025-05-16T13:07:19.381Z","repository":{"id":63104604,"uuid":"425024631","full_name":"edsonportosilva/OptiCommPy","owner":"edsonportosilva","description":"Simulate optical communications systems with Python.","archived":false,"fork":false,"pushed_at":"2025-03-26T11:37:33.000Z","size":201866,"stargazers_count":133,"open_issues_count":5,"forks_count":47,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-11T11:42:10.921Z","etag":null,"topics":["digital-signal-processing","jupyter-notebook","numba","optical-communications","photonics","python"],"latest_commit_sha":null,"homepage":"https://opticommpy.readthedocs.io/en/latest/index.html","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edsonportosilva.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-11-05T17:02:38.000Z","updated_at":"2025-03-27T02:37:42.000Z","dependencies_parsed_at":"2023-02-09T20:01:27.911Z","dependency_job_id":"47f25fe5-8745-4984-be04-1e811f851d50","html_url":"https://github.com/edsonportosilva/OptiCommPy","commit_stats":{"total_commits":1507,"total_committers":7,"mean_commits":"215.28571428571428","dds":0.09688122096881224,"last_synced_commit":"be02bd00f5f625c7a69f920a282c1af091ce9a27"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsonportosilva%2FOptiCommPy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsonportosilva%2FOptiCommPy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsonportosilva%2FOptiCommPy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsonportosilva%2FOptiCommPy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edsonportosilva","download_url":"https://codeload.github.com/edsonportosilva/OptiCommPy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248545472,"owners_count":21122148,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["digital-signal-processing","jupyter-notebook","numba","optical-communications","photonics","python"],"created_at":"2024-10-02T14:04:52.190Z","updated_at":"2025-04-12T09:27:04.972Z","avatar_url":"https://github.com/edsonportosilva.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/edsonportosilva/OptiCommPy/blob/main/figures/logo_OptiCommPy.jpg\" width=\"500\"\u003e\n\u003c/p\u003e\n\nThis repository is a Python-based framework to simulate systems, subsystems, and components of fiber optic communication systems, for educational and research purposes.\n\n\u003cp align=\"center\"\u003e\n\u003cimg class=\"center\" src=\"https://github.com/edsonportosilva/OptiCommPy/blob/main/figures/eyeDisp.gif\" width=\"400\"\u003e  \u003cimg class=\"center\" src=\"https://github.com/edsonportosilva/OptiCommPy/blob/main/figures/40GOOK_spectrum.jpg\" width=\"400\"\u003e\n\n\u003cimg src=\"https://github.com/edsonportosilva/OptiCommPy/blob/main/figures/DSP.jpg\" width=\"800\"\u003e\n\n\u003c/p\u003e\n\n![PyPI](https://img.shields.io/pypi/v/OptiCommPy?label=pypi%20package) ![PyPI - Downloads](https://img.shields.io/pypi/dm/OptiCommPy) [![Documentation Status](https://readthedocs.org/projects/opticommpy/badge/?version=latest)](https://opticommpy.readthedocs.io/en/latest/?badge=latest) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.11450597.svg)](https://doi.org/10.5281/zenodo.11450597) [![DOI](https://joss.theoj.org/papers/10.21105/joss.06600/status.svg)](https://doi.org/10.21105/joss.06600)\n\n\n## Available features\n\n* Several digital modulations available (M-PAM, square M-QAM, M-PSK, OOK) to simulate IM-DD and coherent optical systems.\n* Numerical models to simulate optical transmitters, optical amplification, nonlinear propagation over optical fibers, and optical receivers.\n* CPU and GPU-based implementations of the [*split-step Fourier Method*](https://en.wikipedia.org/wiki/Split-step_method) to simulate polarization multiplexed WDM transmission.\n* Standard digital signal processing (DSP) blocks employed in coherent optical receivers, such as:\n  - *Signal resampling.* \n  - *Matched filtering.*\n  - *Clock recovery.*\n  - *Electronic chromatic dispersion compensation (EDC)*.\n  - *Several NxN MIMO adaptive equalization algorithms*.\n  - *Carrier phase recovery algorithms.* \n* For most of the cases, [Numba](https://numba.pydata.org/) is used to speed up the core DSP functions.  \n* Evaluate transmission performance with metrics such as:\n  - *Bit-error-rate* (BER).\n  - *Symbol-error-rate* (SER).\n  - *Error vector magnitude* (EVM).\n  - *Mutual information* (MI).\n  - *Generalized mutual information* (GMI).  \n  - *Normalized generalized mutual information* (NGMI). \n* Visualization of the spectrum of electrical/optical signals, signal constellations, and eyediagrams.\n\n## How can I contribute?\n\nIf you want to contribute to this project, implement the feature you want and send me a pull request. If you want to suggest new features or discuss anything related to OptiCommPy, please get in touch with me (edsonporto88@gmail.com).\n\n## Requirements/Dependencies\n\n-  python\u003e=3.2\n-  numpy\u003e=1.24.4\n-  scipy\u003e=1.13.0\n-  matplotlib\u003e=3.7.0\n-  numba\u003e=0.54.1\n-  tqdm\u003e=4.64.1\n-  simple-pid\u003e=1.0.1\n-  mpl-scatter-density\u003e=0.7.0\n-  sphinx-rtd-theme\u003e=1.2.2\n-  nbsphinx\u003e=0.9.3\n-  nbsphinx-link\u003e=1.3.0\n-  cupy-cuda12x \u003e= 13.1.0 (optional, in case GPU processing is desired)\n\n## Installation\n\nUsing pip:\n\n```\npip install OptiCommPy\n```\n\nCloning the repository from GitHub:\n\n```\n$ git clone https://github.com/edsonportosilva/OptiCommPy.git\n$ cd OptiCommPy\n$ pip install .\n```\n## Documentation\nWe are continuously making efforts to improve the code documentation. You can find the latest documentation in [opticommpy.readthedocs.io](https://opticommpy.readthedocs.io/en/latest/index.html).\n\n## Citing this repository\n\nEdson 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\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsonportosilva%2Fopticommpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedsonportosilva%2Fopticommpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsonportosilva%2Fopticommpy/lists"}