Skip to content

Commit 4ffa4a6

Browse files
authored
FIX - ensure that findcluster works robustly when called by tfcestat (#1734)
1 parent 144cdd7 commit 4ffa4a6

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

private/findcluster.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@
103103
labelmat = zeros(size(onoff));
104104
numcluster = 0;
105105

106-
if ~(numel(siz)==1 && all(siz==1))
106+
if ~(numel(siz)==1 && all(siz==1) && islogical(onoff))
107107
for j = 1:spatdimlength
108108
if numel(siz) <= 3 % if 2D or 3D data (without spatial dimension)
109109
% use SPM for 2D/3D data instead of the MATLAB image processing toolbox

test/test_clusterstat.m

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,64 @@
44
% WALLTIME 00:10:00
55
% DEPENDENCY findcluster clusterstat ft_statistics_montecarlo
66

7+
%%%%%%%%5
8+
% some code -> this relates to issue 1732
9+
pattern = [...
10+
1 1 1 1 0 1 1 1 1 1;...
11+
1 0 0 0 0 0 0 1 0 0;...
12+
1 1 1 0 0 0 0 1 0 0;...
13+
1 0 0 0 0 0 0 1 0 0;...
14+
1 0 0 0 0 0 0 1 0 0;...
15+
]; % FT
16+
17+
%% 0D (per channel)
18+
% make fake dataset
19+
data = cell(1,10);
20+
for idat = 1:10
21+
data{idat}.label = {'ch1' 'ch2' 'ch3' 'ch4' 'ch5'}';
22+
data{idat}.dimord = 'chan_freq';
23+
data{idat}.parameter = rand(5,1);
24+
if idat <= 5
25+
data{idat}.parameter = data{idat}.parameter + 2*pattern(:,2);
26+
end
27+
end
28+
29+
% do stats - montecarlo
30+
cfg = [];
31+
cfg.method = 'montecarlo';
32+
cfg.statistic = 'ft_statfun_depsamplesT';
33+
cfg.alpha = 0.05;
34+
cfg.numrandomization = 'all';
35+
cfg.design = [ones(1,5) ones(1,5).*2; 1:5 1:5;];
36+
cfg.ivar = 1;
37+
cfg.uvar = 2;
38+
39+
% - data
40+
cfg.parameter = 'parameter';
41+
cfg.channel = data{1}.label;
42+
cfg.connectivity = [...
43+
false true false false false;...
44+
true false false false false;...
45+
false false false true false;...
46+
false false true false false;...
47+
false false false false false;...
48+
]; % neighbours: ch1 - ch2, ch3 - ch4
49+
50+
cfg.dim = size(data{1}.(cfg.parameter));
51+
cfg.dimord = data{1}.dimord;
52+
dat = cell2mat(cellfun(@(x) x.(cfg.parameter)(:), data, 'UniformOutput', false));
53+
54+
% - run
55+
cfg.correctm = 'cluster';
56+
stat = ft_statistics_montecarlo(cfg,dat,cfg.design);
57+
cfg.correctm = 'tfce';
58+
stat = ft_statistics_montecarlo(cfg,dat,cfg.design);
59+
60+
61+
%%%%%%%%%%%%%5
62+
% some other code
63+
64+
765
pattern = [...
866
1 1 1 1 0 1 1 1 1 1;...
967
1 0 0 0 0 0 0 1 0 0;...

0 commit comments

Comments
 (0)