function [feat_types] = make_feat_set(config, path_set_ind, feat_set_ind)

% Default path_set_ind to 1
if (nargin < 2) || isempty(path_set_ind)
    path_set_ind = 1;
end

% Default feat_set_ind to 1
if (nargin < 3) || isempty(feat_set_ind)
    feat_set_ind = 1;
end

if path_set_ind == 0
    all_paths = [config.path_sets{:}];
    [~, unique_inds, ~] = unique(cellfun(@(x) [x{:}], all_paths, ...
                                         'UniformOutput', 0));
    paths = all_paths(unique_inds);
else
    paths = config.path_sets{path_set_ind};
end

if feat_set_ind == 0
    feats = unique([config.feat_sets{:}]);
else
    feats = config.feat_sets{feat_set_ind};
end

% Combine each of the paths with the desired feature types
% to compile the full set of path and feature combinations.
feat_types = cell(length(paths)*length(feats), 1);
feat_types_ind = 1;

for path_ind = 1:length(paths)
    for feat_ind = 1:length(feats)
        feat_types{feat_types_ind} = fullfile(config.split_name, ...
            paths{path_ind}{1}, feats{feat_ind}, paths{path_ind}{2});
        feat_types_ind = feat_types_ind + 1;
    end
end

for feat_i = 1:length(feat_types)
    feat_dir = fullfile(config.paths.seg_feats, feat_types{feat_i}); 
    % fprintf('%s\n', feat_dir)
    % Create a directory to store the features if needed
    if ~exist(feat_dir, 'dir')
        mkdir(feat_dir);
    end
end
