OptiCommPy 0.7.0__tar.gz → 0.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- OptiCommPy-0.10.0/OptiCommPy.egg-info/PKG-INFO +146 -0
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/OptiCommPy.egg-info/SOURCES.txt +8 -2
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/OptiCommPy.egg-info/requires.txt +6 -5
- OptiCommPy-0.10.0/PKG-INFO +146 -0
- OptiCommPy-0.10.0/README.rst +127 -0
- OptiCommPy-0.10.0/optic/comm/fec.py +1055 -0
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/optic/comm/metrics.py +251 -46
- OptiCommPy-0.10.0/optic/comm/modulation.py +597 -0
- OptiCommPy-0.10.0/optic/comm/ofdm.py +288 -0
- OptiCommPy-0.10.0/optic/comm/sources.py +241 -0
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/optic/dsp/carrierRecovery.py +91 -56
- OptiCommPy-0.10.0/optic/dsp/carrierRecoveryGPU.py +68 -0
- OptiCommPy-0.10.0/optic/dsp/clockRecovery.py +232 -0
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/optic/dsp/core.py +336 -118
- OptiCommPy-0.10.0/optic/dsp/coreGPU.py +169 -0
- OptiCommPy-0.10.0/optic/dsp/equalization.py +1095 -0
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/optic/models/amplification.py +127 -88
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/optic/models/channels.py +66 -65
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/optic/models/devices.py +232 -105
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/optic/models/modelsGPU.py +73 -82
- OptiCommPy-0.10.0/optic/models/perturbation.py +607 -0
- OptiCommPy-0.10.0/optic/models/tx.py +337 -0
- OptiCommPy-0.10.0/optic/plot.py +658 -0
- OptiCommPy-0.10.0/optic/utils.py +326 -0
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/setup.py +12 -11
- OptiCommPy-0.10.0/tests/test_dsp.py +28 -0
- OptiCommPy-0.10.0/tests/test_metrics.py +97 -0
- OptiCommPy-0.10.0/tests/test_modulation.py +56 -0
- OptiCommPy-0.7.0/OptiCommPy.egg-info/PKG-INFO +0 -112
- OptiCommPy-0.7.0/PKG-INFO +0 -112
- OptiCommPy-0.7.0/README.md +0 -82
- OptiCommPy-0.7.0/optic/comm/fec.py +0 -66
- OptiCommPy-0.7.0/optic/comm/modulation.py +0 -236
- OptiCommPy-0.7.0/optic/comm/ofdm.py +0 -201
- OptiCommPy-0.7.0/optic/dsp/clockRecovery.py +0 -172
- OptiCommPy-0.7.0/optic/dsp/coreGPU.py +0 -48
- OptiCommPy-0.7.0/optic/dsp/equalization.py +0 -812
- OptiCommPy-0.7.0/optic/models/tx.py +0 -195
- OptiCommPy-0.7.0/optic/plot.py +0 -328
- OptiCommPy-0.7.0/optic/utils.py +0 -170
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/LICENSE +0 -0
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/OptiCommPy.egg-info/dependency_links.txt +0 -0
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/OptiCommPy.egg-info/top_level.txt +0 -0
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/optic/__init__.py +0 -0
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/runner +0 -0
- {OptiCommPy-0.7.0 → OptiCommPy-0.10.0}/setup.cfg +0 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: OptiCommPy
|
|
3
|
+
Version: 0.10.0
|
|
4
|
+
Summary: Optical Communications Algorithms with Python
|
|
5
|
+
Home-page: https://github.com/edsonportosilva/OptiCommPy
|
|
6
|
+
Maintainer: Edson Porto da Silva
|
|
7
|
+
Maintainer-email: edsonporto88@gmail.com
|
|
8
|
+
License: GPL-3.0 license
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Intended Audience :: Science/Research
|
|
11
|
+
Classifier: Intended Audience :: Telecommunications Industry
|
|
12
|
+
Classifier: Operating System :: Unix
|
|
13
|
+
Classifier: Programming Language :: Python
|
|
14
|
+
Classifier: Topic :: Scientific/Engineering
|
|
15
|
+
Classifier: Topic :: Software Development
|
|
16
|
+
Requires-Python: >=3.2
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
License-File: LICENSE
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
.. image:: ../../figures/logo_OptiCommPy.jpg
|
|
22
|
+
:width: 75%
|
|
23
|
+
:align: center
|
|
24
|
+
|
|
25
|
+
**OptiCommPy** is a Python-based framework to simulate systems, subsystems, and
|
|
26
|
+
components of fiber optic communication systems, for educational and research purposes.
|
|
27
|
+
|
|
28
|
+
.. image:: ../../figures/eyeDisp.gif
|
|
29
|
+
:width: 45%
|
|
30
|
+
.. image:: ../../figures/40GOOK_spectrum.jpg
|
|
31
|
+
:width: 45%
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
.. image:: ../../figures/DSP.jpg
|
|
35
|
+
:width: 600px
|
|
36
|
+
:align: center
|
|
37
|
+
|
|
38
|
+
|PyPI| |PyPI - Downloads| |Documentation Status| |DOI| |JOSS|
|
|
39
|
+
|
|
40
|
+
Available features
|
|
41
|
+
------------------
|
|
42
|
+
|
|
43
|
+
- Several digital modulations available (M-PAM, square M-QAM, M-PSK,
|
|
44
|
+
OOK) to simulate IM-DD and coherent optical systems.
|
|
45
|
+
- Numerical models to simulate optical transmitters, optical
|
|
46
|
+
amplification, nonlinear propagation over optical fibers, and optical
|
|
47
|
+
receivers.
|
|
48
|
+
- CPU and GPU-based implementations of the `split-step Fourier
|
|
49
|
+
Method <https://en.wikipedia.org/wiki/Split-step_method>`__ to
|
|
50
|
+
simulate polarization multiplexed WDM transmission.
|
|
51
|
+
- Standard digital signal processing (DSP) blocks employed in coherent
|
|
52
|
+
optical receivers, such as:
|
|
53
|
+
|
|
54
|
+
- *Signal resampling.*
|
|
55
|
+
- *Matched filtering.*
|
|
56
|
+
- *Clock recovery.*
|
|
57
|
+
- *Electronic chromatic dispersion compensation (EDC)*.
|
|
58
|
+
- *Several NxN MIMO adaptive equalization algorithms*.
|
|
59
|
+
- *Carrier phase recovery algorithms.*
|
|
60
|
+
|
|
61
|
+
- Functions to implement forward error correction (FEC) encoders and decoders.
|
|
62
|
+
- For most of the cases, `Numba <https://numba.pydata.org/>`__ is used
|
|
63
|
+
to speed up the code.
|
|
64
|
+
- Evaluate transmission performance with metrics such as:
|
|
65
|
+
|
|
66
|
+
- *Bit-error-rate* (BER).
|
|
67
|
+
- *Symbol-error-rate* (SER).
|
|
68
|
+
- *Error vector magnitude* (EVM).
|
|
69
|
+
- *Mutual information* (MI).
|
|
70
|
+
- *Generalized mutual information* (GMI).
|
|
71
|
+
- *Normalized generalized mutual information* (NGMI).
|
|
72
|
+
|
|
73
|
+
- Visualization of the spectrum of electrical/optical signals, signal
|
|
74
|
+
constellations, and eyediagrams.
|
|
75
|
+
|
|
76
|
+
How can I contribute?
|
|
77
|
+
---------------------
|
|
78
|
+
|
|
79
|
+
- If you want to contribute to this project:
|
|
80
|
+
- Create a new issue in the GitHub repository to discuss the feature you want to implement.
|
|
81
|
+
- Fork the repository and create a new branch.
|
|
82
|
+
- Make sure you have the latest version of the code.
|
|
83
|
+
- Check the conventions adopted in the code writing (e.g. naming conventions, docstrings, etc.).
|
|
84
|
+
- Remember to write an example of usage for the new feature you are implementing.
|
|
85
|
+
- After the process is finished, send a pull request.
|
|
86
|
+
|
|
87
|
+
- If you want to suggest or discuss anything related to OptiCommPy, please get in touch via e-mail
|
|
88
|
+
(edsonporto88@gmail.com).
|
|
89
|
+
|
|
90
|
+
Requirements/Dependencies
|
|
91
|
+
-------------------------
|
|
92
|
+
|
|
93
|
+
- python>=3.2
|
|
94
|
+
- numpy>=1.24.4
|
|
95
|
+
- scipy>=1.13.0
|
|
96
|
+
- matplotlib>=3.7.0
|
|
97
|
+
- numba>=0.54.1
|
|
98
|
+
- tqdm>=4.64.1
|
|
99
|
+
- simple-pid>=1.0.1
|
|
100
|
+
- mpl-scatter-density>=0.7.0
|
|
101
|
+
- sphinx-rtd-theme>=1.2.2
|
|
102
|
+
- nbsphinx>=0.9.3
|
|
103
|
+
- nbsphinx-link>=1.3.0
|
|
104
|
+
- prettytable>=3.16.0
|
|
105
|
+
- cupy-cuda12x>=13.1.0 (optional, in case GPU processing is desired)
|
|
106
|
+
|
|
107
|
+
Installation
|
|
108
|
+
------------
|
|
109
|
+
|
|
110
|
+
Using pip:
|
|
111
|
+
|
|
112
|
+
::
|
|
113
|
+
|
|
114
|
+
pip install OptiCommPy
|
|
115
|
+
|
|
116
|
+
Cloning the repository from GitHub:
|
|
117
|
+
|
|
118
|
+
::
|
|
119
|
+
|
|
120
|
+
$ git clone https://github.com/edsonportosilva/OptiCommPy.git
|
|
121
|
+
$ cd OptiCommPy
|
|
122
|
+
$ pip install .
|
|
123
|
+
|
|
124
|
+
Documentation
|
|
125
|
+
-------------
|
|
126
|
+
|
|
127
|
+
We are continuously making efforts to improve the code documentation.
|
|
128
|
+
You can find the latest documentation in
|
|
129
|
+
`opticommpy.readthedocs.io <https://opticommpy.readthedocs.io/en/latest/index.html>`__.
|
|
130
|
+
|
|
131
|
+
Citing this repository
|
|
132
|
+
----------------------
|
|
133
|
+
|
|
134
|
+
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
|
|
135
|
+
|
|
136
|
+
.. |PyPI| image:: https://img.shields.io/pypi/v/OptiCommPy?label=pypi%20package
|
|
137
|
+
.. |PyPI - Downloads| image:: https://img.shields.io/pypi/dm/OptiCommPy
|
|
138
|
+
.. |Documentation Status| image:: https://readthedocs.org/projects/opticommpy/badge/?version=latest
|
|
139
|
+
:target: https://opticommpy.readthedocs.io/en/latest/?badge=latest
|
|
140
|
+
.. |DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.11450597.svg
|
|
141
|
+
:target: https://doi.org/10.5281/zenodo.11450597
|
|
142
|
+
.. |JOSS| image:: https://joss.theoj.org/papers/10.21105/joss.06600/status.svg
|
|
143
|
+
:target: https://doi.org/10.21105/joss.06600
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
LICENSE
|
|
2
|
-
README.
|
|
2
|
+
README.rst
|
|
3
3
|
runner
|
|
4
4
|
setup.py
|
|
5
5
|
OptiCommPy.egg-info/PKG-INFO
|
|
@@ -14,7 +14,9 @@ optic/comm/fec.py
|
|
|
14
14
|
optic/comm/metrics.py
|
|
15
15
|
optic/comm/modulation.py
|
|
16
16
|
optic/comm/ofdm.py
|
|
17
|
+
optic/comm/sources.py
|
|
17
18
|
optic/dsp/carrierRecovery.py
|
|
19
|
+
optic/dsp/carrierRecoveryGPU.py
|
|
18
20
|
optic/dsp/clockRecovery.py
|
|
19
21
|
optic/dsp/core.py
|
|
20
22
|
optic/dsp/coreGPU.py
|
|
@@ -23,4 +25,8 @@ optic/models/amplification.py
|
|
|
23
25
|
optic/models/channels.py
|
|
24
26
|
optic/models/devices.py
|
|
25
27
|
optic/models/modelsGPU.py
|
|
26
|
-
optic/models/
|
|
28
|
+
optic/models/perturbation.py
|
|
29
|
+
optic/models/tx.py
|
|
30
|
+
tests/test_dsp.py
|
|
31
|
+
tests/test_metrics.py
|
|
32
|
+
tests/test_modulation.py
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
numpy>=1.
|
|
2
|
-
scipy>=
|
|
1
|
+
numpy>=1.24.4
|
|
2
|
+
scipy>=1.13.0
|
|
3
3
|
matplotlib>=3.7.0
|
|
4
4
|
sympy
|
|
5
5
|
tqdm>=4.64.1
|
|
6
|
-
numba>=0.54.
|
|
7
|
-
scikit-commpy>=0.7.0
|
|
6
|
+
numba>=0.54.0
|
|
8
7
|
simple-pid>=1.0.1
|
|
9
8
|
mpl-scatter-density>=0.7.0
|
|
10
|
-
pandas>=2.0.0
|
|
11
9
|
sphinx-rtd-theme>=1.2.2
|
|
10
|
+
nbsphinx>=0.9.3
|
|
11
|
+
nbsphinx-link>=1.3.0
|
|
12
|
+
prettytable>=3.16.0
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: OptiCommPy
|
|
3
|
+
Version: 0.10.0
|
|
4
|
+
Summary: Optical Communications Algorithms with Python
|
|
5
|
+
Home-page: https://github.com/edsonportosilva/OptiCommPy
|
|
6
|
+
Maintainer: Edson Porto da Silva
|
|
7
|
+
Maintainer-email: edsonporto88@gmail.com
|
|
8
|
+
License: GPL-3.0 license
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Intended Audience :: Science/Research
|
|
11
|
+
Classifier: Intended Audience :: Telecommunications Industry
|
|
12
|
+
Classifier: Operating System :: Unix
|
|
13
|
+
Classifier: Programming Language :: Python
|
|
14
|
+
Classifier: Topic :: Scientific/Engineering
|
|
15
|
+
Classifier: Topic :: Software Development
|
|
16
|
+
Requires-Python: >=3.2
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
License-File: LICENSE
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
.. image:: ../../figures/logo_OptiCommPy.jpg
|
|
22
|
+
:width: 75%
|
|
23
|
+
:align: center
|
|
24
|
+
|
|
25
|
+
**OptiCommPy** is a Python-based framework to simulate systems, subsystems, and
|
|
26
|
+
components of fiber optic communication systems, for educational and research purposes.
|
|
27
|
+
|
|
28
|
+
.. image:: ../../figures/eyeDisp.gif
|
|
29
|
+
:width: 45%
|
|
30
|
+
.. image:: ../../figures/40GOOK_spectrum.jpg
|
|
31
|
+
:width: 45%
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
.. image:: ../../figures/DSP.jpg
|
|
35
|
+
:width: 600px
|
|
36
|
+
:align: center
|
|
37
|
+
|
|
38
|
+
|PyPI| |PyPI - Downloads| |Documentation Status| |DOI| |JOSS|
|
|
39
|
+
|
|
40
|
+
Available features
|
|
41
|
+
------------------
|
|
42
|
+
|
|
43
|
+
- Several digital modulations available (M-PAM, square M-QAM, M-PSK,
|
|
44
|
+
OOK) to simulate IM-DD and coherent optical systems.
|
|
45
|
+
- Numerical models to simulate optical transmitters, optical
|
|
46
|
+
amplification, nonlinear propagation over optical fibers, and optical
|
|
47
|
+
receivers.
|
|
48
|
+
- CPU and GPU-based implementations of the `split-step Fourier
|
|
49
|
+
Method <https://en.wikipedia.org/wiki/Split-step_method>`__ to
|
|
50
|
+
simulate polarization multiplexed WDM transmission.
|
|
51
|
+
- Standard digital signal processing (DSP) blocks employed in coherent
|
|
52
|
+
optical receivers, such as:
|
|
53
|
+
|
|
54
|
+
- *Signal resampling.*
|
|
55
|
+
- *Matched filtering.*
|
|
56
|
+
- *Clock recovery.*
|
|
57
|
+
- *Electronic chromatic dispersion compensation (EDC)*.
|
|
58
|
+
- *Several NxN MIMO adaptive equalization algorithms*.
|
|
59
|
+
- *Carrier phase recovery algorithms.*
|
|
60
|
+
|
|
61
|
+
- Functions to implement forward error correction (FEC) encoders and decoders.
|
|
62
|
+
- For most of the cases, `Numba <https://numba.pydata.org/>`__ is used
|
|
63
|
+
to speed up the code.
|
|
64
|
+
- Evaluate transmission performance with metrics such as:
|
|
65
|
+
|
|
66
|
+
- *Bit-error-rate* (BER).
|
|
67
|
+
- *Symbol-error-rate* (SER).
|
|
68
|
+
- *Error vector magnitude* (EVM).
|
|
69
|
+
- *Mutual information* (MI).
|
|
70
|
+
- *Generalized mutual information* (GMI).
|
|
71
|
+
- *Normalized generalized mutual information* (NGMI).
|
|
72
|
+
|
|
73
|
+
- Visualization of the spectrum of electrical/optical signals, signal
|
|
74
|
+
constellations, and eyediagrams.
|
|
75
|
+
|
|
76
|
+
How can I contribute?
|
|
77
|
+
---------------------
|
|
78
|
+
|
|
79
|
+
- If you want to contribute to this project:
|
|
80
|
+
- Create a new issue in the GitHub repository to discuss the feature you want to implement.
|
|
81
|
+
- Fork the repository and create a new branch.
|
|
82
|
+
- Make sure you have the latest version of the code.
|
|
83
|
+
- Check the conventions adopted in the code writing (e.g. naming conventions, docstrings, etc.).
|
|
84
|
+
- Remember to write an example of usage for the new feature you are implementing.
|
|
85
|
+
- After the process is finished, send a pull request.
|
|
86
|
+
|
|
87
|
+
- If you want to suggest or discuss anything related to OptiCommPy, please get in touch via e-mail
|
|
88
|
+
(edsonporto88@gmail.com).
|
|
89
|
+
|
|
90
|
+
Requirements/Dependencies
|
|
91
|
+
-------------------------
|
|
92
|
+
|
|
93
|
+
- python>=3.2
|
|
94
|
+
- numpy>=1.24.4
|
|
95
|
+
- scipy>=1.13.0
|
|
96
|
+
- matplotlib>=3.7.0
|
|
97
|
+
- numba>=0.54.1
|
|
98
|
+
- tqdm>=4.64.1
|
|
99
|
+
- simple-pid>=1.0.1
|
|
100
|
+
- mpl-scatter-density>=0.7.0
|
|
101
|
+
- sphinx-rtd-theme>=1.2.2
|
|
102
|
+
- nbsphinx>=0.9.3
|
|
103
|
+
- nbsphinx-link>=1.3.0
|
|
104
|
+
- prettytable>=3.16.0
|
|
105
|
+
- cupy-cuda12x>=13.1.0 (optional, in case GPU processing is desired)
|
|
106
|
+
|
|
107
|
+
Installation
|
|
108
|
+
------------
|
|
109
|
+
|
|
110
|
+
Using pip:
|
|
111
|
+
|
|
112
|
+
::
|
|
113
|
+
|
|
114
|
+
pip install OptiCommPy
|
|
115
|
+
|
|
116
|
+
Cloning the repository from GitHub:
|
|
117
|
+
|
|
118
|
+
::
|
|
119
|
+
|
|
120
|
+
$ git clone https://github.com/edsonportosilva/OptiCommPy.git
|
|
121
|
+
$ cd OptiCommPy
|
|
122
|
+
$ pip install .
|
|
123
|
+
|
|
124
|
+
Documentation
|
|
125
|
+
-------------
|
|
126
|
+
|
|
127
|
+
We are continuously making efforts to improve the code documentation.
|
|
128
|
+
You can find the latest documentation in
|
|
129
|
+
`opticommpy.readthedocs.io <https://opticommpy.readthedocs.io/en/latest/index.html>`__.
|
|
130
|
+
|
|
131
|
+
Citing this repository
|
|
132
|
+
----------------------
|
|
133
|
+
|
|
134
|
+
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
|
|
135
|
+
|
|
136
|
+
.. |PyPI| image:: https://img.shields.io/pypi/v/OptiCommPy?label=pypi%20package
|
|
137
|
+
.. |PyPI - Downloads| image:: https://img.shields.io/pypi/dm/OptiCommPy
|
|
138
|
+
.. |Documentation Status| image:: https://readthedocs.org/projects/opticommpy/badge/?version=latest
|
|
139
|
+
:target: https://opticommpy.readthedocs.io/en/latest/?badge=latest
|
|
140
|
+
.. |DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.11450597.svg
|
|
141
|
+
:target: https://doi.org/10.5281/zenodo.11450597
|
|
142
|
+
.. |JOSS| image:: https://joss.theoj.org/papers/10.21105/joss.06600/status.svg
|
|
143
|
+
:target: https://doi.org/10.21105/joss.06600
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
|
|
2
|
+
.. image:: ../../figures/logo_OptiCommPy.jpg
|
|
3
|
+
:width: 75%
|
|
4
|
+
:align: center
|
|
5
|
+
|
|
6
|
+
**OptiCommPy** is a Python-based framework to simulate systems, subsystems, and
|
|
7
|
+
components of fiber optic communication systems, for educational and research purposes.
|
|
8
|
+
|
|
9
|
+
.. image:: ../../figures/eyeDisp.gif
|
|
10
|
+
:width: 45%
|
|
11
|
+
.. image:: ../../figures/40GOOK_spectrum.jpg
|
|
12
|
+
:width: 45%
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
.. image:: ../../figures/DSP.jpg
|
|
16
|
+
:width: 600px
|
|
17
|
+
:align: center
|
|
18
|
+
|
|
19
|
+
|PyPI| |PyPI - Downloads| |Documentation Status| |DOI| |JOSS|
|
|
20
|
+
|
|
21
|
+
Available features
|
|
22
|
+
------------------
|
|
23
|
+
|
|
24
|
+
- Several digital modulations available (M-PAM, square M-QAM, M-PSK,
|
|
25
|
+
OOK) to simulate IM-DD and coherent optical systems.
|
|
26
|
+
- Numerical models to simulate optical transmitters, optical
|
|
27
|
+
amplification, nonlinear propagation over optical fibers, and optical
|
|
28
|
+
receivers.
|
|
29
|
+
- CPU and GPU-based implementations of the `split-step Fourier
|
|
30
|
+
Method <https://en.wikipedia.org/wiki/Split-step_method>`__ to
|
|
31
|
+
simulate polarization multiplexed WDM transmission.
|
|
32
|
+
- Standard digital signal processing (DSP) blocks employed in coherent
|
|
33
|
+
optical receivers, such as:
|
|
34
|
+
|
|
35
|
+
- *Signal resampling.*
|
|
36
|
+
- *Matched filtering.*
|
|
37
|
+
- *Clock recovery.*
|
|
38
|
+
- *Electronic chromatic dispersion compensation (EDC)*.
|
|
39
|
+
- *Several NxN MIMO adaptive equalization algorithms*.
|
|
40
|
+
- *Carrier phase recovery algorithms.*
|
|
41
|
+
|
|
42
|
+
- Functions to implement forward error correction (FEC) encoders and decoders.
|
|
43
|
+
- For most of the cases, `Numba <https://numba.pydata.org/>`__ is used
|
|
44
|
+
to speed up the code.
|
|
45
|
+
- Evaluate transmission performance with metrics such as:
|
|
46
|
+
|
|
47
|
+
- *Bit-error-rate* (BER).
|
|
48
|
+
- *Symbol-error-rate* (SER).
|
|
49
|
+
- *Error vector magnitude* (EVM).
|
|
50
|
+
- *Mutual information* (MI).
|
|
51
|
+
- *Generalized mutual information* (GMI).
|
|
52
|
+
- *Normalized generalized mutual information* (NGMI).
|
|
53
|
+
|
|
54
|
+
- Visualization of the spectrum of electrical/optical signals, signal
|
|
55
|
+
constellations, and eyediagrams.
|
|
56
|
+
|
|
57
|
+
How can I contribute?
|
|
58
|
+
---------------------
|
|
59
|
+
|
|
60
|
+
- If you want to contribute to this project:
|
|
61
|
+
- Create a new issue in the GitHub repository to discuss the feature you want to implement.
|
|
62
|
+
- Fork the repository and create a new branch.
|
|
63
|
+
- Make sure you have the latest version of the code.
|
|
64
|
+
- Check the conventions adopted in the code writing (e.g. naming conventions, docstrings, etc.).
|
|
65
|
+
- Remember to write an example of usage for the new feature you are implementing.
|
|
66
|
+
- After the process is finished, send a pull request.
|
|
67
|
+
|
|
68
|
+
- If you want to suggest or discuss anything related to OptiCommPy, please get in touch via e-mail
|
|
69
|
+
(edsonporto88@gmail.com).
|
|
70
|
+
|
|
71
|
+
Requirements/Dependencies
|
|
72
|
+
-------------------------
|
|
73
|
+
|
|
74
|
+
- python>=3.2
|
|
75
|
+
- numpy>=1.24.4
|
|
76
|
+
- scipy>=1.13.0
|
|
77
|
+
- matplotlib>=3.7.0
|
|
78
|
+
- numba>=0.54.1
|
|
79
|
+
- tqdm>=4.64.1
|
|
80
|
+
- simple-pid>=1.0.1
|
|
81
|
+
- mpl-scatter-density>=0.7.0
|
|
82
|
+
- sphinx-rtd-theme>=1.2.2
|
|
83
|
+
- nbsphinx>=0.9.3
|
|
84
|
+
- nbsphinx-link>=1.3.0
|
|
85
|
+
- prettytable>=3.16.0
|
|
86
|
+
- cupy-cuda12x>=13.1.0 (optional, in case GPU processing is desired)
|
|
87
|
+
|
|
88
|
+
Installation
|
|
89
|
+
------------
|
|
90
|
+
|
|
91
|
+
Using pip:
|
|
92
|
+
|
|
93
|
+
::
|
|
94
|
+
|
|
95
|
+
pip install OptiCommPy
|
|
96
|
+
|
|
97
|
+
Cloning the repository from GitHub:
|
|
98
|
+
|
|
99
|
+
::
|
|
100
|
+
|
|
101
|
+
$ git clone https://github.com/edsonportosilva/OptiCommPy.git
|
|
102
|
+
$ cd OptiCommPy
|
|
103
|
+
$ pip install .
|
|
104
|
+
|
|
105
|
+
Documentation
|
|
106
|
+
-------------
|
|
107
|
+
|
|
108
|
+
We are continuously making efforts to improve the code documentation.
|
|
109
|
+
You can find the latest documentation in
|
|
110
|
+
`opticommpy.readthedocs.io <https://opticommpy.readthedocs.io/en/latest/index.html>`__.
|
|
111
|
+
|
|
112
|
+
Citing this repository
|
|
113
|
+
----------------------
|
|
114
|
+
|
|
115
|
+
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
|
|
116
|
+
|
|
117
|
+
.. |PyPI| image:: https://img.shields.io/pypi/v/OptiCommPy?label=pypi%20package
|
|
118
|
+
.. |PyPI - Downloads| image:: https://img.shields.io/pypi/dm/OptiCommPy
|
|
119
|
+
.. |Documentation Status| image:: https://readthedocs.org/projects/opticommpy/badge/?version=latest
|
|
120
|
+
:target: https://opticommpy.readthedocs.io/en/latest/?badge=latest
|
|
121
|
+
.. |DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.11450597.svg
|
|
122
|
+
:target: https://doi.org/10.5281/zenodo.11450597
|
|
123
|
+
.. |JOSS| image:: https://joss.theoj.org/papers/10.21105/joss.06600/status.svg
|
|
124
|
+
:target: https://doi.org/10.21105/joss.06600
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|