Python based optical fiber transmission simulation tool

PYPHO

Documentation Download

Introduction

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.

Pypho general idea
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!

List of functions

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 -

Roadmap & History

Version 3.0.0 (2019-12-01):

  • cfiber is improved by speed and memory consumption
  • in pypho_setup the frequency and time axis is function now -> lower memory consunmption
  • pypho is now handling symbols only: esier to handle, definition of the constellation points is easier
  • pyfftw is used as standard FFTW3 wrapper.
  • FFTW3 plans are saved to speed up the simulation of huge numbers of smybols (>>2^20)

Version 1.1.0 (2018-10-10):

  • (Fast) Multithreading CPU version: Cython version of fiber modell
  • BER calculation
  • Correct noise modelling
  • Improved amplifier modell
  • More optical filter
  • Constellation diagramme (plot only)

Planned for next updates:

  • Tool for characterization of signal quality: timing and amplitude jitter, phase noise, ghostpulses.
  • Cloud based computation for beta-testers (please apply by email).
  • Faster BER calculation

Todo:

  • Cuda version of fiber modell
  • Tool for characterization of signal quality: timing and amplitude jitter, phase noise, ghostpulses.
  • Cloud based computation for beta-testers (please apply by email).