[FieldTrip] Baseline removal errors in trials preprocessing

Stephen Whitmarsh stephen.whitmarsh at gmail.com
Thu Jan 17 14:52:45 CET 2019


Dear Marion,

 

Your script is a bit messy. I would start with:

1)      Always clear your cfg before calling a FT function. Don’t go around saving different cfg’s. This is the nr. 1 cause of confusing results J

2)      Load/segment etc. your data first with ft_preprocessing. Then call ft_preprocessing again to baseline correct, entering the output of the first run.

I have a hunch that might fix your problem. So, something like:

 

% load your data, apply rereferencing and segment in one go

cfg               = [];

cfg.dataset       = filename_Data;

cfg.reref         = 'yes';

cfg.refchannel    = {'EXG3', 'EXG4'} ; 

cfg.refmethod     = 'avg';

cfg.trl           = … ;

cfg               = ft_definetrial(cfg);

data_Raw          = ft_preprocessing(cfg);

 

% somehow plot your data to check

figure ; plot(data_Raw.trial{1}(1, :)) ; 

 

% baseline correct your raw data structure, method 1

cfg                     = [] ;

cfg.demean              = ‘yes’ ;

cfg.baselinewindow      = [0 0.1] ;

data_Raw_reref_1        = ft_preprocessing(cfg, data_Raw);

 

% somehow plot your data to check

figure ; plot(data_Raw_reref_1.trial{1}(1, :)) ; 

 

% baseline correct your raw data structure, method 2

cfg                     = [] ;

cfg.demean              = ‘yes’ ;

cfg.baselinewindow      = [-1 -0.1] ; % or whatever

data_Raw_reref_2        = ft_preprocessing(cfg, data_Raw);

 

% somehow plot your data to check

figure ; plot(data_Raw_reref_2.trial{1}(1, :)) ; 

 

And oh, wait, I see what you did there… Don’t use different variables for your cfg, (e.g. cfg1, cfg2, etc.). See the mistake? Those are too easy to make if you don’t do something like the above.

 

Cheers and good FieldTripping!

Stepen

 

 

 

From: fieldtrip <fieldtrip-bounces at science.ru.nl> On Behalf Of Marion Vincent
Sent: Thursday, January 17, 2019 2:00 PM
To: FieldTrip discussion list <fieldtrip at science.ru.nl>
Subject: Re: [FieldTrip] Baseline removal errors in trials preprocessing

 

Dear Stephen, 

 

Here is my script : 

 

%segmentation

seg_window=[0.1 1]; % in seconds %preStim/postStim

 

%config

cfg= [];

cfg.dataset = filename_Data;

 

%% *********** TRIAL DEFINITION PART *********** (that works )

[…]

cfg = ft_definetrial(cfg);

 

% ***********  Re-References *********** (that also works )

cfg.reref = 'yes';

cfg.refchannel = {'EXG3', 'EXG4'};% electrode 131/132 // cell-array with new EEG reference channel(s), this can be 'all' for a common average reference

cfg.refmethod     = 'avg'; % 'avg', 'median', or 'bipolar' for bipolar derivation of sequential channels (default = 'avg') 

 

data_Raw = ft_preprocessing(cfg);

 

%% *********** Baseline ***********

cfg.demean = 'yes';

 

cfg1=cfg;

cfg1.baselinewindow = [-seg_window(1) 0 ];

cfg2=cfg;

cfg2.baselinewindow = [0 0.1];

cfg3=cfg;

cfg3.baselinewindow = 'all';

 

data1 = ft_preprocessing(cfg1);

data2 = ft_preprocessing(cfg2);

data3 = ft_preprocessing(cfg3);

 

 

ð  I’ve attached the figure with the results.

 

PS : In fact I made a mistake in my previous email : the result wasn’t the same when the Baseline window was ‘all’.

 

Let me know if you need more informations. 

Thanks for your help.

 

Marion

 

 

Marion VINCENT
Eng., PhD , CNRS Research Engineer
Tel: +33 607 59 46 76

Laboratoire SCALab UMR CNRS 9193
Université Lille 3
BP 60149
59653 Villeneuve d'Ascq Cedex
http://scalab.cnrs.fr
--------------------------------------------
L’Imaginarium / SCV-IrDIVE Equipex
99a Boulevard Descat
59200 Tourcoing
http://www.irdive.fr <http://www.irdive.fr/> /

 

De : Stephen Whitmarsh <mailto:stephen.whitmarsh at gmail.com> 
Envoyé le :jeudi 17 janvier 2019 11:51
À : 'FieldTrip discussion list' <mailto:fieldtrip at science.ru.nl> 
Objet :Re: [FieldTrip] Baseline removal errors in trials preprocessing

 

 

Dear Marion,

 

It sounds it might indeed be something as simple as a typo. Could you paste the part of your script – from baseline removal to plotting (where you don’t see a difference) - so we can take a look?

 

Cheers,

Stephen

 

From: fieldtrip <fieldtrip-bounces at science.ru.nl <mailto:fieldtrip-bounces at science.ru.nl> > On Behalf Of Marion Vincent
Sent: Thursday, January 17, 2019 10:37 AM
To: fieldtrip at science.ru.nl <mailto:fieldtrip at science.ru.nl> 
Subject: [FieldTrip] Baseline removal errors in trials preprocessing

 

Dear FIeldtrip users, 

 

I’m new in using Fieldtrip for EEG processing and I’ve encountred some issues while removing the Baseline of my trials. 

 

I’m working on EEG signals recorded with the BioSemi system.  My pre-processing method is : 

(1)    Re-referecing the channels (necessary with BioSemi)

(2)    Trial definition

(3)    Baseline removal

 

I’ve read on the documentation that ft_preprocessing xcan have several cfg parameter for the Baseline removal :

 

% cfg.demean  = 'yes';%'no' or 'yes', whether to apply baseline correction (default = 'no')

% cfg.baselinewindow = 'all';%[begin end] ;%in seconds, the default is the complete trial (default = 'all')

% cfg.detrend       = 'no'; %'no' or 'yes', remove linear trend from the data (done per trial) (default = 'no')

 

I wanted to remove a Baseline defined as the average of a given window preceeding my stimulus onset. 

 

I tried to use : cfg.baselinewindow = [-0.5 0 ]; cfg.baselinewindow = [0 0.1] or the default window .

But the problem is that I always have the same result, no matter the window I use : the first point of my trial is put to zero and substracted to all my trial. 

 

I’m sure I’m doing something wrong (and that the answer is very simple), but I can’t manage to understand what is the issue.

 

Do you have any advice ?

 

Thanks ! 

Marion

 

Marion VINCENT
Eng., PhD , CNRS Research Engineer

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20190117/952f652b/attachment-0002.html>


More information about the fieldtrip mailing list