Structure-dynamics relationships in bursting neuronal networks revealed (Mäki-Marttunen et al. 2013)

 Download zip file 
Help downloading and running models
This entry includes tools for generating and analyzing network structure, and for running the neuronal network simulations on them.
1 . Mäki-Marttunen T, Acimovic J, Ruohonen K, Linne ML (2013) Structure-dynamics relationships in bursting neuronal networks revealed using a prediction framework. PLoS One 8:e69373 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism:
Cell Type(s): Neocortex L5/6 pyramidal GLU cell; Abstract Wang-Buzsaki neuron; Abstract integrate-and-fire leaky neuron;
Channel(s): I Na,p; I Na,t; I K; I K,leak; I M;
Gap Junctions:
Receptor(s): GabaA; AMPA; NMDA;
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEST; MATLAB; Python;
Model Concept(s): Bursting; Synchronization; Short-term Synaptic Plasticity; Methods; Connectivity matrix;
Implementer(s): Maki-Marttunen, Tuomo [tuomomm at];
Search NeuronDB for information about:  Neocortex L5/6 pyramidal GLU cell; GabaA; AMPA; NMDA; I Na,p; I Na,t; I K; I K,leak; I M; Gaba; Glutamate;
%function betweennesses = betweenness(M,path_length_max,Nsamp)
%  Calculates the node-betweenness for the nodes of the network
%  Input:
%    M - N x N connectivity matrix
%    path_length_max - the maximum considered path length (20 is an ad hoc
%                      limit that should be enough for connectivities p larger than 0.1)
%    Nsamp - number of samples (by default N, i.e. betweenness calculated for all nodes)
%  Output:
%    betweennesses - the betweenness values in a 1 x Nsamp vector
%  Tuomo Mäki-Marttunen
%  Last modified 8.1.2013

function betweennesses = betweenness(M,path_length_max,Nsamp)

N = size(M,1);

if nargin < 2 || isempty(path_length_max)
    path_length_max = 20;
if nargin < 3 || isempty(Nsamp)
    Nsamp = N;
testedInd = randperm(N);
testedInd = sort(testedInd(1:Nsamp));

betweennesses = zeros(1,Nsamp);

% Calculate the number of paths of length 1...path_length_max from each
% node to each node
Ms = zeros(N,N,path_length_max+1);
Ms(:,:,1) = M;
accounted_for = zeros(N);
pathl = zeros(N); %Save here the shortest path lengths, zero meaning that no path was found
for i=1:path_length_max
    pathl = pathl + i*(Ms(:,:,i) > 0 & ~accounted_for);
    accounted_for = accounted_for | Ms(:,:,i) > 0;
    Ms(:,:,i+1) = Ms(:,:,i)*M;

for iv=1:Nsamp
  v = testedInd(iv); %the index of the node whose betweenness is being calculated
  sumvalue = 0; %the betweenness value is saved here iteratively
  P = M([1:v-1 v+1:N],[1:v-1 v+1:N]); % M from which v removed

  % Calculate the number of paths of length 1...path_length_max from each
  % node (except v) to each node (except v)
  Ps = zeros(N-1,N-1,path_length_max);
  Ps(:,:,1) = P;
  accounted_for = zeros(N-1);
  pathlwv = zeros(N-1);
  for i=1:path_length_max
    pathlwv = pathlwv + i*(Ps(:,:,i) > 0 & ~accounted_for);
    accounted_for = accounted_for | Ps(:,:,i) > 0;
    Ps(:,:,i+1) = Ps(:,:,i)*P;
  for i=[1:v-1 v+1:N] %Go through all "from"-nodes except v
    % save to indices the "to"-nodes to be checked
    if i<v
      indices = [1:i-1 i+1:v-1 v+1:N];
      indices = [1:v-1 v+1:i-1 i+1:N];
    %iwv is an index corresponding to i, but in P
    iwv = i;
    if i > v
      iwv = iwv-1;
    for j=indices %go through all "to"-indices
      %jwv an index corresponding to j, but in P
      jwv = j;
      if j > v
        jwv = jwv-1;
      if pathl(i,j) > 1 %if there is a path from i to j, iv may lie on it
        if pathlwv(iwv,jwv) == 0 || pathlwv(iwv,jwv) > pathl(i,j)
          %in this case there is a path from i to j when iv is part of the
          %graph, but no path when iv is not part of the graph, hence the
          %addition of one in the betweenness value
          sumvalue = sumvalue + 1;
          %otherwise, there are some paths from i to j even without iv,
          %hence, the betweenness value is added only the fraction of paths
          %that iv lies on
          sumvalue = sumvalue + 1 - Ps(iwv,jwv,pathlwv(iwv,jwv))/Ms(i,j,pathl(i,j));
  betweennesses(iv) = sumvalue;