Generating a graph from .mat file

The .mat file contains the adjacency matrix of a graph. How can I generate the underlying graph of this matrix in Jupyter?

edit retag close merge delete

What is the format of the .mat file ? It it a text file ? Could you please provide a concrete example ?

( 2018-07-20 09:50:15 +0200 )edit

The documentation for "mat-files" would seem to be:

( 2018-07-25 04:07:59 +0200 )edit

Sort by ยป oldest newest most voted

I had a look on the web, and it seems that you are speaking about .mat matrices provided by matlab. So, scipy, which is shipped with Sage already has a tool to read .mat files:

sage: from scipy.io import loadmat


As you can see, the object M is a dictionary:

sage: M


What is of interest for us is the a field:

sage: M['a']
array([[[  1.,   4.,   7.,  10.],
[  2.,   5.,   8.,  11.],
[  3.,   6.,   9.,  12.]]])


Which is an aray with a single entry that is the array we want:

sage: M['a'][0]
array([[  1.,   4.,   7.,  10.],
[  2.,   5.,   8.,  11.],
[  3.,   6.,   9.,  12.]])


This can then be transformed into a Sage matrix:

sage: m = matrix(RDF,M['a'][0])
sage: m
[ 1.0  4.0  7.0 10.0]
[ 2.0  5.0  8.0 11.0]
[ 3.0  6.0  9.0 12.0]
sage: m.parent()
Full MatrixSpace of 3 by 4 dense matrices over Real Double Field


If your matrix is the adjacency matrix of a graph, it should be square and symmetric, in which case you can recover the graph with:

sage: G = Graph(m)

more