Question

I have a GML(Graph (not Graffiti) Modeling Language) file from which I want to create a mapping of IDs to labels. I am at a loss as to how I can do this since my list manipulations do not seem to work. I tried using the example which specifies how to use two delimiters, but it would not work on my file.

Can someone please guide me?

The GML file is arranged as follows:

graph [
  node [
    id 0
    label "24"
  ]
  node [
    id 1
    label "25"
  ]
  node [
    id 2
    label "26"
  ]
  node [
    id 3
    label "27"
  ]
  node [
    id 4
    label "20"
  ]
  node [
    id 5
    label "21"
  ]
(... some more nodes)
  edge [
    source 0
    target 75
    weight 4
  ]
  edge [
    source 0
    target 68
    weight 2
  ]
(many more edges)
]

I want to extract the data in each node block and create a mapping of the node ID to the node label. For example, the first node's mapping would be 0->24 and so on. I am not worried about the edge information.

Thanks in advance for any help.

Was it helpful?

Solution

If you can use NetworkX (Python) you can read the file (t.gml is your file) like this and get the mapping

In [1]: import networkx as nx

In [2]: G = nx.read_gml('t.gml')

In [3]: G.node
Out[3]: 
{0: {'id': 0, 'label': u'24'},
 1: {'id': 1, 'label': u'25'},
 2: {'id': 2, 'label': u'26'},
 3: {'id': 3, 'label': u'27'},
 4: {'id': 4, 'label': u'20'},
 5: {'id': 5, 'label': u'21'}}

e.g.

In [4]: G.node[0]['label']
Out[4]: u'24'
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top