function nh=cosmo_singleton_neighborhood(ds)
% return neighborhood where each feature is only neighbor of itself
%
% nh=cosmo_singleton_neighborhood(ds)
%
% Input:
% ds dataset strucut
%
% Output:
% nh neighborhood structure where each feature is
% only neighbor of itself.
%
%
% Example:
% % This example shows how to run group analysis with multiple
% % comparison correction using a clustering neighborhood defined
% % by cosmo_singleton_neighborhood with cosmo_montecarlo_cluster_stat
% %
% nsubjects=10;
% nrois=4;
% ds=struct();
% ds.a=struct();
% ds.fa=struct();
% % set random data for 10 participants and 4 ROIs
% ds.samples=randn(nsubjects,nrois);
% %
% % set chunks and targets for one-sample t-test
% ds.sa.chunks=(1:nsubjects)';
% ds.sa.targets=ones(nsubjects,1);
% %
% nh=cosmo_singleton_neighborhood(ds);
% cosmo_disp(nh);
% %|| .origin
% %|| .a
% %|| struct (empty)
% %|| .fa
% %|| struct (empty)
% %|| .fa
% %|| .sizes
% %|| [ 1 1 1 1 ]
% %|| .a
% %|| struct (empty)
% %|| .neighbors
% %|| { [ 1 ]
% %|| [ 2 ]
% %|| [ 3 ]
% %|| [ 4 ] }
% %||
% %
% opt=struct();
% opt.progress=false;
% %
% % t-test against mean=0
% opt.h0_mean=0;
% %
% % make this a fast example.
% % usually one uses opt.niter=1000; even better is opt.niter=10000
% opt.niter=10; % use 10000 for publication quality
% %
% tfce_z_scores=cosmo_montecarlo_cluster_stat(ds,nh,opt);
% %
% % output contains one z-score per ROI
% cosmo_disp(size(tfce_z_scores.samples))
% %|| [1, 4]
%
%
% Notes:
% - this function can be used for ROI group analysis with multiple
% comparison correction using cosmo_montecarlo_cluster_stat.
% To do so, each column in
% ds.samples
% should correspond to values in one ROI.
%
cosmo_check_dataset(ds);
nh=struct();
nh.origin=struct();
nh.fa=struct();
nh.a=struct();
if isfield(ds,'a')
a=ds.a;
nh.a=a;
nh.origin.a=a;
end
if isfield(ds,'fa')
fa=ds.fa;
nh.fa=fa;
nh.origin.fa=fa;
end
nfeatures=size(ds.samples,2);
nh.fa.sizes=ones(1,nfeatures);
nh.neighbors=num2cell((1:nfeatures)');