mirror of
https://github.com/Telecominfraproject/oopt-gnpy.git
synced 2025-10-30 01:32:21 +00:00
Merge branch 'fix-make-example-network-bidi' into develop
This commit is contained in:
@@ -1,25 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
from networkx import DiGraph
|
||||
from logging import getLogger
|
||||
|
||||
logger = getLogger('gnpy.core')
|
||||
|
||||
from . import elements
|
||||
|
||||
def network_from_json(json_data):
|
||||
# NOTE|dutc: we could use the following, but it would tie our data format
|
||||
# too closely to the graph library
|
||||
# from networkx import node_link_graph
|
||||
g = DiGraph()
|
||||
|
||||
nodes = {}
|
||||
for el in json_data['elements']:
|
||||
el = getattr(elements, el['type'])(el['id'], **el['metadata'])
|
||||
g.add_node(el)
|
||||
nodes[el.id] = el
|
||||
|
||||
for cx in json_data['connections']:
|
||||
from_node, to_node = nodes[cx['from_node']], nodes[cx['to_node']]
|
||||
g.add_edge(from_node, to_node)
|
||||
|
||||
return g
|
||||
from .execute import *
|
||||
from .network import *
|
||||
|
||||
2
core/execute.py
Normal file
2
core/execute.py
Normal file
@@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
23
core/network.py
Normal file
23
core/network.py
Normal file
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from networkx import DiGraph
|
||||
|
||||
from . import elements
|
||||
|
||||
def network_from_json(json_data):
|
||||
# NOTE|dutc: we could use the following, but it would tie our data format
|
||||
# too closely to the graph library
|
||||
# from networkx import node_link_graph
|
||||
g = DiGraph()
|
||||
|
||||
nodes = {}
|
||||
for el in json_data['elements']:
|
||||
el = getattr(elements, el['type'])(el['id'], **el['metadata'])
|
||||
g.add_node(el)
|
||||
nodes[el.id] = el
|
||||
|
||||
for cx in json_data['connections']:
|
||||
from_node, to_node = nodes[cx['from_node']], nodes[cx['to_node']]
|
||||
g.add_edge(from_node, to_node)
|
||||
|
||||
return g
|
||||
11
examples/Makefile
Normal file
11
examples/Makefile
Normal file
@@ -0,0 +1,11 @@
|
||||
REGIONS = europe asia conus
|
||||
TARGETS = $(foreach region,$(REGIONS),coronet.$(region).json)
|
||||
|
||||
all: $(TARGETS)
|
||||
|
||||
$(TARGETS): convert.py CORONET_Global_Topology.xls
|
||||
python $< -f $(subst .json,,$(subst coronet.,,$@)) > $@
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
-rm $(TARGETS) -f
|
||||
@@ -7,6 +7,7 @@ except ModuleNotFoundError:
|
||||
exit('Required: `pip install xlrd`')
|
||||
from argparse import ArgumentParser
|
||||
from collections import namedtuple, Counter
|
||||
from itertools import chain
|
||||
from json import dumps
|
||||
|
||||
Node = namedtuple('Node', 'city state country region latitude longitude')
|
||||
@@ -68,7 +69,7 @@ if __name__ == '__main__':
|
||||
nodes, links = parse_excel(args)
|
||||
|
||||
if args.filter_region:
|
||||
nodes = [n for n in nodes if n.region in args.filter_region]
|
||||
nodes = [n for n in nodes if n.region.lower() in args.filter_region]
|
||||
cities = {n.city for n in nodes}
|
||||
links = [lnk for lnk in links if lnk.from_city in cities and
|
||||
lnk.to_city in cities]
|
||||
@@ -92,12 +93,21 @@ if __name__ == '__main__':
|
||||
'type': 'Fiber'}
|
||||
for x in links],
|
||||
'connections':
|
||||
list(chain.from_iterable(zip( # put bidi next to each other
|
||||
[{'from_node': x.from_city,
|
||||
'to_node': f'fiber ({x.from_city} → {x.to_city})'}
|
||||
for x in links] +
|
||||
for x in links],
|
||||
[{'from_node': f'fiber ({x.from_city} → {x.to_city})',
|
||||
'to_node': x.from_city}
|
||||
for x in links])))
|
||||
+
|
||||
list(chain.from_iterable(zip(
|
||||
[{'from_node': f'fiber ({x.from_city} → {x.to_city})',
|
||||
'to_node': x.to_city}
|
||||
for x in links]
|
||||
for x in links],
|
||||
[{'from_node': x.to_city,
|
||||
'to_node': f'fiber ({x.from_city} → {x.to_city})'}
|
||||
for x in links])))
|
||||
}
|
||||
|
||||
print(dumps(data, indent=2))
|
||||
|
||||
@@ -266,113 +266,225 @@
|
||||
"from_node": "Bangkok",
|
||||
"to_node": "fiber (Bangkok \u2192 Delhi)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Bangkok \u2192 Delhi)",
|
||||
"to_node": "Bangkok"
|
||||
},
|
||||
{
|
||||
"from_node": "Bangkok",
|
||||
"to_node": "fiber (Bangkok \u2192 Hong_Kong)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Bangkok \u2192 Hong_Kong)",
|
||||
"to_node": "Bangkok"
|
||||
},
|
||||
{
|
||||
"from_node": "Beijing",
|
||||
"to_node": "fiber (Beijing \u2192 Seoul)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Beijing \u2192 Seoul)",
|
||||
"to_node": "Beijing"
|
||||
},
|
||||
{
|
||||
"from_node": "Beijing",
|
||||
"to_node": "fiber (Beijing \u2192 Shanghai)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Beijing \u2192 Shanghai)",
|
||||
"to_node": "Beijing"
|
||||
},
|
||||
{
|
||||
"from_node": "Delhi",
|
||||
"to_node": "fiber (Delhi \u2192 Mumbai)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Delhi \u2192 Mumbai)",
|
||||
"to_node": "Delhi"
|
||||
},
|
||||
{
|
||||
"from_node": "Hong_Kong",
|
||||
"to_node": "fiber (Hong_Kong \u2192 Shanghai)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Hong_Kong \u2192 Shanghai)",
|
||||
"to_node": "Hong_Kong"
|
||||
},
|
||||
{
|
||||
"from_node": "Hong_Kong",
|
||||
"to_node": "fiber (Hong_Kong \u2192 Sydney)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Hong_Kong \u2192 Sydney)",
|
||||
"to_node": "Hong_Kong"
|
||||
},
|
||||
{
|
||||
"from_node": "Hong_Kong",
|
||||
"to_node": "fiber (Hong_Kong \u2192 Taipei)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Hong_Kong \u2192 Taipei)",
|
||||
"to_node": "Hong_Kong"
|
||||
},
|
||||
{
|
||||
"from_node": "Honolulu",
|
||||
"to_node": "fiber (Honolulu \u2192 Sydney)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Honolulu \u2192 Sydney)",
|
||||
"to_node": "Honolulu"
|
||||
},
|
||||
{
|
||||
"from_node": "Honolulu",
|
||||
"to_node": "fiber (Honolulu \u2192 Taipei)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Honolulu \u2192 Taipei)",
|
||||
"to_node": "Honolulu"
|
||||
},
|
||||
{
|
||||
"from_node": "Mumbai",
|
||||
"to_node": "fiber (Mumbai \u2192 Singapore)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Mumbai \u2192 Singapore)",
|
||||
"to_node": "Mumbai"
|
||||
},
|
||||
{
|
||||
"from_node": "Seoul",
|
||||
"to_node": "fiber (Seoul \u2192 Tokyo)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Seoul \u2192 Tokyo)",
|
||||
"to_node": "Seoul"
|
||||
},
|
||||
{
|
||||
"from_node": "Singapore",
|
||||
"to_node": "fiber (Singapore \u2192 Sydney)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Singapore \u2192 Sydney)",
|
||||
"to_node": "Singapore"
|
||||
},
|
||||
{
|
||||
"from_node": "Taipei",
|
||||
"to_node": "fiber (Taipei \u2192 Tokyo)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Taipei \u2192 Tokyo)",
|
||||
"to_node": "Taipei"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Bangkok \u2192 Delhi)",
|
||||
"to_node": "Delhi"
|
||||
},
|
||||
{
|
||||
"from_node": "Delhi",
|
||||
"to_node": "fiber (Bangkok \u2192 Delhi)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Bangkok \u2192 Hong_Kong)",
|
||||
"to_node": "Hong_Kong"
|
||||
},
|
||||
{
|
||||
"from_node": "Hong_Kong",
|
||||
"to_node": "fiber (Bangkok \u2192 Hong_Kong)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Beijing \u2192 Seoul)",
|
||||
"to_node": "Seoul"
|
||||
},
|
||||
{
|
||||
"from_node": "Seoul",
|
||||
"to_node": "fiber (Beijing \u2192 Seoul)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Beijing \u2192 Shanghai)",
|
||||
"to_node": "Shanghai"
|
||||
},
|
||||
{
|
||||
"from_node": "Shanghai",
|
||||
"to_node": "fiber (Beijing \u2192 Shanghai)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Delhi \u2192 Mumbai)",
|
||||
"to_node": "Mumbai"
|
||||
},
|
||||
{
|
||||
"from_node": "Mumbai",
|
||||
"to_node": "fiber (Delhi \u2192 Mumbai)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Hong_Kong \u2192 Shanghai)",
|
||||
"to_node": "Shanghai"
|
||||
},
|
||||
{
|
||||
"from_node": "Shanghai",
|
||||
"to_node": "fiber (Hong_Kong \u2192 Shanghai)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Hong_Kong \u2192 Sydney)",
|
||||
"to_node": "Sydney"
|
||||
},
|
||||
{
|
||||
"from_node": "Sydney",
|
||||
"to_node": "fiber (Hong_Kong \u2192 Sydney)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Hong_Kong \u2192 Taipei)",
|
||||
"to_node": "Taipei"
|
||||
},
|
||||
{
|
||||
"from_node": "Taipei",
|
||||
"to_node": "fiber (Hong_Kong \u2192 Taipei)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Honolulu \u2192 Sydney)",
|
||||
"to_node": "Sydney"
|
||||
},
|
||||
{
|
||||
"from_node": "Sydney",
|
||||
"to_node": "fiber (Honolulu \u2192 Sydney)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Honolulu \u2192 Taipei)",
|
||||
"to_node": "Taipei"
|
||||
},
|
||||
{
|
||||
"from_node": "Taipei",
|
||||
"to_node": "fiber (Honolulu \u2192 Taipei)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Mumbai \u2192 Singapore)",
|
||||
"to_node": "Singapore"
|
||||
},
|
||||
{
|
||||
"from_node": "Singapore",
|
||||
"to_node": "fiber (Mumbai \u2192 Singapore)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Seoul \u2192 Tokyo)",
|
||||
"to_node": "Tokyo"
|
||||
},
|
||||
{
|
||||
"from_node": "Tokyo",
|
||||
"to_node": "fiber (Seoul \u2192 Tokyo)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Singapore \u2192 Sydney)",
|
||||
"to_node": "Sydney"
|
||||
},
|
||||
{
|
||||
"from_node": "Sydney",
|
||||
"to_node": "fiber (Singapore \u2192 Sydney)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Taipei \u2192 Tokyo)",
|
||||
"to_node": "Tokyo"
|
||||
},
|
||||
{
|
||||
"from_node": "Tokyo",
|
||||
"to_node": "fiber (Taipei \u2192 Tokyo)"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -286,121 +286,241 @@
|
||||
"from_node": "Amsterdam",
|
||||
"to_node": "fiber (Amsterdam \u2192 Berlin)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Amsterdam \u2192 Berlin)",
|
||||
"to_node": "Amsterdam"
|
||||
},
|
||||
{
|
||||
"from_node": "Amsterdam",
|
||||
"to_node": "fiber (Amsterdam \u2192 Brussels)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Amsterdam \u2192 Brussels)",
|
||||
"to_node": "Amsterdam"
|
||||
},
|
||||
{
|
||||
"from_node": "Amsterdam",
|
||||
"to_node": "fiber (Amsterdam \u2192 Frankfurt)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Amsterdam \u2192 Frankfurt)",
|
||||
"to_node": "Amsterdam"
|
||||
},
|
||||
{
|
||||
"from_node": "Berlin",
|
||||
"to_node": "fiber (Berlin \u2192 Warsaw)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Berlin \u2192 Warsaw)",
|
||||
"to_node": "Berlin"
|
||||
},
|
||||
{
|
||||
"from_node": "Brussels",
|
||||
"to_node": "fiber (Brussels \u2192 London)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Brussels \u2192 London)",
|
||||
"to_node": "Brussels"
|
||||
},
|
||||
{
|
||||
"from_node": "Bucharest",
|
||||
"to_node": "fiber (Bucharest \u2192 Istanbul)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Bucharest \u2192 Istanbul)",
|
||||
"to_node": "Bucharest"
|
||||
},
|
||||
{
|
||||
"from_node": "Bucharest",
|
||||
"to_node": "fiber (Bucharest \u2192 Warsaw)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Bucharest \u2192 Warsaw)",
|
||||
"to_node": "Bucharest"
|
||||
},
|
||||
{
|
||||
"from_node": "Frankfurt",
|
||||
"to_node": "fiber (Frankfurt \u2192 Vienna)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Frankfurt \u2192 Vienna)",
|
||||
"to_node": "Frankfurt"
|
||||
},
|
||||
{
|
||||
"from_node": "Istanbul",
|
||||
"to_node": "fiber (Istanbul \u2192 Rome)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Istanbul \u2192 Rome)",
|
||||
"to_node": "Istanbul"
|
||||
},
|
||||
{
|
||||
"from_node": "London",
|
||||
"to_node": "fiber (London \u2192 Paris)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (London \u2192 Paris)",
|
||||
"to_node": "London"
|
||||
},
|
||||
{
|
||||
"from_node": "Madrid",
|
||||
"to_node": "fiber (Madrid \u2192 Paris)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Madrid \u2192 Paris)",
|
||||
"to_node": "Madrid"
|
||||
},
|
||||
{
|
||||
"from_node": "Madrid",
|
||||
"to_node": "fiber (Madrid \u2192 Zurich)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Madrid \u2192 Zurich)",
|
||||
"to_node": "Madrid"
|
||||
},
|
||||
{
|
||||
"from_node": "Rome",
|
||||
"to_node": "fiber (Rome \u2192 Vienna)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Rome \u2192 Vienna)",
|
||||
"to_node": "Rome"
|
||||
},
|
||||
{
|
||||
"from_node": "Rome",
|
||||
"to_node": "fiber (Rome \u2192 Zurich)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Rome \u2192 Zurich)",
|
||||
"to_node": "Rome"
|
||||
},
|
||||
{
|
||||
"from_node": "Vienna",
|
||||
"to_node": "fiber (Vienna \u2192 Warsaw)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Vienna \u2192 Warsaw)",
|
||||
"to_node": "Vienna"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Amsterdam \u2192 Berlin)",
|
||||
"to_node": "Berlin"
|
||||
},
|
||||
{
|
||||
"from_node": "Berlin",
|
||||
"to_node": "fiber (Amsterdam \u2192 Berlin)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Amsterdam \u2192 Brussels)",
|
||||
"to_node": "Brussels"
|
||||
},
|
||||
{
|
||||
"from_node": "Brussels",
|
||||
"to_node": "fiber (Amsterdam \u2192 Brussels)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Amsterdam \u2192 Frankfurt)",
|
||||
"to_node": "Frankfurt"
|
||||
},
|
||||
{
|
||||
"from_node": "Frankfurt",
|
||||
"to_node": "fiber (Amsterdam \u2192 Frankfurt)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Berlin \u2192 Warsaw)",
|
||||
"to_node": "Warsaw"
|
||||
},
|
||||
{
|
||||
"from_node": "Warsaw",
|
||||
"to_node": "fiber (Berlin \u2192 Warsaw)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Brussels \u2192 London)",
|
||||
"to_node": "London"
|
||||
},
|
||||
{
|
||||
"from_node": "London",
|
||||
"to_node": "fiber (Brussels \u2192 London)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Bucharest \u2192 Istanbul)",
|
||||
"to_node": "Istanbul"
|
||||
},
|
||||
{
|
||||
"from_node": "Istanbul",
|
||||
"to_node": "fiber (Bucharest \u2192 Istanbul)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Bucharest \u2192 Warsaw)",
|
||||
"to_node": "Warsaw"
|
||||
},
|
||||
{
|
||||
"from_node": "Warsaw",
|
||||
"to_node": "fiber (Bucharest \u2192 Warsaw)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Frankfurt \u2192 Vienna)",
|
||||
"to_node": "Vienna"
|
||||
},
|
||||
{
|
||||
"from_node": "Vienna",
|
||||
"to_node": "fiber (Frankfurt \u2192 Vienna)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Istanbul \u2192 Rome)",
|
||||
"to_node": "Rome"
|
||||
},
|
||||
{
|
||||
"from_node": "Rome",
|
||||
"to_node": "fiber (Istanbul \u2192 Rome)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (London \u2192 Paris)",
|
||||
"to_node": "Paris"
|
||||
},
|
||||
{
|
||||
"from_node": "Paris",
|
||||
"to_node": "fiber (London \u2192 Paris)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Madrid \u2192 Paris)",
|
||||
"to_node": "Paris"
|
||||
},
|
||||
{
|
||||
"from_node": "Paris",
|
||||
"to_node": "fiber (Madrid \u2192 Paris)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Madrid \u2192 Zurich)",
|
||||
"to_node": "Zurich"
|
||||
},
|
||||
{
|
||||
"from_node": "Zurich",
|
||||
"to_node": "fiber (Madrid \u2192 Zurich)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Rome \u2192 Vienna)",
|
||||
"to_node": "Vienna"
|
||||
},
|
||||
{
|
||||
"from_node": "Vienna",
|
||||
"to_node": "fiber (Rome \u2192 Vienna)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Rome \u2192 Zurich)",
|
||||
"to_node": "Zurich"
|
||||
},
|
||||
{
|
||||
"from_node": "Zurich",
|
||||
"to_node": "fiber (Rome \u2192 Zurich)"
|
||||
},
|
||||
{
|
||||
"from_node": "fiber (Vienna \u2192 Warsaw)",
|
||||
"to_node": "Warsaw"
|
||||
},
|
||||
{
|
||||
"from_node": "Warsaw",
|
||||
"to_node": "fiber (Vienna \u2192 Warsaw)"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user