plotting clusters

Andrew Smart andrew.smart at NYU.EDU
Wed Mar 19 16:28:02 CET 2008


Hi,

We have made a plotting function for the clutster analysis, but sometimes 
we get very weird results. For example in one dataset for a certain time 
period the whole head (i.e., all the sensors) belongs to a significant 
cluster. 

I have attached the m-file that we use. All of the calls to the 
preprocessing and stat functions have been made, so this function just 
takes the data and the output of those functions and plots the significant 
clusters. 

Is there anything that we are missing or have done to make the plots output 
something different than intended? 

Thank you!
andy

----------------------------------
The aim of this list is to facilitate the discussion between users of the FieldTrip  toolbox, to share experiences and to discuss new ideas for MEG and EEG analysis. See also http://listserv.surfnet.nl/archives/fieldtrip.html and http://www.ru.nl/fcdonders/fieldtrip.
-------------- next part --------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% The plotting function for FieldTrip data
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function fieldtrip_plots(ft_args)

% Try to clear
save('TempArgs.mat', 'ft_args');
clear all;
load('TempArgs.mat');

% Grab these
fprintf('Loading Stats...\n');
sFile = '';
try
    sFile = ft_args.statsFile;
catch
    sFile = [ft_args.experimentName 'Stats.mat'];
end
fprintf('Using %s\n', sFile);
load(sFile);

% Load the data
try
    dFile1 = ft_args.gAvgFile1;
catch
    dFile1 = [ft_args.experimentName 'GrandAvgData1.mat'];
end
try
    dFile2 = ft_args.gAvgFile2;
catch
    dFile2 = [ft_args.experimentName 'GrandAvgData2.mat'];
end

% Load the first
fprintf('Loading Avg1...\n');
fprintf('Using %s\n', dFile1);
load(dFile1);
grandAvg = grandAvgData;

% Load the second
fprintf('Loading Avg2...\n');
fprintf('Using %s\n', dFile2);
load(dFile2);
grandAvg.avg = grandAvg.avg - grandAvgData.avg;

fprintf('Plotting...\n');

% Sorry... Feel free to fix
%fprintf('Sorry, plotting down for now.  Feel free to fix it at your leisure.\n');
%return;

% TTest
% Find the significant clusters
sigClusters = {};
for i = 1:length(stats.posclusters)
    if stats.posclusters(i).prob < ft_args.alpha

        % Find the column and row corresponding to that cluster
        [m,n] = find(stats.posclusterslabelmat == i);
        sigClusters{length(sigClusters)+1} = [m,n];
    else
        break;
    end
end

% And do the same for negative clusters
for i = 1:length(stats.negclusters)
    if stats.negclusters(i).prob < ft_args.alpha
        [m,n] = find(stats.negclusterslabelmat == i);
        sigClusters{length(sigClusters)+1} = [m,n];
    else
        break;
    end
end

if isempty(sigClusters)
    fprintf('Sorry, no significant clusters.  Exiting...\n');
    return;
end

% Get how long each sample is
secPerSample = (ft_args.stats_epoch(2) - ft_args.stats_epoch(1)) / ...
    size(stats.posclusterslabelmat,2);

% And plot each significant cluster
numPlots = length(sigClusters);
for k = 1:numPlots

    % Layout the plots
    subplot(ceil(sqrt(numPlots)), ceil(sqrt(numPlots)),k);

    % Get the bounds of this plot
    currCluster = sigClusters{k};

    % Setup the config argument for plotting
    cfg = [];

    % This should be the bounds in seconds
    cfg.xlim = [ft_args.stats_epoch(1) + secPerSample*currCluster(1,2) ...
        ft_args.stats_epoch(1) + secPerSample*currCluster(length(currCluster),2)];

    % Have to have the user set for now, because not sure
    % how to grab from the raw data yet.
    cfg.zlim = ft_args.plotScale;
    cfg.layout='CTF275.lay';

    % Want to highlight all the sensors in the
    % significant cluster
    % TODO: Figure out how to interpret clusters
    clusterTimePoints = currCluster(length(currCluster),2) - currCluster(1,2);
    sigLimit = ceil(0*clusterTimePoints);
    cfg.highlight = [];
    for j = 1:size(stats.posclusterslabelmat,1)
        if (length(find(currCluster(:,1) == j)) > sigLimit)
            cfg.highlight(size(cfg.highlight)+1) = j;
        end
    end

    cfg.comment = 'xlim';
    cfg.commentpos = 'title';

    % And plot it
    topoplotER(cfg, grandAvg);
end

% Done with these
clear all;


----------------------------------
The aim of this list is to facilitate the discussion between users of the FieldTrip  toolbox, to share experiences and to discuss new ideas for MEG and EEG analysis. See also http://listserv.surfnet.nl/archives/fieldtrip.html and http://www.ru.nl/fcdonders/fieldtrip.


More information about the fieldtrip mailing list