### pypho v3

#### pypho_functions

pypho_functions is a collection of usefull functions to make your coding live easier.

dbm2w( power_dbm )

Converts a power value from dBm to W: $P|_{W} = 10^{\frac{P|_{dBm}}{10}}$ W

Parameter Type Description
power_dbm float Power value in dBm ($P|_{dBm}$).

Output Type Description
Power value in W float $P|_{W}$

w2dbm( power_w )

Converts a power value from W to dBm: $P|_{dBm} = 10\cdot \lg{\left(\frac{P|_{W}}{1mW}\right)}$ dBm.

Parameter Type Description
power_dbm float Power value in W ($P|_{W}$).

Output Type Description
Power value in dBm float $P|_{dBm}$

getpower_W( E )

Calculates the mean power in W of an optical Signal $E$: $P|_{dBm} = \frac{1}{T} \int _{ \tau=0 }^{ T } \left( \left\lvert E_x(\tau) \right\rvert^{ 2 } +\left\lvert E_y(\tau) \right\rvert^{ 2 }\right) d\tau$.

Parameter Type Description
E numpy.ndarray 2 dimensional array with complex values, which represents the sample points over time of the X- and Y-polarisation.
For example E['E'].

Output Type Description
Power value in W float $P|_{W}$

getpower_dBm( E )

Same as getpower_w( E ), but output is in dBm.

Dec_x, Esx_I_ax, Esx_Q_ax, Dec_y, Esy_I_ax, Esy_Q_ax = ...
get_decision_matrix( gp, E, [constpts_x, constpts_y], [symbols_x, symbols_y], filter)

Calculates a decision matrix needed for the BER calculation.

Parameter Type Description
gp numpy.ndarray Global parameters as defined in pypho_setup.
E list List which defines the optical data and noise signal. Read here about data signal and noise representation.
[constpts_x, constpts_y] numpy.ndarray Defines the constellation points.
Definition of constpoints can be found here pypho_arbmod.
[symbols_x, symbols_y] numpy.ndarray Definition of symbols_* can be found here pypho_arbmod.
filter list Optical filter of the coherent receiver. Defined by pypho_optfi.

Output Type Description
Dec_x, Dec_y numpy.ndarray Array with the identification numbers of each constelleation point as defined in [constpts_x, constpts_y] (pypho_arbmod).
Esx_I_ax, Esx_Q_ax, Esy_I_ax, Esy_Q_ax numpy.ndarray Arrays representing the axis of the I- and Q- part of the received signal of the X- and Y-polarisation.

You can find an example for the BER calculation including the calculation of the decision matrix here.

BER = ...
calc_BER( gp, E, [constpts_x, constpts_y], OSNR, Dec_x, Dec_y, Esx_I_ax, Esx_Q_ax, Esy_I_ax, Esy_Q_ax, M, filter, [symbols_x, symbols_y])

Calculates a decision matrix needed for the BER calculation.

Parameter Type Description
gp numpy.ndarray Global parameters as defined in pypho_setup.
E list List which defines the optical data and noise signal. Read here about data signal and noise representation.
[constpts_x, constpts_y] numpy.ndarray Defines the constellation points.
Definition of constpoints can be found here pypho_arbmod.
OSNR float OSNR in dB
Dec_x, Dec_y numpy.ndarray Array with the identification numbers of each constellation point as defined in [constpts_x, constpts_y] (pypho_arbmod).
Esx_I_ax, Esx_Q_ax, Esy_I_ax, Esy_Q_ax numpy.ndarray Arrays representing the axis of the I- and Q- part of the received signal of the X- and Y-polarisation.
M inetger Defines the number of repitions. This parameters defines the lowest BER, which can be theoretical achieved.
filter list Optical filter of the coherent receiver. Defined by pypho_optfi.
[symbols_x, symbols_y] numpy.ndarray Definition of symbols_* can be found here pypho_arbmod.

Output Type Description
BER numpy.ndarray Array with two float numbers representing the BER of the X- and Y-polaristion: $\lg{\left(BER_x\right)}$ and $\lg{\left(BER_y\right)}$
You can find an example for the BER calculation including the calculation of the decision matrix here.