123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- function [fc,FC,total_flo] = flow_coef_bd(CIJ)
- %FLOW_COEF_BD Node-wise flow coefficients
- %
- % [hc,HC,total_flo] = flow_coef_bd(CIJ)
- %
- % Computes the flow coefficient for each node and averaged over the
- % network, as described in Honey et al. (2007) PNAS. The flow coefficient
- % is similar to betweenness centrality, but works on a local
- % neighborhood. It is mathematically related to the clustering
- % coefficient (cc) at each node as, fc+cc <= 1.
- %
- % input: CIJ, connection/adjacency matrix (binary, directed)
- % output: fc, flow coefficient for each node
- % FC, average flow coefficient over the network
- % total_flo, number of paths that "flow" across the central node
- %
- % Reference: Honey et al. (2007) Proc Natl Acad Sci U S A
- %
- % Olaf Sporns, Indiana University, 2007/2010/2012
- N = size(CIJ,1);
- % initialize ...
- fc = zeros(1,N);
- total_flo = fc;
- max_flo = fc;
- % loop over nodes
- for v=1:N
- % find neighbors - note: treats incoming and outgoing connections as equal
- [nb] = find(CIJ(v,:) + CIJ(:,v)');
- fc(v) = 0;
- if (~isempty(nb))
- CIJflo = -CIJ(nb,nb);
- for i=1:length(nb)
- for j=1:length(nb)
- if((CIJ(nb(i),v))==1)&&(CIJ(v,nb(j))==1)
- CIJflo(i,j) = CIJflo(i,j) + 1;
- end;
- end;
- end;
- total_flo(v) = sum(sum(double(CIJflo==1).*~eye(length(nb))));
- max_flo(v) = length(nb)^2-length(nb);
- fc(v) = total_flo(v)/max_flo(v);
- end;
- end;
- % handle nodes that are NaNs
- fc(isnan(fc)) = 0;
- FC = mean(fc);
|