Dipole Fit Pipeline
מסמך זה עוסק בהערכת מקור הפעילות המוחית שנרשמה בMEG, בשיטת dipole fitting.
נשתמש ב-mri, segmented_mri, heal_model שכבר חושבו.
עבור כל נבדק נטעין את כל אלה, ובנוסף נטעין את הraw_data- בו נשתמש בgrad, את הdata הנקי והחתוך, ואת הdata הממוצע- erp: 

load('mri.mat')
load('segmentedmri.mat')
load('headmodel_struct.mat')
load('raw_filtered.mat')
load('clean_segmentedData.mat', 'clean_segmentedData')
load('erp.mat')

לאחר מכן נחליף את ה-grad בdata החתוך והנקי בgrad של ה-raw_data (מכיוון שהתאפס איפשהו במהלך החישוב וזהוא הכרחי להמשך):
clean_segmentedData.grad = raw_data.grad;

כעת נמצע את הdata:
dataAll = clean_segmentedData;

cfg                  = [];
cfg.covariance       = 'yes';
cfg.covariancewindow = 'all';
cfg.vartrllength     = 2;
timelockAll             = ft_timelockanalysis(cfg, dataAll);

נעזר ב-erp על מנת לבחור את חלון הזמן המתאים לכל נבדק באופן פרטני:
erp = rmfield(erp,'grad');
cfg=[];
cfg.layout = '4D248.lay';
cfg.interactive = 'yes';
figure;ft_singleplotER(cfg,erp) 

ועכשיו התחיל בחישוב האמיתי

בחישוב הראשוני נגביל את האלגוריתם לחיפוש אחר שני דיפולים סימטרים סביב ציר Y (כשני הקורטקסים האודיטורים) ונגדיר את חלון הזמן המתאים של ה-erp :
% 1st time - symmetric
cfg = [];
cfg.latency =  [0.115 0.135];
cfg.numdipoles = 2;
cfg.symmetry = 'y';
cfg.grid.resolution = 1;
cfg.grid.unit = 'cm';
cfg.gridsearch = 'yes';
cfg.vol = headmodel_struct;
cfg.channel = 'MEG';
source_planar = ft_dipolefitting(cfg, timelockAll);

כעת נחשב פעם נוספת- כאשר אין מגבלה על סימטריות. האלגוריתם כעת יחפש בסביבת הדיפולים הראשוניים שמצא. חשוב לשים לב להגדיר את אותו חלון הזמן כמו בחישוב הראשון:
% 2nd time - nonsymmetric
cfg = [];
cfg.latency =  [0.115 0.135];