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 opticomlib
or from source code:
pip install git+https://github.com/armando-palacio/opticomlib.git
This project is licensed under the terms of the MIT license.
If you wish to contact me you can do so at armandopr3009@gmail.com.