openpnm.topotools.find_path(network, pore_pairs, weights=None)[source]

Find the shortest path between pairs of pores.

  • network (GenericNetwork) – The Network object on which the search should be performed

  • pore_pairs (array_like) – An N x 2 array containing N pairs of pores for which the shortest path is sought.

  • weights (array_like, optional) – An Nt-long list of throat weights for the search. Typically this would be the throat lengths, but could also be used to represent the phase configuration. If no weights are given then the standard topological connections of the Network are used.


  • A dictionary containing both the pores and throats that define the

  • shortest path connecting each pair of input pores.


The shortest path is found using Dijkstra’s algorithm included in the scipy.sparse.csgraph module

TODO: The returned throat path contains the correct values, but not necessarily in the true order


>>> import openpnm as op
>>> pn =[3, 3, 3])
>>> a = op.topotools.find_path(network=pn, pore_pairs=[[0, 4], [0, 10]])
>>> a['pores']
[array([0, 1, 4]), array([ 0,  1, 10])]
>>> a['throats']
[array([ 0, 19]), array([ 0, 37])]