def readMat(path, key="A"): """ Reads a Graph from a matlab object file containing an adjacency matrix and returns a NetworKit::Graph Parameters: - key: The key of the adjacency matrix in the matlab object file (default: A)""" matlabObject = scipy.io.loadmat(path) # result is a dictionary of variable names and objects, representing the matlab object if key in matlabObject: A = matlabObject[key] else: raise Exception("Key {0} not found in the matlab object file".format(key)) (n, n2) = A.shape if n != n2: raise Exception("this ({0}x{1}) matrix is not square".format(n, n2)) # if not numpy.array_equal(A, A.transpose): # FIXME this is slow and doesn't work as expected, seems to be False for valid inputs # logging.warning("the adjacency matrix is not symmetric") G = __Graph(n) nz = A.nonzero() for (u,v) in zip(nz[0], nz[1]): if not G.hasEdge(u, v): G.addEdge(u, v) return G
def graphFromStreamFile(path, mapped=True, baseIndex=0): stream = readStream(path, mapped, baseIndex) G = __Graph() gu = GraphUpdater(G) gu.update(stream) return G