Representing temporal network data
Hello, looking for a python library for analyzing and visualizing dynamic graphs I recently came across graph-tool which seems to be quite suitable for my needs. But before getting into my remaining question I believe a big thank you for Tiago Peixoto is in order: Thanks for all the work you put into this library! And secondly I should preface with the disclaimer that I am neither a computer scientist nor mathematician, but a humanities scholar currently diving in to graph analysis and visualization for a project. Quickly approaching the limits of Gephi (the Software most of my colleagues turn to) for analyzing a large dynamic network I thought that I should give graph-tool a try. I have a large data set of the evolution of categorization on Wikipedia, i.e. data on when a category has been assigned to or removed from all pages in Wikipedia. (On a side note: I am currently not aiming to visualize the entire dataset, but the evolution of topics within Wikipedia) I searched and read through most of the documentation of graph-tool and graphml, but there is one thing I just cannot wrap my head around: Is there a smart or default way of representing dynamic networks in graph-tool? I understand that graph tool-allows for adding and removing edges / vertices dynamically, but is there a (recommended) way of storing the data on when an edge or a vertice is created/removed/created again/removed again... directly in the graph? And if not, how would you suggest to do that? This question does not only relate to the visualization of the graph, but to analyzing and comparing the graph at multiple ponints in time as well, i.e. calculating graph_tool.topology.similarity(g1, g2, ...) for the graph at time 1 and time 2. Of course, I could genrate two (or more) seperate graph objects for t1 and t2. However, for me it would be more desirable to create just one graph and to be able to calculate the graphs properties for certain points in time. A possible solution I could imagine is to make use of graph.views. But then again, how should I include the data for edge/vertice creation or removal in a property map? I suspect this is a question which does not have just one straight forward answer, but I appreciate any suggestions, tips or links to where to find more on this issue. And maybe I have even overlooked the solution in the documentation... Sorry in advance for that. Thanks a lot and all the best, marcus -- View this message in context: http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/... Sent from the Main discussion list for the graph-tool project mailing list archive at Nabble.com.
Hi Marcus, I am pretty sure that Tiago would have more to say on this but did you look at the following links from the documentation? https://graph-tool.skewed.de/static/doc/quickstart.html#graph-filtering https://graph-tool.skewed.de/static/doc/demos/animation/animation.html#dynam... Regards Snehal On Mon, Mar 20, 2017 at 8:24 PM, Marcus Burkhardt <marcus.burkhardt@tum.de> wrote:
Hello,
looking for a python library for analyzing and visualizing dynamic graphs I recently came across graph-tool which seems to be quite suitable for my needs. But before getting into my remaining question I believe a big thank you for Tiago Peixoto is in order: Thanks for all the work you put into this library! And secondly I should preface with the disclaimer that I am neither a computer scientist nor mathematician, but a humanities scholar currently diving in to graph analysis and visualization for a project.
Quickly approaching the limits of Gephi (the Software most of my colleagues turn to) for analyzing a large dynamic network I thought that I should give graph-tool a try. I have a large data set of the evolution of categorization on Wikipedia, i.e. data on when a category has been assigned to or removed from all pages in Wikipedia. (On a side note: I am currently not aiming to visualize the entire dataset, but the evolution of topics within Wikipedia)
I searched and read through most of the documentation of graph-tool and graphml, but there is one thing I just cannot wrap my head around:
Is there a smart or default way of representing dynamic networks in graph-tool?
I understand that graph tool-allows for adding and removing edges / vertices dynamically, but is there a (recommended) way of storing the data on when an edge or a vertice is created/removed/created again/removed again... directly in the graph? And if not, how would you suggest to do that?
This question does not only relate to the visualization of the graph, but to analyzing and comparing the graph at multiple ponints in time as well, i.e. calculating graph_tool.topology.similarity(g1, g2, ...) for the graph at time 1 and time 2. Of course, I could genrate two (or more) seperate graph objects for t1 and t2. However, for me it would be more desirable to create just one graph and to be able to calculate the graphs properties for certain points in time. A possible solution I could imagine is to make use of graph.views. But then again, how should I include the data for edge/vertice creation or removal in a property map?
I suspect this is a question which does not have just one straight forward answer, but I appreciate any suggestions, tips or links to where to find more on this issue. And maybe I have even overlooked the solution in the documentation... Sorry in advance for that.
Thanks a lot and all the best, marcus
-- View this message in context: http://main-discussion-list- for-the-graph-tool-project.982480.n3.nabble.com/ Representing-temporal-network-data-tp4027128.html Sent from the Main discussion list for the graph-tool project mailing list archive at Nabble.com. _______________________________________________ graph-tool mailing list graph-tool@skewed.de https://lists.skewed.de/mailman/listinfo/graph-tool
-- Snehal Madhukar Shekatkar Pune India
On 20.03.2017 15:54, Marcus Burkhardt wrote:
Hello,
looking for a python library for analyzing and visualizing dynamic graphs I recently came across graph-tool which seems to be quite suitable for my needs. But before getting into my remaining question I believe a big thank you for Tiago Peixoto is in order: Thanks for all the work you put into this library! And secondly I should preface with the disclaimer that I am neither a computer scientist nor mathematician, but a humanities scholar currently diving in to graph analysis and visualization for a project.
Quickly approaching the limits of Gephi (the Software most of my colleagues turn to) for analyzing a large dynamic network I thought that I should give graph-tool a try. I have a large data set of the evolution of categorization on Wikipedia, i.e. data on when a category has been assigned to or removed from all pages in Wikipedia. (On a side note: I am currently not aiming to visualize the entire dataset, but the evolution of topics within Wikipedia)
I searched and read through most of the documentation of graph-tool and graphml, but there is one thing I just cannot wrap my head around:
Is there a smart or default way of representing dynamic networks in graph-tool?
I understand that graph tool-allows for adding and removing edges / vertices dynamically, but is there a (recommended) way of storing the data on when an edge or a vertice is created/removed/created again/removed again... directly in the graph? And if not, how would you suggest to do that?
This question does not only relate to the visualization of the graph, but to analyzing and comparing the graph at multiple ponints in time as well, i.e. calculating graph_tool.topology.similarity(g1, g2, ...) for the graph at time 1 and time 2. Of course, I could genrate two (or more) seperate graph objects for t1 and t2. However, for me it would be more desirable to create just one graph and to be able to calculate the graphs properties for certain points in time. A possible solution I could imagine is to make use of graph.views. But then again, how should I include the data for edge/vertice creation or removal in a property map?
I suspect this is a question which does not have just one straight forward answer, but I appreciate any suggestions, tips or links to where to find more on this issue. And maybe I have even overlooked the solution in the documentation... Sorry in advance for that.
Thanks a lot and all the best, marcus
There are many ways to to this, depending on what you want to do in the end. Because of this, your question is somewhat ill defined. If you want some sort of canonical representation of dynamical networks, I don't believe such a thing exists. A good starting point, however, is to store the static version of the graph, where the edges are annotated with timestamps as property maps. Then you can retrieve a temporal snapshot using graph views: u = GraphView(g, efilt = time.a == 25) You can do a lot with this, but there are other situations where other approaches are better. Best, Tiago -- Tiago de Paula Peixoto <tiago@skewed.de>
participants (3)
-
Marcus Burkhardt -
Snehal Shekatkar -
Tiago de Paula Peixoto