Edgelist of a graph

I have the follwoing graph in graphml format

<?xml version="1.0"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns&#10;http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd&quot;&gt;&#10;">
	<graph id="G" edgedefault="undirected">
		<node id="0" />
		<node id="1" />
		<node id="2" />
		<node id="3" />
		<node id="4" />
		<node id="5" />
		<node id="6" />
		<node id="7" />
		<node id="8" />
		<node id="9" />
		<node id="10" />
		<node id="11" />
		<node id="12" />
		<node id="13" />
		<node id="14" />
		<node id="15" />
		<node id="16" />
		<node id="17" />
		<node id="18" />
		<node id="19" />
		<node id="20" />
		<node id="21" />
		<node id="22" />
		<node id="23" />
		<node id="24" />
		<node id="25" />
		<node id="26" />
		<node id="27" />
		<node id="28" />
		<node id="29" />
		<node id="30" />
		<node id="31" />
		<node id="32" />
		<node id="33" />
		<node id="34" />
		<node id="35" />
		<node id="36" />
		<node id="37" />
		<node id="38" />
		<node id="39" />
		<node id="40" />
		<node id="41" />
		<node id="42" />
		<node id="43" />
		<node id="44" />
		<node id="45" />
		<node id="46" />
		<node id="47" />
		<node id="48" />
		<node id="49" />
		<node id="50" />
		<node id="51" />
		<node id="52" />
		<node id="53" />
		<node id="54" />
		<node id="55" />
		<node id="56" />
		<node id="57" />
		<node id="58" />
		<node id="59" />
		<node id="60" />
		<node id="61" />
		<node id="62" />
		<node id="63" />
		<node id="64" />
		<node id="65" />
		<node id="66" />
		<node id="67" />
		<node id="68" />
		<node id="69" />
		<node id="70" />
		<node id="71" />
		<node id="72" />
		<node id="73" />
		<node id="74" />
		<node id="75" />
		<node id="76" />
		<node id="77" />
		<node id="78" />
		<node id="79" />
		<node id="80" />
		<node id="81" />
		<node id="82" />
		<node id="83" />
		<node id="84" />
		<node id="85" />
		<node id="86" />
		<node id="87" />
		<node id="88" />
		<node id="89" />
		<node id="90" />
		<node id="91" />
		<node id="92" />
		<node id="93" />
		<node id="94" />
		<node id="95" />
		<node id="96" />
		<node id="97" />
		<node id="98" />
		<node id="99" />
		<node id="100" />
		<node id="101" />
		<node id="102" />
		<node id="103" />
		<node id="104" />
		<node id="105" />
		<node id="106" />
		<node id="107" />
		<node id="108" />
		<node id="109" />
		<node id="110" />
		<node id="111" />
		<node id="112" />
		<node id="113" />
		<node id="114" />
		<node id="115" />
		<node id="116" />
		<node id="117" />
		<edge id="0" source="0" target="1" />
		<edge id="1" source="0" target="2" />
		<edge id="2" source="3" target="4" />
		<edge id="3" source="2" target="4" />
		<edge id="4" source="4" target="5" />
		<edge id="5" source="5" target="6" />
		<edge id="6" source="7" target="8" />
		<edge id="7" source="7" target="4" />
		<edge id="9" source="8" target="9" />
		<edge id="10" source="3" target="10" />
		<edge id="11" source="4" target="10" />
		<edge id="12" source="10" target="11" />
		<edge id="13" source="1" target="11" />
		<edge id="14" source="2" target="11" />
		<edge id="15" source="6" target="11" />
		<edge id="16" source="10" target="12" />
		<edge id="17" source="11" target="13" />
		<edge id="18" source="12" target="14" />
		<edge id="19" source="13" target="14" />
		<edge id="20" source="11" target="15" />
		<edge id="21" source="14" target="16" />
		<edge id="22" source="15" target="16" />
		<edge id="23" source="16" target="17" />
		<edge id="24" source="17" target="18" />
		<edge id="25" source="18" target="19" />
		<edge id="26" source="14" target="18" />
		<edge id="27" source="19" target="20" />
		<edge id="28" source="20" target="21" />
		<edge id="29" source="21" target="22" />
		<edge id="30" source="22" target="23" />
		<edge id="31" source="22" target="24" />
		<edge id="32" source="25" target="24" />
		<edge id="34" source="24" target="26" />
		<edge id="35" source="26" target="27" />
		<edge id="36" source="27" target="28" />
		<edge id="37" source="29" target="16" />
		<edge id="39" source="7" target="29" />
		<edge id="40" source="25" target="29" />
		<edge id="41" source="16" target="30" />
		<edge id="42" source="28" target="30" />
		<edge id="43" source="22" target="31" />
		<edge id="44" source="30" target="31" />
		<edge id="45" source="26" target="31" />
		<edge id="46" source="14" target="32" />
		<edge id="47" source="18" target="33" />
		<edge id="48" source="34" target="35" />
		<edge id="49" source="34" target="36" />
		<edge id="50" source="32" target="36" />
		<edge id="51" source="33" target="35" />
		<edge id="52" source="33" target="36" />
		<edge id="53" source="37" target="36" />
		<edge id="55" source="36" target="38" />
		<edge id="56" source="36" target="39" />
		<edge id="57" source="29" target="37" />
		<edge id="58" source="38" target="39" />
		<edge id="59" source="39" target="40" />
		<edge id="60" source="39" target="41" />
		<edge id="61" source="40" target="41" />
		<edge id="62" source="42" target="43" />
		<edge id="63" source="33" target="42" />
		<edge id="64" source="43" target="44" />
		<edge id="65" source="44" target="45" />
		<edge id="66" source="45" target="46" />
		<edge id="67" source="45" target="47" />
		<edge id="68" source="46" target="48" />
		<edge id="69" source="41" target="48" />
		<edge id="71" source="44" target="48" />
		<edge id="72" source="47" target="48" />
		<edge id="73" source="48" target="49" />
		<edge id="74" source="48" target="50" />
		<edge id="75" source="50" target="51" />
		<edge id="76" source="51" target="52" />
		<edge id="77" source="52" target="53" />
		<edge id="78" source="48" target="53" />
		<edge id="80" source="53" target="54" />
		<edge id="81" source="53" target="55" />
		<edge id="82" source="54" target="55" />
		<edge id="83" source="55" target="56" />
		<edge id="84" source="49" target="56" />
		<edge id="85" source="55" target="57" />
		<edge id="86" source="50" target="57" />
		<edge id="87" source="53" target="58" />
		<edge id="88" source="55" target="58" />
		<edge id="90" source="54" target="58" />
		<edge id="91" source="58" target="59" />
		<edge id="92" source="58" target="60" />
		<edge id="93" source="59" target="60" />
		<edge id="94" source="59" target="61" />
		<edge id="95" source="60" target="61" />
		<edge id="96" source="62" target="58" />
		<edge id="98" source="62" target="63" />
		<edge id="99" source="63" target="60" />
		<edge id="101" source="37" target="64" />
		<edge id="102" source="63" target="64" />
		<edge id="103" source="48" target="65" />
		<edge id="105" source="61" target="65" />
		<edge id="106" source="61" target="66" />
		<edge id="107" source="64" target="65" />
		<edge id="109" source="65" target="66" />
		<edge id="110" source="64" target="67" />
		<edge id="111" source="46" target="68" />
		<edge id="112" source="48" target="68" />
		<edge id="113" source="67" target="68" />
		<edge id="115" source="68" target="69" />
		<edge id="116" source="23" target="69" />
		<edge id="117" source="69" target="70" />
		<edge id="118" source="23" target="71" />
		<edge id="119" source="70" target="71" />
		<edge id="120" source="70" target="72" />
		<edge id="121" source="69" target="73" />
		<edge id="122" source="69" target="74" />
		<edge id="123" source="68" target="74" />
		<edge id="124" source="73" target="74" />
		<edge id="125" source="75" target="76" />
		<edge id="126" source="68" target="76" />
		<edge id="127" source="74" target="76" />
		<edge id="128" source="76" target="77" />
		<edge id="129" source="77" target="78" />
		<edge id="130" source="76" target="79" />
		<edge id="132" source="78" target="79" />
		<edge id="133" source="67" target="80" />
		<edge id="134" source="80" target="79" />
		<edge id="136" source="76" target="81" />
		<edge id="137" source="81" target="82" />
		<edge id="138" source="82" target="83" />
		<edge id="139" source="82" target="84" />
		<edge id="140" source="83" target="84" />
		<edge id="141" source="84" target="85" />
		<edge id="142" source="85" target="86" />
		<edge id="143" source="84" target="87" />
		<edge id="144" source="84" target="88" />
		<edge id="145" source="87" target="88" />
		<edge id="146" source="88" target="89" />
		<edge id="148" source="89" target="90" />
		<edge id="149" source="88" target="91" />
		<edge id="151" source="90" target="91" />
		<edge id="152" source="91" target="92" />
		<edge id="153" source="91" target="93" />
		<edge id="154" source="92" target="93" />
		<edge id="155" source="93" target="94" />
		<edge id="156" source="79" target="95" />
		<edge id="157" source="81" target="95" />
		<edge id="158" source="93" target="95" />
		<edge id="159" source="79" target="96" />
		<edge id="160" source="79" target="97" />
		<edge id="161" source="79" target="98" />
		<edge id="162" source="91" target="99" />
		<edge id="163" source="93" target="99" />
		<edge id="164" source="94" target="95" />
		<edge id="165" source="95" target="96" />
		<edge id="166" source="97" target="99" />
		<edge id="167" source="98" target="99" />
		<edge id="168" source="99" target="100" />
		<edge id="169" source="91" target="101" />
		<edge id="170" source="100" target="101" />
		<edge id="171" source="99" target="102" />
		<edge id="172" source="99" target="103" />
		<edge id="173" source="102" target="103" />
		<edge id="174" source="102" target="104" />
		<edge id="175" source="99" target="105" />
		<edge id="176" source="103" target="104" />
		<edge id="177" source="104" target="105" />
		<edge id="178" source="104" target="106" />
		<edge id="179" source="104" target="107" />
		<edge id="180" source="105" target="106" />
		<edge id="181" source="107" target="108" />
		<edge id="182" source="102" target="109" />
		<edge id="183" source="108" target="109" />
		<edge id="184" source="109" target="110" />
		<edge id="185" source="109" target="111" />
		<edge id="186" source="16" target="112" />
		<edge id="187" source="31" target="112" />
		<edge id="188" source="31" target="113" />
		<edge id="189" source="26" target="114" />
		<edge id="190" source="113" target="114" />
		<edge id="191" source="67" target="115" />
		<edge id="192" source="11" target="116" />
		<edge id="193" source="74" target="117" />
		<edge id="194" source="75" target="117" />
	</graph>
