Note: I will be demonstrating one standard approach to brain graph analysis and borrow some custom built functions that my advisor and I have written that perform different steps in the analytic pipeline. You can view and download our code from our lab GitHub.

Further documentation on using igraph can be found here.
With a great igraph tutorial here.
Although I have used it sparingly, the R package brainGraph has some useful functions that lend themselves to brain graph analysis in particular. But, it’s mostly built on igraph, which I prefer :)

I will skirt around a number of theoretical and methodological considerations and will focus on practicality: how do you actually do this? A brief background first:

Some Background on Functional Connectivity

Brain networks and graph theory

The brain can be considered a complex network that transmits a large ammount of information about an individual’s environment, internal state, and past experience. Although this is not a new idea, in recent years researchers have become interested in dissecting underlying patterns of connectivity that effectively allow humans to react and respond to their environment, as well as think, perceive, and feel. To do this in a principled way, the dominant analytic approach utilizes graph theory. Graph theory at it’s core is nothing more than the study of networks comprised of functionally distinct nodes and conections between these nodes, called edges. A graph is simply a collection of nodes and edges that we can subject to graph theoretical analysis.

While graph theory can be used to study networks at any level of abstraction (i.e. social networks, biochemical interaction networks in systems biology, or the internet), network neuroscientists have become interested in using graph theory to study the human connectome. The connectome is a recently coined term that refers that a comprehensive map of neural connections (both structural and functional) in the human brain. In order to do this, researchers construct a brain “graph” comprised of brain regions (nodes) and connections between these regions (edges). In fucntional connectivity, edges are defined as a statistical dependence (typically defined via a full pearson correlation) of BOLD timeseries between nodes. Structural connectivity typically utilizes fractional anisotrophy from diffusion weighted imaging. Since most of my experience is in the functional connectivity realm, I’ll stick to fucntional connectivity. However, the principles of graph theoretic analyses are always the same, we may just apply them differently to answer different questions.

Largely from fMRI studies of the brain in it’s resting state, we know that the brain has a modular structure and is comprised of a number of functionally distinct subnetworks:

(van den Heuvel & Sporns, 2013)

(van den Heuvel & Sporns, 2013)

Here, we can see that the modular structure of this simple network indicates that some groups of nodes share more connections amongst each other than with other nodes. These nodes are said to be in the same “module”, “sub-network”, or “community.” Network scientists have developed numerous community detection algorithms that attempt to partition graphs into densely connected communities (neuroscientists generally use the louvain fast-unfolding algorithm, or the infomap algorithm). The above graphic plots the network in graph space. However, we could also plot our graphs in brain space, where each node corresponds to either EEG or MEG sensors, voxels, or structural or functional nodes derived from a brain parcellation (sometimes called an atlas). Below is a 90 node parcellation based on an Automated Anatomical Labelling (AAL) shown in graph and brain space: