/
linearSamples.m
94 lines (84 loc) · 2.96 KB
/
linearSamples.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
function [S,gammas]=linearSamples(A,n,varargin)
% linearSamples Compute multiresolution ensemble using linear sampling.
%
% Syntax
%__________________________________________________________________________
%
% [S,gammas]=linearSamples(A,n)
%
% [S,gammas]=linearSamples(__,Name,Value)
%
%
% Description
%__________________________________________________________________________
%
% [S,gammas]=linearSamples(A,n) computes linear sampling
% ensemble with 'n' partitions.
%
% [S,gammas]=linearSamples(__,Name,Value) additionally customizes the
% behavior of the function by e.g. using a different algorithm to
% optimize modularity or using a different modularity-like quality
% function.
%
%
% Input Arguments
%__________________________________________________________________________
%
% A -- Adjacency matrix of the network
%
% n -- Number of partitions to be generated
%
%
% Name-Value Pair Arguments
%__________________________________________________________________________
%
% Parameter names can be abbreviated and are not case sensitive.
%
% 'Optimizer' -- Function for finding "optimal" partitions for a
% modularity-like quality function with modularity matrix
% 'B'.
% @(B) iterated_genlouvain(B,[],0,1,'moverandw') (default) |
% function handle
%
% 'Modularity' -- Function to compute modularity matrix of the form
% 'B=modularity(A,gamma)' where 'A' is an adjacency
% matrix and 'gamma' is a resolution parameter. Note that
% the function assumes that 'B=(A+A')/2-gamma*P' for some matrix
% 'P'.
% @modularity (default) | function handle
%
% 'GammaMinSamples' -- Number of samples to use for 'gamma_min' search.
% 10 (default)| scalar
%
%
% Output Arguments
%__________________________________________________________________________
%
% S -- Ensemble of partitions. This is a matrix where each column
% corresponds to a partition for a given value of 'gamma'.
%
% gammas -- Values of 'gamma' corresponding to each partition in 'S'.
%
% See Also hierarchicalConsensus, eventSamples, exponentialSamples
% Version: 1.1.1
% Date: Thu 8 Mar 2018 15:34:46 CET
% Author: Lucas Jeub
% Email: ljeub@iu.edu
parseArgs=inputParser();
checkFunction=@(x) isa(x,'function_handle');
addParameter(parseArgs,'Optimizer',@(B) iterated_genlouvain(B,[],0,1,...
'moverandw'),checkFunction);
addParameter(parseArgs,'Modularity',@modularity,checkFunction)
addParameter(parseArgs,'GammaMinSamples',10,@(x) isnumeric(x) && isscalar(x))
parse(parseArgs,varargin{:});
mod_fun=parseArgs.Results.Modularity;
optimizer=parseArgs.Results.Optimizer;
samples=parseArgs.Results.GammaMinSamples;
[gamma_min, gamma_max]=gammaRange(A,'modularity',mod_fun,...
'Samples',samples);
gammas=linspace(gamma_min,gamma_max,n);
% compute partitions
parfor i=1:n
S(:,i)=optimizer(mod_fun(A,gammas(i)));
end
end