Dynamic Networks


The Dynamic Networks tool is intended to be used as a companion to Gephi. Note that I am not a member of the Gephi team and that I alone am responsible for this software. Some of the ideas that are implemented in the tool were suggested by Dr. Frank Boons. I released this software and its source code under the GPL v3 license. The source code can be found here.

If you would like to cite this software, you can use the following format:

Spekkink, W. (2014). Dynamic Networks [software]. Available from: http://www.wouterspekkink.org/?page_id=87

The Windows version of the tool can be downloaded here: Download Link (Win)

The Linux version of the tool can be downloaded here: Download Link (Linux)

A note on the Linux version: it was built in Ubuntu, and I don’t know whether it will work with other architectures of Linux. You will need to run the accompanying script, instead of the executable. Open a terminal, go to the folder where the program is located and type ./DynamicNetworks.sh. If you get a permission denied message, first type chmod +x ./DynamicNetworks.sh and then try again.

The Mac version of the tool can be downloaded here: Download Link (Mac)

A note on the Mac version: I have little experience with building Mac apps, and I’m not completely positive yet that the application bundle will work without the Qt libraries installed on your machine. Please let me know if it doesn’t work, so I can figure out what went wrong.

User Manual

A user manual for this software is still in development. For the time being, the basic instructions for using the program are included here.

Input data

The tool requires the user to provide a comma-delimited file (.csv) which includes an incidence matrix (aka affiliation matrix). The rows of the matrix may represent any type of node for which the user wants to reconstruct the network (I’ll assume that the nodes refer to actors here). The columns of the incidence matrix should represent events to which the actors participated, and these should be recorded in order of occurrence from left to right, like so:


Here a 1 indicates that the corresponding actor participated to the corresponding event. A 0 indicates that the actor did not participate to the event.

If the incidence matrix is imported into the program, the program will allow you to transform the data into various types of dynamic and static networks (this is discussed in detail in the manual that will be provided later). After reconstructing the network, it is possible to export the result as an edge list that can be imported into Gephi. To do this, go to the data laboratory in Gephi, and select “import spreadsheet.” Make sure that you select that “edges table” in the first window that you see. Also make sure to tick the box “create missing nodes.” Otherwise, nothing will happen and you’ll be staring at a blank plot window.

Dynamic networks

If you choose to create one of the dynamic networks, you will be able to indicate a number that I called Granularity. This number will set the width of each snapshot that will be created for the dynamic network. The smallest possible snapshot is of width 1, which means that each event can be used as a separate snapshot in Gephi. The largest possible snapshot is the total number of columns in your incidence matrix (see example below).


You can also tick a box to indicate that you want the frame to slide. This means that the frame will not jump from one set of events to the next, but that each time the frame will move one event to the right, as illustrated below.


If you have generated an edge list for a dynamic network, then it is possible to activate the Timeline in Gephi after importing the file in the data laboratory. For this to work, you must make sure that the time interval column in the edge list is also imported as a time interval variable (do this in the Import Settings window). If the granularity you selected is high enough, then it is possible for the edges to have a weight. For example, if two actors jointly participated to two events during a given frame, the weight of their relationship for that frame will be 2. In Gephi it is possible to work with these dynamic weights, but that requires the weight variable to be imported as a dynamic float. Unfortunately, Gephi does not allow you to do that at the moment, but there is a workaround. If you first generate a Dynamic Graph Example (File->Generate->Dynamic Graph Example…), then delete all edges and nodes (do it in that order, otherwise weird stuff can happen), and then import the edge file created with the Dynamic Networks tool, it will import the weights as a dynamic float variable. It’s not a pretty solution, but hopefully in future versions of Gephi this issue will be resolved.

Static networks

If you choose to create one of the static networks, you will be able to select the lower and upper bound of the frame of events that you wish to reconstruct the network for. The principle of the frame is the same as with the dynamic networks, but the edge list will only be constructed for the selected frame. The weights of the relationships between actors will be based on the number of events they jointly participated in. Those events will also be ‘remembered,’ by reporting them as a variable in the edge list. For example, if two actors jointly participated in Event 4, Event 8, and Event 27, then the edge for this relationship will have a variable (called Appearance) that looks like this: “Event 4 – Event 8 – Event 27.”

If you select to reconstruct an Ego Network, then you will be asked to select a node for which the Ego Network should be created.

Other notes

One of the things that this tool allows you to do is to perform an analysis in the style of Doreian (1979/1980) , but using a social network analysis approach rather than q-analysis. Also, in Doreian’s approach the frame of events is only expanded to the right (the left bound is not moved).