Search code examples
pythoncsvgraph-tool

How to create a graph in Python using a CSV File data by graph-tool?


I'm trying to create a graph with graph-tool (https://graph-tool.skewed.de) from csv file that content like:

A,B,50
A,C,34
C,D,55
D,D,80
A,D,90
B,D,78

Now I want to create a graph with A, B, C, D as nodes and the third column numbers as edges. I am using graph-tool library. The third column number shows the common items shared by A,B and A,C and so on.

I can do it by "networkx" (read_edgelist and etc) but I want to do it with graph-tool.


Solution

  • Assuming you already know how to read the CSV file in Python (for example, using the CSV library), The docs on the website explain how to do this very clearly.

    Something like

    import graph_tool
    g = Graph(directed=False)
    
    
    # this is the result of csv.parse(file)
    list_of_edges = [['A', 'B', 50], ['A','C',34], ['C','D',55], ['D','D',80], ['A','D',90], ['B','D',78]]
    
    vertices = {}
    
    for e in list_of_edges:
        if e[0] not in vertices:
            vertices[e[0]] = True
        if e[1] not in vertices:
            vertices[e[1]] = True
    
    
    for d in vertices:
        vertices[d] = g.add_vertex()
    
    for edge in list_of_edges:
        g.add_edge(vertices[edge[0]], vertices[edge[1]])