123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- function [B,E,K] = evaluate_generative_model(A,Atgt,D,modeltype,modelvar,params)
- % EVALUATE_GENERATIVE_MODEL Generation and evaluation of synthetic networks
- %
- % [B,E,K] = EVALUATE_GENERATIVE_MODEL(A,Atgt,D,m,modeltype,modelvar,params)
- %
- % Generates synthetic networks and evaluates their energy function (see
- % below) using the models described in the study by Betzel et al (2016)
- % in Neuroimage.
- %
- % Inputs:
- % A, binary network of seed connections
- % Atgt, binary network against which synthetic networks are
- % compared
- % D, Euclidean distance/fiber length matrix
- % m, number of connections that should be present in
- % final synthetic network
- % modeltype, specifies the generative rule (see below)
- % modelvar, specifies whether the generative rules are based on
- % power-law or exponential relationship
- % ({'powerlaw'}|{'exponential})
- % params, either a vector (in the case of the geometric
- % model) or a matrix (for all other models) of
- % parameters at which the model should be evaluated.
- %
- % Outputs:
- % B, m x number of networks matrix of connections
- % E, energy for each synthetic network
- % K, Kolmogorov-Smirnov statistics for each synthetic
- % network.
- %
- % Full list of model types:
- % (each model type realizes a different generative rule)
- %
- % 1. 'sptl' spatial model
- % 2. 'neighbors' number of common neighbors
- % 3. 'matching' matching index
- % 4. 'clu-avg' average clustering coeff.
- % 5. 'clu-min' minimum clustering coeff.
- % 6. 'clu-max' maximum clustering coeff.
- % 7. 'clu-diff' difference in clustering coeff.
- % 8. 'clu-prod' product of clustering coeff.
- % 9. 'deg-avg' average degree
- % 10. 'deg-min' minimum degree
- % 11. 'deg-max' maximum degree
- % 12. 'deg-diff' difference in degree
- % 13. 'deg-prod' product of degree
- %
- % Note: Energy is calculated in exactly the same way as in Betzel et
- % al (2016). There are four components to the energy are KS statistics
- % comparing degree, clustering coefficient, betweenness centrality, and
- % edge length distributions. Energy is calculated as the maximum across
- % all four statistics.
- %
- % Reference: Betzel et al (2016) Neuroimage 124:1054-64.
- %
- % Richard Betzel, Indiana University/University of Pennsylvania, 2015
- m = nnz(Atgt)/2;
- n = length(Atgt);
- x = cell(4,1);
- x{1} = sum(Atgt,2);
- x{2} = clustering_coef_bu(Atgt);
- x{3} = betweenness_bin(Atgt)';
- x{4} = D(triu(Atgt,1) > 0);
- B = generative_model(A,D,m,modeltype,modelvar,params);
- nB = size(B,2);
- K = zeros(nB,4);
- for iB = 1:nB
- b = zeros(n);
- b(B(:,iB)) = 1;
- b = b + b';
- y = cell(4,1);
- y{1} = sum(b,2);
- y{2} = clustering_coef_bu(b);
- y{3} = betweenness_bin(b)';
- y{4} = D(triu(b,1) > 0);
- for j = 1:4
- K(iB,j) = fcn_ks(x{j},y{j});
- end
- end
- E = max(K,[],2);
- function kstat = fcn_ks(x1,x2)
- binEdges = [-inf ; sort([x1;x2]) ; inf];
- binCounts1 = histc (x1 , binEdges, 1);
- binCounts2 = histc (x2 , binEdges, 1);
- sumCounts1 = cumsum(binCounts1)./sum(binCounts1);
- sumCounts2 = cumsum(binCounts2)./sum(binCounts2);
- sampleCDF1 = sumCounts1(1:end-1);
- sampleCDF2 = sumCounts2(1:end-1);
- deltaCDF = abs(sampleCDF1 - sampleCDF2);
- kstat = max(deltaCDF);
|