function cosmo_set_path()
% set the matlab path for CoSMoMVPA
%
% cosmo_set_path()
%
% Notes:
% - if $ROOT is the root directory of CoSMoMVPA, then this function adds
% the paths $ROOT/{mvpa,external}, and their subdirectories, to the
% matlab path. It removes $ROOT{doc,examples,tests}.
% - A warning message is given if an unexpected directory structure is
% encountered.
% - To store the path, run savepath after calling this function.
%
% Example:
% cosmo_set_path();
% savepath();
%
% # For CoSMoMVPA's copyright information and license terms, #
% # see the COPYING file distributed with CoSMoMVPA. #
% directories to be added and removed from the path
remove_subdirs={'doc','examples','tests'};
add_subdirs={'mvpa','external'};
remove_add_subdirs={remove_subdirs, add_subdirs};
% get path of this very function
me_pth=fileparts(which(mfilename()));
% get CoSMoMVPA root path
root_pth=fileparts(me_pth);
% get matlab path, each path in a cell
pathsep_=pathsep(); % store path separator
matlab_pth=cosmo_strsplit(path(),pathsep_);
for add=[0,1]
subdirs=remove_add_subdirs{add+1};
n=numel(subdirs);
for k=1:n
subdir=subdirs{k};
full_pth=fullfile(root_pth,subdir);
if exist(full_pth,'file') && isdir(full_pth)
% generate all subdirectories
all_pths=cosmo_strsplit(genpath(full_pth),pathsep_);
% see which ones are in the matlab path
in_matlab_pth=cosmo_match(all_pths,matlab_pth);
for j=1:numel(all_pths)
pth=all_pths{j};
if add && ~in_matlab_pth(j)
addpath(pth);
elseif ~add && in_matlab_pth(j)
rmpath(pth);
else
% do nothing
end
end
else
cosmo_warning(['Path ''%s'' not found - this is an '...
'unexpected directory structure. ',...
'Please check your path settings'],full_pth);
end
end
end