Use this script when one or more channels in the 275 channel CTF system are dead. It identifies the missing sensors and uses MEGREPAIR to fix the problem, so you can compare or average this handicapped dataset with complete datasets. Use this function after preprocessing. Prepare yourself: a path to a dir with a labels and grad variable (get from a previously recorded dataset, make it yourself or try the given datapath in the code). Check the code below for proper naming.
if size(data.label,1) ~= 275
cd('/home/electromag/jurvdwer/analysis/');
load LABEL275.mat; % read the complete set of labels, e.g. from a previous dataset that is known to be correct
load GRAD275.mat; % read the gradiometer definition from a previous dataset that is known to be correct
badchanindx = [];
while size(data.label,1) < 275
for ind = 1:size(data.label)
if ~strcmp(data.label{ind},LABEL{ind})
badchanindx = [badchanindx; ind];
fprintf('missing sensor: %s...\n',LABEL{ind})
data.label = [data.label(1:ind-1); LABEL{ind}; data.label(ind:end)];
for ind2 = 1:size(data.trial,2)
newtrial{ind2} = [data.trial{ind2}(1:ind-1,:);zeros(1,size(data.trial{ind2},2));data.trial{ind2}(ind:end,:)];
end
break
end
end
data.trial = newtrial;
end
warning('Inserting grad that does not actually belong to this dataset!')
data.grad = grad;
end
Subsequently you can use FT_CHANNELREPAIR for nearest neighbourhood averaging. This replaces the zeros in the broken channel with more appropriate values.
cfgmr = [] cfgmr.badchannel = data.label(badchanindx); cfgmr.neighbourdist = 4; data = ft_channelrepair(cfgmr,data);