Search code examples
pythonnetworkxgraphlab

NetworkX to GraphLab Connected Component Conversion


What is the GraphLab equivalent to the following NetworkX code?
for nodeset in nx.connected_components(G):

In GraphLab, I would like to obtain a set of Vertex IDs for each connected component.


Solution

  • The component IDs returned by graphlab.graph_analytics.connected_components are in the form of an SFrame, so the easiest way to get the IDs for a given component is by filtering the SFrame:

    # Make a graph with two components.
    import graphlab
    G = graphlab.SGraph().add_edges(
        [graphlab.Edge(i, i+1) for i in range(3)])
    G = G.add_edges([graphlab.Edge(i, i+1) for i in range(4, 6)])
    
    # Get the connected components.
    cc = graphlab.connected_components.create(G)
    
    # Find the vertices for a given component (0, in this example).
    nodes = cc.component_id.filter_by(0, 'component_id')
    print nodes
    
    +------+--------------+
    | __id | component_id |
    +------+--------------+
    |  5   |      0       |
    |  6   |      0       |
    |  4   |      0       |
    +------+--------------+
    [3 rows x 2 columns]