</graphml>

I simply create a graph based on it and then read the nodes and edge list as follows:

N=vertices(G)|> collect
E=Tuple.(edges(G))

If I print out the nodes and edges I got edges less than the ones in the graphml, what is the way of reading exactly the edges as they are in the file

[(1, 3), (1, 9), (2, 4), (2, 8), (3, 4), (3, 11), (4, 5), (4, 8), (5, 10), (6, 4), (6, 7), (6, 27), (7, 101), (8, 11), 
(8, 12), (9, 11), (10, 11), (11, 13), (11, 15), (11, 117), (12, 14), (13, 14), (14, 16), (14, 18), (14, 31), (15, 16), (16, 17), (16, 29), (16, 114), (17, 18), (18, 19), (18, 32), (19, 20), (20, 21), (21, 22), (22, 24), (22, 63), (22, 99), (23, 24), (23, 27), (24, 25), (25, 26), (25, 99), (25, 115), (26, 28), (27, 16), (27, 33), (28, 29), (29, 99), (30, 34), (30, 102), (31, 34), (32, 34), (32, 38), (32, 102), (33, 34), (33, 59), (34, 35), (34, 36), (35, 36), (36, 37), (36, 43), (37, 43), (38, 39), (39, 40), (40, 41), (40, 45), (41, 42), (41, 44), (42, 45), (42, 62), (43, 45), (44, 45), (45, 46), (45, 49), (45, 52), (45, 60), (45, 62), (46, 47), (46, 104), (47, 48), (48, 49), (49, 50), (49, 51), (49, 53), (50, 51), (50, 53), (51, 53), (51, 103), (51, 104), (52, 103), (53, 54), (53, 55), (54, 55), (54, 58), (55, 58), (56, 53), (56, 57), (57, 55), (57, 59), (58, 60), (58, 105), (59, 60), (59, 61), (60, 105), (61, 62), (61, 72), (61, 116), (62, 64), (62, 68), (62, 69), (63, 64), (63, 106), (64, 65), (64, 66), (64, 68), (65, 106), (65, 107), (66, 68), (67, 69), (67, 118), (68, 69), (68, 118), (69, 70), (69, 73), (69, 85), (70, 71), (71, 85), (72, 85), (73, 74), (73, 87), (74, 75), (74, 76), (75, 76), (76, 77), (76, 78), (76, 79), (77, 108), (78, 79), (79, 80), (79, 82), (80, 81), (81, 82), (82, 83), (82, 84), (82, 90), (82, 110), (83, 84), (84, 86), (84, 87), (84, 90), (85, 87), (85, 88), (85, 89), (85, 109), (86, 87), (87, 109), (88, 90), (89, 90), (90, 91), (90, 92), (90, 93), (90, 95), (91, 110), (92, 93), (92, 94), (92, 98), (93, 94), (94, 95), (94, 96), (94, 111), (95, 111), (96, 97), (97, 98), (98, 112), (98, 113), (99, 100), (99, 114), (100, 115)]

