Commit Graph

96 Commits

Author SHA1 Message Date
Jan Kundrát
11033a284f examples: move transmission_main_example into gnpy.tools
This converts our first free-standing example entry point into a
function. It will become very handy when we start distributing these
entry points via setuptools.

Change-Id: Icd2e4658337f93cd0b0301978e2dc640de0cc72b
2020-06-03 19:06:31 +02:00
Jan Kundrát
21e0589e7f examples: autopep8 -aaaaaaaaaa
Change-Id: I811bc80d9eca9df34c554362de62f98a897cbb05
2020-06-03 18:18:19 +02:00
Jan Kundrát
4d836246ec examples: autopep8
Change-Id: Ieed050fdfb9db57722b2b8de642c25ad2e4a50eb
2020-06-03 18:17:47 +02:00
Jan Kundrát
ee5e64408d examples: common code for data loading
This also moves SimParams handling to a single place. As a result,
path_requests_run has just become Raman-aware (to the minimal possible
extent, OK).

Change-Id: I4e31af5c67335963ddab567d304f48a899cd569e
2020-05-23 22:03:23 +02:00
Jan Kundrát
b96ffe6c7b examples: unify exception handling
Change-Id: I7a6ac6ba54c597214bb85ee0dda2d6313b677730
2020-05-23 22:03:23 +02:00
Jan Kundrát
2b473d26d3 reorganization: move example plotting into an extra submodule
Change-Id: Ibb7a81f360493ad8c1b7e58303e2e256c64dd755
2020-05-23 20:44:51 +02:00
Jan Kundrát
9e74e8b0a0 De-JSONify gnpy.core
Change-Id: I2657f3174209bef5912c7d0809fee876830ad11c
2020-05-23 20:44:51 +02:00
Jan Kundrát
648039521e reorganization: move all JSON processing into an extra module
We agreed that `gnpy.core` should only contain stuff for propagating
wavelengths. Conceptually, JSON parsing and even instantiating these
network elements from data obtained through JSON is *not* something that
is on the same level -- and this will become more important when we move
into YANG format in future.

Also, instead of former `gnpy.core.equipment.common`, use
`gnpy.tools.json_io._JsonThing`. It is not really an awesome name :),
but I think it sucks less than a thing called "common" which would be no
really longer any "common" in that new file.

Change-Id: Ifd85ea4423d418c14c8fae3d5054c5cb5638d283
2020-05-23 20:44:47 +02:00
Jan Kundrát
60bafd114d examples: remove unused imports
Change-Id: I5c60243ecf7cdb56bf1060e2630e35ffb5f3548f
2020-05-23 15:33:18 +02:00
Jan Kundrát
145653df6e reorganization: gnpy/{core => topology}/request.py
Change-Id: Ib399549479b56634c681930aa444b657e5f58ca7
2020-05-19 11:56:02 +02:00
Jan Kundrát
531810cc85 Remove unused class import
Change-Id: I3e0b7174f6ff60a632bbcde56178499755b8b7df
2020-05-19 11:55:17 +02:00
Jan Kundrát
63a6256b5e pep8: rename classes to use CamelCase
Change-Id: Ia696e05b72f1bc5feb570996f492042dafab262d
2020-05-19 11:54:27 +02:00
Jan Kundrát
e08ae9c959 Merge PR #329 into develop
This is a continuation from #319. The singleton-ish interface has not
been changed yet.

Change-Id: I93c8f1145561184f6e91f7e8f7debd3b48936205
2020-03-19 17:15:14 +01:00
AndreaDAmico
80eced85ec Refactoring with some incompatible changes
Please be advised that there were incompatible changes in the Raman
options, including a `s/phase_shift_tollerance/phase_shift_tolerance/`.

Signed-off-by: AndreaDAmico <andrea.damico@polito.it>
Co-authored-by: EstherLerouzic <esther.lerouzic@orange.com>
Co-authored-by: Jan Kundrát <jan.kundrat@telecominfraproject.com>
2019-12-17 11:51:09 +01:00
AndreaDAmico
2960d307fa Unrelated changes
linter changes

