network_from_networkx#

network_from_networkx(G)[source]#

Add data to an OpenPNM Network from a undirected NetworkX graph object.

Parameters:

G (networkx.classes.graph.Graph Object) – The NetworkX graph. G should be undirected. The numbering of nodes should be numeric (int’s), zero-based and should not contain any gaps, i.e. G.nodes() = [0,1,3,4,5] is not allowed and should be mapped to G.nodes() = [0,1,2,3,4].

Returns:

network – An OpenPNM network dictionary

Return type:

dict

Notes

1. Each node in a NetworkX object (i.e. G) can be assigned properties using syntax like G.node[n]['diameter'] = 0.5 where n is the node number. There is no need to precede the property name with any indication that it is pore data such as 'pore_'. OpenPNM will prepend 'pore.' to each property name.

2. Since 'pore.coords' is so central to OpenPNM it should be specified in the NetworkX object as 'coords', and the [X, Y, Z] coordinates of each node should be a 1x3 list.

3. Edges in a NetworkX object are accessed using the index numbers of the two nodes it connects, such as G.adj[2][3]['length'] = 0.1 indicating the edge that connects nodes 2 and 3. There is no need to precede the property name with any indication that it is throat data such as 'throat_'. OpenPNM will prepend 'throat.' to each property name.

4. The 'throat.conns' property is essential to OpenPNM, but this does NOT need to be specified explicitly as a property in NetworkX. The connectivity is embedded into the network representation and is extracted by OpenPNM.