Hey there! It’s hard to know where to start currently, could you provide a minimal example so that it’s easier to help you?

1 Like

Hey, the idea is the following

G=loadgraph("Ieeebus.graphml", "G" , GraphIO.GraphML.GraphMLFormat())
E=Tuple.(edges(G))
println(E)

if I saved the xml file to be “Ieeebus.graphml” and then read the graph as graphml, get the edges and print it I don’t get the same edges in the xml file, node 117 does not appear in any edge, how I can get exactly the same edges with the same indices and all.

Might it be because of the zero-based index in the graphml file?

<node id="0" />

so what should I do, this is how the graph is defined

I think the issue is that the node ids in the GraphML (which I guess could be arbitrary names) do not correspond to the internal ids in the Graphs.jl graph, which uses contiguous interger ids for efficiency. Here’s the source code for the function that reads the graph from the GraphML. You could adapt that to also return the nodes dict which contains the mapping from internal ids to GraphML ids.

@Jakob 's analysis is correct. Several methods which might solve this problem are:

  1. Accept the new vertex numbers (Graphs are logically identical with respect to vertex names).

  2. Fix-up reading function, as @Jakob suggested.

  3. Use MetaGraphsNext.jl package to add labels to nodes with the right node numbers (and perhaps more useful metadata).

  4. Before saving the graph (probably from 0-based language such as python), add a 0-vertex with no edges, and then do a graph union with the desired graph. Afterwards, just delete the <node id="0" /> line from the XML file.

2 Likes