Opticomlib is an open source Python package for optical communications research. It is oriented to engineers who want to simulate optical communication systems using Python. The package provide binary_sequence, electrical_signal, optical_signal, and eye objects with methods for signal processing and visualization integrated with numpy, scipy, and matplotlib libraries for frendly use. The package also provide a set of electro-optic devices as MZM, FIBER, PD, EDFA, and much more.
- Opticomlib Documentation: https://armando-palacio.github.io/opticomlib
- Opticomlib Repository: https://github.com/armando-palacio/opticomlib.git
- Bug reports: https://github.com/armando-palacio/opticomlib/issues
- Contributing: CONTRIBUTING.md
-
Electro-optic devices: most common electro-optic devices are implemented in the package (
opticomlib.devices):PRBS: Pseudo Random Binary Sequence GeneratorDAC: Digital to Analog ConverterADC: Analog to Digital ConverterPM: Phase ModulatorMZM: Mach-Zehnder Modulator (intensity modulator)FIBER: Optical FiberDM: Pure Dispersive MediumPD: PhotodetectorEDFA: Erbium Doped Fiber AmplifierSAMPLER: electrical samplerLPF: Low Pass FilterBPF: Band Pass FilterGET_EYE: Eye Diagram parameters estimatorFBG: Fiber Bragg Grating- ... and more in the future
-
Modulation formats: modulations are implemented in separate modules, with their own functionalities:
OOK: On-Off Keying (opticomlib.ook)PPM: Pulse Position Modulation (opticomlib.ppm)- ... and more in the future
-
Objects types: methods for signal processing and visualization are integrated in the following objects:
binary_sequence: object for binary sequenceselectrical_signal: object for electrical signalsoptical_signal: object for optical signalseye: object for eye diagrams
-
Laboratory utilities: framework for communication with laboratory equipment and post-processing of data (
opticomlib.lab).
You can install opticomlib using pip:
pip install opticomlibor from source code:
pip install git+https://github.com/armando-palacio/opticomlib.gitThis project is licensed under the terms of the MIT license.
If you wish to contact me you can do so at armandopr3009@gmail.com.