% test the planar gradient computation using simulated data and a number
% of different methods

% compute model data with AXIAL gradiometers
cfg = [];
cfg.vol.r = 12;
cfg.vol.o = [0 0 7];
cfg.fsample = 100;
cfg.ntrials = 1;
cfg.triallength = 1;
cfg.noise = 0;
cfg.dip.pos = [0 0 17];
cfg.dip.mom = [1 0 0];
cfg.dip.frequency = 0;
cfg.dip.phase     = pi/2;

hdr = read_ctf_res4('test_RO_005/Subject01.ds');
cfg.grad = hdr.grad;
axial = dipolesimulation(cfg);

% compute model data with PLANAR gradiometers
cfg.grad  = axial2planar([], grad);
planar0   = dipolesimulation(cfg);
average0  = timelockanalysis([], planar0);
combined0 = combineplanar([], average0);

% try to estimate the planar gradients
cfg = [];
cfg.planarmethod = 'orig';
cfg.neighbourdist = 5;
planar1   = megplanar(cfg, axial);
average1  = timelockanalysis([], planar1);
combined1 = combineplanar([], average1);

cfg = [];
cfg.planarmethod = 'sincos';
cfg.neighbourdist = 5;
planar2   = megplanar(cfg, axial);
average2  = timelockanalysis([], planar2);
combined2 = combineplanar([], average2);

cfg = [];
cfg.planarmethod = 'fitplane';
cfg.neighbourdist = 5;
planar3   = megplanar(cfg, axial);
average3  = timelockanalysis([], planar3);
combined3 = combineplanar([], average3);

cfg = [];
cfg.planarmethod = 'sourceproject';
cfg.vol.r = 12;
cfg.vol.o = [0 0 7];
cfg.inwardshift = 2.5;
cfg.pruneratio = 1e-3;
cfg.headshape = 'headmodel';
cfg.spheremesh = 642;
planar4   = megplanar(cfg, axial);
average4  = timelockanalysis([], planar4);
combined4 = combineplanar([], average4);

cfg = [];
cfg.planar = 'yes';
cfg.neighbourdist = 5;
planar5   = meginterpolate(cfg, axial);
average5  = timelockanalysis([], planar5);
combined5 = combineplanar([], average5);

% show some results as correlation coefficient
corrcoef(combined0.avg(:,1), combined1.avg(1:151,1)); fprintf('method 1: %f\n', ans(2,1));
corrcoef(combined0.avg(:,1), combined2.avg(1:151,1)); fprintf('method 2: %f\n', ans(2,1));
corrcoef(combined0.avg(:,1), combined3.avg(1:151,1)); fprintf('method 3: %f\n', ans(2,1));
corrcoef(combined0.avg(:,1), combined4.avg(1:151,1)); fprintf('method 4: %f\n', ans(2,1));
corrcoef(combined0.avg(:,1), combined5.avg(1:151,1)); fprintf('method 5: %f\n', ans(2,1));