Signed-off-by: AndreaDAmico <andrea.damico@polito.it>
Co-authored-by: EstherLerouzic <esther.lerouzic@orange.com>
2019-12-17 11:13:00 +01:00
EstherLerouzic
991eb02964 Add the bidir parameter in transmission_main_example.py
Update the program because the same Path_request class is called
that now includes this bidir field

Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
2019-10-09 19:16:36 +01:00
Jan Kundrát
8c3b514f90 Only print out "pretty summary" when not doing the power sweep 2019-10-01 15:24:40 +02:00
Jan Kundrát
3df27fe315 Print both ASE-OSNR and final GSNR for both 0.1nm and signal-bw in power sweep
As agreed upon during today's coders call, this is something that is
needed by actual users in the field, so let's prioritize their needs
over clarity of output for demo purposes.
2019-10-01 15:21:34 +02:00
Jan Kundrát
a6087ce354 Highlight OSNR @ 0.1nm
Esther and Jonas pointed out that it is much more common to work with
OSNR measurements per 0.1nm rather than per signal bandwidth. This is in
line with what OSAs usually report and what transponder datasheets
specify.

cc #307
2019-09-27 09:22:08 +02:00
Jan Kundrát
faa69917d9 example: Use "Total SNR", not "GSNR"
Various presentations from Polito are slowly changing to use "GSNR" as a
"Generalized SNR", but it's true that our code does not use this term
anywhere, and that it is not properly explained. Let's wait a bit for
this term to become a bit more mainstream and for updated docs on our
side; then this commit can be safely reverted.

Thanks to Jonas for reporting this.
2019-09-20 17:11:42 +02:00
Jan Kundrát
c817ef7335 examples: color highlighting of the "most interesting output"
I think that this SNR value represents the most important output of this
example. There's plenty of debugging info on display already, so let's
make this one more prominent.

I was thinking about moving the highlighting to elements' each __str__()
function, but that felt a bit like layering violation to me. I could
have also changed just the transponder's __str__(). In the end, I think
that repeating just the final GSNR at the link-end transponder makes
most sense here. This is aligned with what we talked about at
yesterday's (on 2019-09-18 -- note that this is a backport from #261)
demo for Microsoft, after all.
2019-09-19 09:25:31 +02:00
Jan Kundrát
07de489d6b doc: fiber length summary in km, not meters
reading "80000m" is a bit more complex than just "80 km". Also let's add
a space between the numebr and the unit for better readability.
2019-09-19 09:25:31 +02:00
Jan Kundrát
acafc78456 Remove debug printing from propagate()
This is inspired by #293. The original issue was that the transponder
OSNR was not accounted for. Rather than making the propagate() and
propagate2() more complex, let's move the actual path printing to the
demo code. There's no secret sauce in there, it's just a simple
for-each-print thingy, so let's remove it from the library code.

fixes #262
2019-09-19 09:25:31 +02:00
Jonas Mårtensson
2faf8d2cdd - Fix output per-channel SNR to include contribution from add_drop_sonr and tx_osnr
- Avoid recalculating SNRs in transmission main example since they are already calculated and stored in the Transceiver class
- Also include per channel power (useful for checking tilt) and OSNR ASE in the output
2019-09-03 09:25:09 +02:00
Jan Kundrát
6f93b64f84 Simplify logic for showing per-channel results
As Jonas pointed out, the code used to contain a check for non-nan
values, effectively skipping channels where the Raman gain was not
explicitly computed.

Now that we do not introduce NaNs into some channels anymore, this
shortcut no longer works. We could either add explicit filtering for
only showing those channels which are covered by the Raman engine, but
then the result would be rather confusing in the non-Raman case. One
could also add another column with the simulated vs. approximated NLI,
but when I tried this, the output looked a bit cluttered.

I think that the best course of action for now is to just show info
about all channels (if asked by the user). So this is just a cleanup for
a condition which is now always on.
2019-09-02 21:10:20 +02:00
Jan Kundrát
182929cc96 Unify transmission_main_example and the Raman wrapper
There were just these substantial differences:

- the Raman code showed a per-channel SNR summary, this is now
  controlled via the `--show-channels` option

- when a Raman fiber is used the `--sim` option for specifying input
  simulation parameters is now mandatory

I'm therefore merging these two files even though we've rpeviously
decided not to do this -- consult the review comment at
https://github.com/Telecominfraproject/oopt-gnpy/pull/263#discussion_r310506082
and the discussion during this Tuesday's coders call). If this turns out
to be a problem for autodesign, we can always revert this.

