Я использую networkx для создания файлов graphml. У меня есть параллельные ссылки, поэтому я использую функцию MultiDiGraph. После генерации файла я открываю его в yED, но у меня нет всех соединений, которые я создал между узлами. У меня есть только те соединения (ребра), которые созданы для параллельных связей. Я понял, что это потому, что файл graphml имеет только два идентификатора ребер ('0' и '1') для всех ребер. Я изменил файл и установил уникальный идентификатор для каждого края. Например:
<edge id="0" source="Hostname_A" target="Hostname_B">
<data key="d1">100GE1/0/0</data>
<data key="d2">100GE1/0/0</data>
</edge>
<edge id="1" source="Hostname_A" target="Hostname_B">
<data key="d1">100GE1/0/1</data>
<data key="d2">100GE1/0/1</data>
</edge>
<edge id="2" source="Hostname_B" target="Hostname_C">
<data key="d1">100GE1/1/0</data>
<data key="d2">100GE1/0/0</data>
</edge>
Если я делаю это, то все работает нормально в YED. Есть ли способ изменить идентификаторы ребер в сети?
Я думал, что мог бы изменить 'идентификатор края', если бы я установил его как атрибут, подобный этому:
g.add_edge(host,neighbor,source = intsource, destination = intdest, id=idcount)
Но я понял, что это не изменило идентификатор ребра, только добавил еще один атрибут для этого ребра:
<edge id="0" source="Hostname_A" target="Hostname_B">
<data key="d1">100GE1/0/0</data>
<data key="d2">100GE1/0/0</data>
<data key="d3">1</data> <-- This is the idcount value
</edge>