From cdd4c571b0ac1db58617b3e6a93bee46bf13533a Mon Sep 17 00:00:00 2001 From: EstherLerouzic Date: Wed, 10 Apr 2019 17:55:02 +0100 Subject: [PATCH] correction of bugs exception KeyError type in service sheet not correctly catched print Request.mode instead of Requestmode (not defined at this point) selection of modes did not respect min spacing criterium: constraint added transmission_main did not give SNR in 0.1 nm: added in std out Signed-off-by: EstherLerouzic --- gnpy/core/elements.py | 9 ++++++++- gnpy/core/request.py | 2 +- gnpy/core/service_sheet.py | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gnpy/core/elements.py b/gnpy/core/elements.py index d4ebf6c7..a845b150 100644 --- a/gnpy/core/elements.py +++ b/gnpy/core/elements.py @@ -50,11 +50,14 @@ class Transceiver(Node): for c in spectral_info.carriers] self.raw_snr = [lin2db(divide(c.power.signal, c.power.nli+c.power.ase)) for c in spectral_info.carriers] + self.raw_snr_01nm = [snr - ratio for snr, ratio + in zip(self.raw_snr, ratio_01nm)] self.osnr_ase = self.raw_osnr_ase self.osnr_ase_01nm = self.raw_osnr_ase_01nm self.osnr_nli = self.raw_osnr_nli self.snr = self.raw_snr + self.snr_01nm = self.raw_snr_01nm def update_snr(self, *args): """ @@ -74,6 +77,8 @@ class Transceiver(Node): self.raw_snr, self.baud_rate)) self.osnr_ase_01nm = list(map(lambda x:snr_sum(x,12.5e9,snr_added), self.raw_osnr_ase_01nm)) + self.snr_01nm = list(map(lambda x:snr_sum(x,12.5e9,snr_added), + self.raw_snr_01nm)) @property def to_json(self): @@ -99,12 +104,14 @@ class Transceiver(Node): snr = round(mean(self.snr),2) osnr_ase = round(mean(self.osnr_ase),2) osnr_ase_01nm = round(mean(self.osnr_ase_01nm), 2) + snr_01nm = round(mean(self.snr_01nm),2) return '\n'.join([f'{type(self).__name__} {self.uid}', f' OSNR ASE (0.1nm, dB): {osnr_ase_01nm:.2f}', f' OSNR ASE (signal bw, dB): {osnr_ase:.2f}', - f' SNR total (signal bw, dB): {snr:.2f}']) + f' SNR total (signal bw, dB): {snr:.2f}', + f' SNR total (0.1nm, dB): {snr_01nm:.2f}']) def __call__(self, spectral_info): self._calc_snr(spectral_info) diff --git a/gnpy/core/request.py b/gnpy/core/request.py index c1af7f3b..7f2a1e35 100644 --- a/gnpy/core/request.py +++ b/gnpy/core/request.py @@ -429,7 +429,7 @@ def propagate_and_optimize_mode(path, req, equipment, show=False): # at least 1 baudrate can be tested wrt spacing for b in baudrate_to_explore : modes_to_explore = [m for m in equipment['Transceiver'][req.tsp].mode - if m['baud_rate'] == b] + if m['baud_rate'] == b and float(m['min_spacing'])<= req.spacing] modes_to_explore = sorted(modes_to_explore, key = lambda x: x['bit_rate'], reverse=True) # print(modes_to_explore) diff --git a/gnpy/core/service_sheet.py b/gnpy/core/service_sheet.py index 3759e07e..8b2ac1b7 100644 --- a/gnpy/core/service_sheet.py +++ b/gnpy/core/service_sheet.py @@ -73,7 +73,7 @@ class Request_element(Element): Requestmode = None self.mode = Request.mode except KeyError: - msg = f'Request Id: {self.request_id} - could not find tsp : \'{Request.trx_type}\' with mode: \'{Requestmode}\' in eqpt library \nComputation stopped.' + msg = f'Request Id: {self.request_id} - could not find tsp : \'{Request.trx_type}\' with mode: \'{Request.mode}\' in eqpt library \nComputation stopped.' #print(msg) logger.critical(msg) exit()