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[0]['E']` .Read here about data signal and noise representation |

Output | Type | Description |
---|---|---|

Power value in W | float | $P|_{W}$ |

`getpower_dBm( E )`

Same as `getpower_w( `

, but output is in dBm.*E *)

` 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], [bits_x, bits_y], LO, filter, sigsampler)

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. |

`[bits_x, bits_y]` |
numpy.ndarray | Definition of bits_* can be found here pypho_arbmod. |

`LO` |
list | Local oscillator of the coherent receiver. cw-laser defined by pypho_cwlaser. |

`filter` |
list | Optical filter of the coherent receiver. Defined by pypho_optfi. |

`sigsampler` |
list | Signal sampler defined by pypho_sample. |

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, LO, filter, sigsampler)`

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. |

`LO` |
list | Local oscillator of the coherent receiver. cw-laser defined by pypho_cwlaser. |

`filter` |
list | Optical filter of the coherent receiver. Defined by pypho_optfi. |

`sigsampler` |
list | Signal sampler defined by pypho_sample. |

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)}$ |