123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- function D = agreement(ci,buffsz)
- %AGREEMENT Agreement matrix from clusters
- %
- % D = AGREEMENT(CI) takes as input a set of vertex partitions CI of
- % dimensions [vertex x partition]. Each column in CI contains the
- % assignments of each vertex to a class/community/module. This function
- % aggregates the partitions in CI into a square [vertex x vertex]
- % agreement matrix D, whose elements indicate the number of times any two
- % vertices were assigned to the same class.
- %
- % In the case that the number of nodes and partitions in CI is large
- % (greater than ~1000 nodes or greater than ~1000 partitions), the script
- % can be made faster by computing D in pieces. The optional input BUFFSZ
- % determines the size of each piece. Trial and error has found that
- % BUFFSZ ~ 150 works well.
- %
- % Inputs, CI, set of (possibly) degenerate partitions
- % BUFFSZ, optional second argument to set buffer size
- %
- % Outputs: D, agreement matrix
- %
- % Richard Betzel, Indiana University, 2012
- %modification history
- %09.24.2012 - added loop for big N that makes the function slower but also
- % prevents it from maxing out memory.
- n = size(ci,2);
- if nargin < 2
- buffsz = 1000;
- end
- if n <= buffsz
-
- ind = dummyvar(ci);
- D = ind*ind';
-
- else
-
- a = 1:buffsz:n;
- b = buffsz:buffsz:n;
-
- if length(a) ~= length(b)
- b = [b, n];
- end
-
- x = [a' b'];
- nbuff = size(x,1);
-
- D = zeros(size(ci,1));
- for i = 1:nbuff
- y = ci(:,x(i,1):x(i,2));
- ind = dummyvar(y);
- D = D + ind*ind';
- end
-
- end
- D = D.*~eye(length(D));
|