Skip to content

Commit

Permalink
feat: enable different sim_param vectors for multiple requests
Browse files Browse the repository at this point in the history
Signed-off-by: EstherLerouzic <[email protected]>
Change-Id: Ia800a7b98b33b795cc3553500116be61c612e45c
  • Loading branch information
EstherLerouzic committed Apr 26, 2024
1 parent be7ae35 commit 174f635
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 3 deletions.
22 changes: 20 additions & 2 deletions docs/json.rst
Original file line number Diff line number Diff line change
Expand Up @@ -333,8 +333,26 @@ See ``delta_power_range_db`` for more explaination.
| | | from `arXiv:1710.02225 |
| | | <https://arxiv.org/abs/1710.02225>`_). |
+---------------------------------------------+-----------+---------------------------------------------+
| ``nli_params.computed_channels`` | (number) | The channels on which the NLI is |
| | | explicitly evaluated. |
| ``nli_params.computed_channels`` | (list | Optional. The exact channel indices |
| | of | (starting from 1) on which the NLI is |
| | numbers) | explicitly evaluated. |
| | | The NLI of the other channels is |
| | | interpolated using ``numpy.interp``. |
| | | In a C-band simulation with 96 channels in |
| | | a 50 GHz spacing fix-grid we recommend at |
| | | one computed channel every 20 channels. |
| | | If this option is present, the next option |
| | | "computed_number_of_channels" is ignored. |
| | | If none of the options are present, the NLI |
| | | is computed for all channels (no |
| | | interpolation) |
+---------------------------------------------+-----------+---------------------------------------------+
| ``nli_params.computed_number_of_channels`` | (number) | Optional. The number of channels on which |
| | | the NLI is explicitly evaluated. |
| | | The channels are |
| | | evenly selected between the first and the |
| | | last carrier of the current propagated |
| | | spectrum. |
| | | The NLI of the other channels is |
| | | interpolated using ``numpy.interp``. |
| | | In a C-band simulation with 96 channels in |
Expand Down
3 changes: 2 additions & 1 deletion gnpy/core/parameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def to_json(self):

class NLIParams(Parameters):
def __init__(self, method='gn_model_analytic', dispersion_tolerance=1, phase_shift_tolerance=0.1,
computed_channels=None):
computed_channels=None, computed_number_of_channels=None):
"""Simulation parameters used within the Nli Solver
:params method: formula for NLI calculation
Expand All @@ -66,6 +66,7 @@ def __init__(self, method='gn_model_analytic', dispersion_tolerance=1, phase_shi
self.dispersion_tolerance = dispersion_tolerance
self.phase_shift_tolerance = phase_shift_tolerance
self.computed_channels = computed_channels
self.computed_number_of_channels = computed_number_of_channels

def to_json(self):
return {"method": self.method,
Expand Down
4 changes: 4 additions & 0 deletions gnpy/core/science_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,10 @@ def compute_nli(spectral_info: SpectralInformation, srs: StimulatedRamanScatteri
elif 'ggn_spectrally_separated' in sim_params.nli_params.method:
if sim_params.nli_params.computed_channels is not None:
cut_indices = array(sim_params.nli_params.computed_channels) - 1
elif sim_params.nli_params.computed_number_of_channels is not None:
nb_ch_computed = sim_params.nli_params.computed_number_of_channels
nb_ch = len(spectral_info.channel_number)
cut_indices = array([round(i * (nb_ch - 1) / (nb_ch_computed - 1)) for i in range(0, nb_ch_computed)])
else:
cut_indices = array(spectral_info.channel_number) - 1

Expand Down

0 comments on commit 174f635

Please sign in to comment.