One possible catch is that the final "SNR total" shows NaN for the
default Raman example. That's just the way the simulation engine works
right now, I'm afraid. The `--show-channels` options helps a lot.
2019-08-08 13:38:23 +02:00
Jan Kundrát
b7afb5f9d2 Exceptions for errors in network topologies 2019-05-30 12:39:10 +02:00
Jan Kundrát
58c16a59ac Distinguish between "equipment library errors" and other "config errors"
And because no code for these "other config errors" has been merged yet,
this is just a placeholder for future work.
2019-05-30 12:28:47 +02:00
Jan Kundrát
f09789f5ef Refactor color temrinal escaping into a common module
I have no idea which one of the existing pypi modules is best for these,
and given that we're using just two escape codes, I think it makes sense
not to bother with a more capable third-party module just for two magic
strings.
2019-05-30 12:25:53 +02:00
Jan Kundrát
71b157a8ba Infrastructure for reporting configuration errors via exceptions
Once the actual config-parsing code start raising these exceptions
instead of directly calling sys.exit(), the user experience would
deteriorate due to raw exception traces. There's little value in the
trace itself, so just wrap the whole config loading with pretty error
formatting.

We still do not point to a specific place where that error is defined
(such as a line/column in a given JSON file) because that information is
already lost by the time we perform these checks.

Also, these checks are largely open-coded ad-hoc stuff. Some required
items are not covered, raising KeyError instead. We should get a formal
schema for these...
2019-05-30 12:06:54 +02:00
Jean-Luc Auge
a3a53f3b06 info message in gain mode
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
2019-04-03 14:51:12 +02:00
Jean-Luc Auge
6d15f55304 bug fix : Roadms & Spans vs Roadm & Span
discrepancy between topology and eqpt_config json descriptions

Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
2019-04-03 14:08:34 +02:00
James Powell
f4537a538b interpolate fiber positions 2019-03-05 01:07:05 -05:00
James Powell
d6eb6f33d2 fixed ordering, display of SI details 2019-03-04 17:05:56 -05:00
James Powell
d9344287e4 tweaks for OFC 2019-03-04 13:58:09 -05:00
James Powell
3418c07512 changes for OFC demo 2019-03-04 12:35:12 -05:00
James Powell
5f8621c224 changes for OFC demo 2019-03-04 12:32:26 -05:00
James
b4407b1ff3 Merge branch 'develop' into fix-crash-source-dest 2019-01-22 10:12:18 -05:00
James
75f0aebe8f Merge pull request #193 from Orange-OpenSource/carrier_probe
Carrier probe
2019-01-22 10:09:47 -05:00
Jean-Luc Auge
bc9eee326a parametrization of the name matching dictionary
-names argument

Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
2019-01-14 17:17:58 +01:00
Jean-Luc Auge
771af4991c carrier probe point for Edfa and Fiber elements
save and be able to retrieve the carrier information processed by Edfa
and Fiber elements:
@ input & output of the element
- channel power: ase, nli, signal and total

Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
2019-01-14 12:20:45 +01:00
James
097fe3114e Merge pull request #156 from ojnas/power-range
improve power range handling - revised version
2018-12-18 11:56:47 -05:00
EstherLerouzic
88c2e2bd70 adding the example file used for disjunction testing
adding the counting feature on standard output
adding tsp nb in csv + small bug fixes
small fixes to improve stdout and csv printing
small bug fixes on service aggregation and automatic correction of names

Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
2018-11-21 09:12:52 +00:00
Jonas Mårtensson
5efbd17829 add help text 2018-11-20 15:27:54 +01:00
Jonas Mårtensson
fa3e54a747 change handling of verbosity argument 2018-11-20 14:57:28 +01:00
Jonas Mårtensson
dc867fa051 improve power range handling 2018-11-14 09:08:14 +01:00
Jonas Mårtensson
c168af46bc Update transmission_main_example.py 2018-10-30 17:37:50 +01:00
ojnas
215295efb1 changed source and destination handling 2018-10-25 15:25:28 +02:00
James Powell
c54ddb644a fix headers 2018-10-14 20:55:12 -04:00
Jean-Luc Auge
310d32dcea Generic write_csv in utils to save simulation results
tranmsission_main simulation results are saved to simulation_result.csv

Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
2018-09-13 14:30:33 +02:00