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 <[email protected]>

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
graph-tool mailing list
[email protected]
https://lists.skewed.de/mailman/listinfo/graph-tool

Reply via email to