Connectivity Metrics
Brain connectivity datasets comprise networks of brain regions connected by anatomical tracts or by functional associations. Complex network analysis-a new multidisciplinary approach to the study of complex systems-aims to characterize these brain networks with a small number of neurobiologically meaningful and easily computable measures. In this article, we discuss construction of brain networks from connectivity data and describe the most commonly used network measures of structural and functional connectivity. (Rubinov & Sporns, 2010)
Brain Connectivity Toolbox (BCT)
The BCT is a set of MATLAB functions that provide a number of potentially useful network metrics. Most of the information in this section is taken directly from Rubinov & Sporns (2010).
Measures of Integration
Functional integration in the brain is the ability to rapidly combine specialized information from distributed brain regions. Measures of integration characterize this concept by estimating the ease with which brain regions communicate and are commonly based on the concept of a path. Paths are sequences of distinct nodes and links and in anatomical networks represent potential routes of information flow between pairs of brain regions. Lengths of paths consequently estimate the potential for functional integration between brain regions, with shorter paths implying stronger potential for integration.
charpath
[lambda,efficiency,ecc,radius,diameter] = charpath(D,diagonal_dist,infinite_dist)
- The network characteristic path length (lambda) is the average shortest path length between all pairs of nodes in the network, and is primarily influenced by long paths
- The global efficiency is the average inverse shortest path length in the network and may be meaningfully computed on disconnected networks and is primarily influenced by short paths
- The nodal eccentricity is the maximal path length between a node and any other node in the network.
- The radius is the minimal eccentricity, and the diameter is the maximal eccentricity.
The distance matrix D is obtained by first calling distance_bin (binarized) or distance_wei (weighted). The input to either of these functions should be a connection-length matrix M, where larger values in M correspond to greater distances. Assuming that the elements of M represent correlations, squared correlations, or neural network connections, the matrix should first be inverted (because higher values in M would usually be interpreted as closer connections).
%Assume M is a matrix of correlations, squared correlations or neural network weights Minv=power(M,-1); D=distance_wei(Minv); diagonal_dist=0; infinite_dist=1; [lambda,efficiency,ecc,radius,diameter] = charpath(D,diagonal_dist,infinite_dist);
Visualization
adjacency_plot_und()
This function requires two parameters: an adjacency matrix M and a set of spatial coordinates xyz for each node in the adjacency matrix. The function renders a 3d figure depicting each non-zero connection. For large networks, the resulting figure may be uninterpretable, especially if there is a nonzero value for all edges in M; it might be helpful to prune the adjacency matrix before plotting it (e.g., set the main diagonal self-connections and any value below the top x %-ile to zero). To obtain the set of spatial coordinates, xyz, see the topic on Annotation Coordinates. The example below describes the steps involved in spatially depicting the connections in the first of a set of 12 adjacency matrices stored in a 3D array, RR.
lsegs=allregions(1:111); %allregions is a pre-existing cell array of segment names for the 219 node network rsegs=allregions(112:end); %the first 111 nodes are lh, the remainder are rh %having already determined the segment names of interest, I can pass them as parameters: [xyz, hemi, segnames]=getSegCoords('lsegnames', lsegs, 'rsegnames', rsegs); %% Step 1: determine adjacency matrix threshold %% so we can simplify plot (e.g., keep only top 10%) %% We use a temporary array, ss to determine the threshold ss=RR(:,:,1); %Grab the adjacency matrix (squared correlations) ss(ss==1)=0; %Eliminate connections on the main diagonal from consideration ss=sort(ss(:), 'descend'); %%sort all remaining connection weights %% Step 2: Use another temporary array, M, to which we can %% apply our threshold M=RR(:,:,1); M(M<ss(4796))=0; %ss had 47961 values. The 4796th value would be the 10th percentile %the above step could have also been done less elegantly by: %tenth_percentile=ss(4796); %M(M<tenth_percentile)=0; M(M==1)=0; %eliminate self-connections along the diagonal %% Step 3: Plot connections in our temporary array M [x,y,z]=adjacency_plot_und(M,xyz); plot3(x,y,z);