ASKSAGE: Sage Q&A Forum - RSS feedhttps://ask.sagemath.org/questions/Q&A Forum for SageenCopyright Sage, 2010. Some rights reserved under creative commons license.Wed, 25 Jul 2018 04:07:59 +0200Generating a graph from .mat filehttps://ask.sagemath.org/question/43083/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? Fri, 20 Jul 2018 05:56:52 +0200https://ask.sagemath.org/question/43083/generating-a-graph-from-mat-file/Comment by tmonteil for <p>The .mat file contains the adjacency matrix of a graph. How can I generate the underlying graph of this matrix in Jupyter? </p>
https://ask.sagemath.org/question/43083/generating-a-graph-from-mat-file/?comment=43084#post-id-43084What is the format of the `.mat` file ? It it a text file ? Could you please provide a concrete example ?Fri, 20 Jul 2018 09:50:15 +0200https://ask.sagemath.org/question/43083/generating-a-graph-from-mat-file/?comment=43084#post-id-43084Comment by slelievre for <p>The .mat file contains the adjacency matrix of a graph. How can I generate the underlying graph of this matrix in Jupyter? </p>
https://ask.sagemath.org/question/43083/generating-a-graph-from-mat-file/?comment=43137#post-id-43137The documentation for "mat-files" would seem to be:
- [matfile documentation](https://fr.mathworks.com/help/matlab/ref/matfile.html)Wed, 25 Jul 2018 04:07:59 +0200https://ask.sagemath.org/question/43083/generating-a-graph-from-mat-file/?comment=43137#post-id-43137Answer by tmonteil for <p>The .mat file contains the adjacency matrix of a graph. How can I generate the underlying graph of this matrix in Jupyter? </p>
https://ask.sagemath.org/question/43083/generating-a-graph-from-mat-file/?answer=43085#post-id-43085I 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
sage: M = loadmat('<path_to_your_file.mat>')
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)Fri, 20 Jul 2018 10:53:30 +0200https://ask.sagemath.org/question/43083/generating-a-graph-from-mat-file/?answer=43085#post-id-43085