Pypho is Python based tool for simulating optical fiber transmission. Pypho is a collection of functions. With each function an object is defined which represents a network component such as transmission fiber, optical amplifier or laser diode.
The idea of Pypho is to be able to define a set of network elements with defined parameters and to add own functions. The user has the full flexibility to define parameters.
Each function (network element) has input and/or output variables and can be tuned by a set of parameters. The network elements are connected by feeding the input of one network element with the output of the other network element. As Pypho is script based you can define your transmission setup flexibile with all the advantages of a programming language (loops, if-else decisions, analysing and tweaking the variables,..).
No GUI! Pypho doesn't offer a GUI with click, drag & drop.
Fig. 1 : Functions (blue), Objects (Paramterized components) (red) and part of a transmission setup (green).
Fig. 1 shows that based on the imported libraries (blue) a set of network elements can be defined (red). These network elements can be connected.
The python code for the function import is:
from pypho_lasmod import pypho_lasmod
from pypho_fiber import pypho_fiber
The definition of the network elements are straighforward
SC_1549 = pypho_lasmod(glova = gp, esig=esig(), power = 3, Df = [-125] , teta = np.pi/8)
SC_1550 = pypho_lasmod(glova = gp, esig=esig(), power = 6, Df = [0] , teta = np.pi)
SC_1551 = pypho_lasmod(glova = gp, esig=esig(), power = 3, Df = [+125] , teta = np.pi/2)
SSMF = pypho_fiber(glova = gp, l = 80.0e3, D = 16.8, S = 5.8e-2, alpha = 0.21, gamma = 1.4)
DCF = pypho_fiber(glova = gp, fibertype = 'DCF', l = 10e3)
Afterwards the signals are generated, added and transmitted over the fibers.
E_1549 = SC_1549()
E_1550 = SC_1550()
E_1551 = SC_1551()
E[0]['E'] = E_1549[0]['E'] + E_1550[0]['E'] + E_1551[0]['E']
E = SSMF(E)
E = SSMF(E)
E = DCF(E)
Looks easy! Is easy!
The current version is V3.0 (2019-12-01).
V2 was never released.
Version V1.0 was released 2018-10-10.
Class or feature | V 0.5 | V 1.0.0 (2018-10-10) | V 3.0.0 (2019-12-01) | Remark |
---|---|---|---|---|
Python Version | >2.7 | >2.7 | >3.6 | - |
pypho_setup | yes | yes | lower memory consumption | - |
Noise calculation | no | yes | yes | - |
pypho_oamp | no | improved | improved | Optical amplifier |
pypho_bits | yes | yes | no | - |
pypho_symbols | no | no | + DeBruijn +Symbols can be defined |
- |
pypho_arbmod | no | yes | + definition by symbols + easier to handle |
Generic transmitter modell |
BER calculation | no | yes | + definition by symbols + easier to handle |
BER calculation |
pypho_signalsrc | yes | yes | yes | - |
pypho_lasmod | yes | yes | yes | - |
pypho_cwlaser | yes | yes | yes | - |
pypho_meanpower | yes | yes | no | - |
pypho_oamp | no | no | yes | - |
pypho_fiber | yes | yes | yes | - |
pypho_cfiber | no | yes | + lower memory consumption + fftw3 plans are be saved |
c implementation supporting multithreading |
pypho_optfi | yes | improved | yes | - |
pypho_eye | yes | yes | yes | - |
pypho_poincare | yes | yes | yes | - |
pypho_functions | yes | yes | yes | - |
Version 3.0.0 (2019-12-01):
Version 1.1.0 (2018-10-10):
Planned for next updates:
Todo: