[FieldTrip] ft_globalmeanfield works
barbara.schorr at uni-ulm.de
barbara.schorr at uni-ulm.de
Wed Sep 17 12:13:04 CEST 2014
Dear Jim,
I found the problem. I still had an older Fieldtrip version on my
computer and this interfered somehow.
I deleted that version and now it works.
Best,
Barbara
Zitat von fieldtrip-request at science.ru.nl:
> Send fieldtrip mailing list submissions to
> fieldtrip at science.ru.nl
>
> To subscribe or unsubscribe via the World Wide Web, visit
> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
> or, via email, send a message with subject or body 'help' to
> fieldtrip-request at science.ru.nl
>
> You can reach the person managing the list at
> fieldtrip-owner at science.ru.nl
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of fieldtrip digest..."
>
>
> Today's Topics:
>
> 1. dipole simulation on head model (gamaliel huerta urrea)
> 2. Re: dipole simulation on head model (a.stolk)
> 3. Re: Latest FT version on ftp-server is from three days ago
> (Holger Krause)
> 4. Re: Latest FT version on ftp-server is from three days ago
> (Robert Oostenveld)
> 5. difference in raw time sample values for .fif files read by
> fieldtrip vs mne-python (Baptiste Gauthier)
> 6. ft_connectivityanalysis vs MATLAB (Matt Gerhold)
> 7. ft_connectivity_pdc (Matt Gerhold)
> 8. dipole simulation on head model (gamaliel huerta urrea)
> 9. Re: MEG lead field units (Marc Lalancette)
> 10. Re: ft_globalmeanfield : Undefined function of variable
> (barbara.schorr at uni-ulm.de)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Tue, 16 Sep 2014 01:49:37 -0300
> From: gamaliel huerta urrea <gamaliel.ghu at gmail.com>
> To: fieldtrip at science.ru.nl
> Subject: [FieldTrip] dipole simulation on head model
> Message-ID:
> <CAPEf3EPzkOoDsAU47gjmo2TbUsRhw72_h4e6scbLuDnUjDLevw at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Hi all
>
> I followed the tips above to simulate a dipole source on my own head model
> generated from MRIs. However, using information from:
>
> http://fieldtrip.fcdonders.nl/example/compute_forward_simulated_data_and_apply_a_dipole_fit
>
> I could not simulate anything. Only one image is blank. The code I am using
> is as follows:
>
> cfg = [];
> cfg.vol = vol; % See above
> cfg.elec = elec; % See above
> cfg.dip.pos = [0 0 0];
> cfg.dip.mom = [2 2 2]; % Note, it Should be transposed
> cfg.dip.frequency = 10;
> cfg.ntrials = 10;
> cfg.triallength = 1; % seconds
> cfg.fsample = 25; % Hz
> raw1 = ft_dipolesimulation (cfg);
> ft_timelockanalysis avg1 = ([], raw1);
> plot (avg1.time, avg1.avg); % Plot the timecourse
>
> where:
>
> vol = ft_prepare_headmodel volumes generated from the segmentation of my
> resonances.
>
> and
>
> ft_read_sens elec = ('standard_1020.elc');
>
> to run the script the result is a blank image.
>
> and Matlab tells me the following:
>
> using headmodel specified in the configuration
> using electrodes specified in the configuration
> Determining source compartment (1)
> projecting electrodes on skin surface
> electrode and system combine combining transfer matrix
> computing simulated data
> computing simulated trial data for 10
>
> RMS value of simulated data is NaN
> the call to "ft_dipolesimulation" took 4 seconds
> the input is raw Data with 97 channels and 10 trials
> Warning: the data does not Contain a definition trial
>> In utilities \ private \ warning_once at 158
> In utilities \ private \ fixsampleinfo at 66
> In ft_datatype_raw at 157
> In ft_checkdata at 224
> In ft_timelockanalysis at 105
> In codgen at 50
> Warning: sampleinfo by reconstructing Assuming That the trials are
> consecutive segments of
> a continuous recording
>> In utilities \ private \ warning_once at 158
> In utilities \ private \ fixsampleinfo at 79
> In ft_datatype_raw at 157
> In ft_checkdata at 224
> In ft_timelockanalysis at 105
> In codgen at 50
> averaging trials
> trial averaging 10 of 10
>
> the call to "ft_timelockanalysis" took 1 seconds
>
>
> I hope you can help
>
>
> greetings
> --
> *Gamaliel Huerta*
> *Ingenier?a Civil Biom?dica*
> *Universidad de Valpara?so*
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140916/ae7b7b89/attachment-0001.html>
>
> ------------------------------
>
> Message: 2
> Date: Tue, 16 Sep 2014 08:07:19 +0200
> From: "a.stolk" <a.stolk8 at gmail.com>
> To: FieldTrip discussion list <fieldtrip at science.ru.nl>
> Subject: Re: [FieldTrip] dipole simulation on head model
> Message-ID: <q4o1r5en2xwljn9j3l412otv.1410847639538 at email.android.com>
> Content-Type: text/plain; charset="utf-8"
>
> Hi Gamaliel, can you try
> avg = ft_timelockanalysis([], raw1);?
> Instead of
> ft_timelockanalysis avg1 = ([], raw1);?
> Hope this helps, arjen
>
>
>
> -------- Oorspronkelijk bericht --------
> Van: gamaliel huerta urrea <gamaliel.ghu at gmail.com>
> Datum:
> Aan: fieldtrip at science.ru.nl
> Onderwerp: [FieldTrip] dipole simulation on head model
>
>
> Hi all
>
> I followed the tips above to simulate a dipole source on my own head
> model generated from MRIs. However, using information from:?
>
> http://fieldtrip.fcdonders.nl/example/compute_forward_simulated_data_and_apply_a_dipole_fit
>
> I could not simulate anything. Only one image is blank. The code I
> am using is as follows:?
>
> cfg = [];?
> cfg.vol = vol; % See above?
> cfg.elec = elec; % See above?
> cfg.dip.pos = [0 0 0];?
> cfg.dip.mom = [2 2 2]; % Note, it Should be transposed?
> cfg.dip.frequency = 10;?
> cfg.ntrials = 10;?
> cfg.triallength = 1; % seconds?
> cfg.fsample = 25; % Hz?
> raw1 = ft_dipolesimulation (cfg);?
> ft_timelockanalysis avg1 = ([], raw1);?
> plot (avg1.time, avg1.avg); % Plot the timecourse?
>
> where:?
>
> vol = ft_prepare_headmodel volumes generated from the segmentation
> of my resonances.?
>
> and?
>
> ft_read_sens elec = ('standard_1020.elc');?
>
> to run the script the result is a blank image.?
>
> and Matlab tells me the following:?
>
> using headmodel specified in the configuration?
> using electrodes specified in the configuration?
> Determining source compartment (1)?
> projecting electrodes on skin surface?
> electrode and system combine combining transfer matrix?
> computing simulated data?
> computing simulated trial data for 10?
>
> RMS value of simulated data is NaN?
> the call to "ft_dipolesimulation" took 4 seconds?
> the input is raw Data with 97 channels and 10 trials?
> Warning: the data does not Contain a definition trial?
>> In utilities \ private \ warning_once at 158?
> ? ?In utilities \ private \ fixsampleinfo at 66?
> ? ?In ft_datatype_raw at 157?
> ? ?In ft_checkdata at 224?
> ? ?In ft_timelockanalysis at 105?
> ? ?In codgen at 50?
> Warning: sampleinfo by reconstructing Assuming That the trials are
> consecutive segments of?
> a continuous recording?
>> In utilities \ private \ warning_once at 158?
> ? ?In utilities \ private \ fixsampleinfo at 79?
> ? ?In ft_datatype_raw at 157?
> ? ?In ft_checkdata at 224?
> ? ?In ft_timelockanalysis at 105?
> ? ?In codgen at 50?
> averaging trials?
> trial averaging 10 of 10?
>
> the call to "ft_timelockanalysis" took 1 seconds?
>
>
> I hope you can help?
>
>
> greetings
> --
> Gamaliel Huerta
> Ingenier?a Civil Biom?dica
> Universidad de Valpara?so
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140916/1c2a62bc/attachment-0001.html>
>
> ------------------------------
>
> Message: 3
> Date: Tue, 16 Sep 2014 11:35:30 +0200
> From: Holger Krause <Holger.Krause at med.uni-duesseldorf.de>
> To: <fieldtrip at science.ru.nl>
> Subject: Re: [FieldTrip] Latest FT version on ftp-server is from three
> days ago
> Message-ID: <201409161135.32594.Holger.Krause at med.uni-duesseldorf.de>
> Content-Type: text/plain; charset="iso-8859-15"
>
> Hi!
>
> Again, same situation as last week :-( The latest file I can find on the FTP
> server is fieldtrip-20140913.zip.
>
> Thanks for taking care of this issue,
>
> Holger
>
> --
> Dr. rer. nat. Holger Krause MEG-Labor, Raum 13.54.-1.84
> Telefon: +49 211 81-19031 Institut f?r klinische Neurowissenschaften
> http://www.uniklinik-duesseldorf.de/klinneurowiss Uniklinik D?sseldorf
>
>
>
> ------------------------------
>
> Message: 4
> Date: Tue, 16 Sep 2014 12:15:11 +0200
> From: Robert Oostenveld <r.oostenveld at donders.ru.nl>
> To: FieldTrip discussion list <fieldtrip at science.ru.nl>
> Subject: Re: [FieldTrip] Latest FT version on ftp-server is from three
> days ago
> Message-ID: <4C0CDFB7-782E-49C1-9659-B85ABB918486 at donders.ru.nl>
> Content-Type: text/plain; charset=iso-8859-1
>
> Hi Holger,
>
> Thanks for notifying. We had a server crash a few days ago. One of
> the consequences seems to have been that the automatic svn update
> script blocked. I did a cleanup and the automatic releases on the
> ftp should start coming again. Note that alternative ways to access
> the code are explained on
> http://fieldtrip.fcdonders.nl/faq/i_would_like_an_automatic_daily_updated_version_of_the_code_can_i_get_access_to_the_cvs_or_snv_server
>
> best regards,
> Robert
>
>
>
> On 16 Sep 2014, at 11:35, Holger Krause
> <Holger.Krause at med.uni-duesseldorf.de> wrote:
>
>> Hi!
>>
>> Again, same situation as last week :-( The latest file I can find on the FTP
>> server is fieldtrip-20140913.zip.
>>
>> Thanks for taking care of this issue,
>>
>> Holger
>>
>> --
>> Dr. rer. nat. Holger Krause MEG-Labor, Raum
>> 13.54.-1.84
>> Telefon: +49 211 81-19031 Institut f?r klinische
>> Neurowissenschaften
>> http://www.uniklinik-duesseldorf.de/klinneurowiss Uniklinik
>> D?sseldorf
>>
>> _______________________________________________
>> fieldtrip mailing list
>> fieldtrip at donders.ru.nl
>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>
>
>
>
> ------------------------------
>
> Message: 5
> Date: Tue, 16 Sep 2014 14:27:15 +0200
> From: Baptiste Gauthier <gauthierb.ens at gmail.com>
> To: fieldtrip at science.ru.nl
> Subject: [FieldTrip] difference in raw time sample values for .fif
> files read by fieldtrip vs mne-python
> Message-ID:
> <CAGfUivz5UeNxSbX1QU7eCH9_GLx2nia9EruY+OrWtRFk4y5j0g at mail.gmail.com>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Dear fieldtrippers,
>
> I recently observed that reading a raw neuromag .fif file with fieldtrip
> and mne-python (with default settings for both) give exactly the same
> events separated by the same time (which is good!) but with a different
> time offset: the zero-point definition for the recording differ between the
> two softwares. I hypothesize that this difference comes from the convention
> adopted: fieldtrip would use the "record raw" trigger as a zero-point and
> mne the "start" trigger that occur earlier (i.e. you can follow the signal
> but it will be not saved in the file), but I'm not perfectly sure.
>
> As someone already observed this difference?
> It's harmless because it doesn't affect relative timing of the event but
> become problematic to transfer recoded events trl from fieldtrip to
> mne-python with a time-sample matching strategy.
>
> Best,
>
> Baptiste
>
> --
> Baptiste Gauthier
> Postdoctoral Research Fellow
>
> INSERM-CEA Cognitive Neuroimaging unit
> CEA/SAC/DSV/DRM/Neurospin center
> B?t 145, Point Courier 156
> F-91191 Gif-sur-Yvette Cedex FRANCE
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140916/cdfd9a27/attachment-0001.html>
>
> ------------------------------
>
> Message: 6
> Date: Tue, 16 Sep 2014 17:03:33 +0200
> From: Matt Gerhold <matt.gerhold at gmail.com>
> To: fieldtrip at science.ru.nl, fieldtrip-request at science.ru.nl
> Subject: [FieldTrip] ft_connectivityanalysis vs MATLAB
> Message-ID:
> <CAH+a9OF68PG+LED6aP+-yWU8Ot8x=4MQQa1DYPhYsg_4Wv99qQ at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Hi,
>
> I've compared the non-parametric calculation of the coherence spectrum
> using ft_connectivityanalysis to mscohere (MATLAB). The FT function
> provides inflated coherence values in comparison to the MATLAB function.
> I've also referenced this to a implementation of the original calculation
> which equates to the MATLAB output. Any advice would be appreciated.
>
> Matthew
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140916/8d65dc2b/attachment-0001.html>
>
> ------------------------------
>
> Message: 7
> Date: Tue, 16 Sep 2014 17:16:00 +0200
> From: Matt Gerhold <matt.gerhold at gmail.com>
> To: fieldtrip at science.ru.nl
> Subject: [FieldTrip] ft_connectivity_pdc
> Message-ID:
> <CAH+a9OGuq0Cg1jrM3R2sXbFUDVpoi6=F7uGUwnzh3vS0Hqcoww at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> When computing pdc in FT, line 67 of ft_connectivity_pdc appears to invert
> the spectral transfer func. When inverting I received the following error:
>
> Warning: Matrix is close to singular or badly scaled. Results may be
> inaccurate. RCOND = 6.358859e-18.
>
> Will this impact on the final spectrum calculated by the method. If so, is
> there a possible workaround/solution?
>
> Matthew
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140916/9a79b925/attachment-0001.html>
>
> ------------------------------
>
> Message: 8
> Date: Tue, 16 Sep 2014 14:20:36 -0300
> From: gamaliel huerta urrea <gamaliel.ghu at gmail.com>
> To: fieldtrip at science.ru.nl
> Subject: [FieldTrip] dipole simulation on head model
> Message-ID:
> <CAPEf3EPWPHSrOhoYbK8Uj2EJUA3k3hd08AJzztQqB6i8A+TzzA at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Hi all
>
> I followed the tips above to simulate a dipole source on my own head
> model generated from MRIs. However, using information from:
> http://fieldtrip.fcdonders.nl/example/compute_forward_simulated_data_and_apply_a_dipole_fit
>
> I could not simulate anything. Only one image is blank. The code I am
> using is as follows:
>
> cfg = [];
> cfg.vol = vol; % See above
> cfg.elec = elec; % See above
> cfg.dip.pos = [0 0 0];
> cfg.dip.mom = [2 2 2]; % Note, it Should be transposed
> cfg.dip.frequency = 10;
> cfg.ntrials = 10;
> cfg.triallength = 1; % seconds
> cfg.fsample = 25; % Hz
> raw1 = ft_dipolesimulation (cfg);
> avg1 = ft_timelockanalysis([], raw1);
>
> plot (avg1.time, avg1.avg); % Plot the timecourse
>
> where:
>
> vol = ft_prepare_headmodel volumes generated from the segmentation of
> my resonances.
>
> and
>
> ft_read_sens elec = ('standard_1020.elc');
>
> to run the script the result is a blank image.
>
> and Matlab tells me the following:
>
> using headmodel specified in the configuration
> using electrodes specified in the configuration
> Determining source compartment (1)
> projecting electrodes on skin surface
> electrode and system combine combining transfer matrix
> computing simulated data
> computing simulated trial data for 10
>
> RMS value of simulated data is NaN
> the call to "ft_dipolesimulation" took 4 seconds
> the input is raw Data with 97 channels and 10 trials
> Warning: the data does not Contain a definition trial
>> * In utilities \ private \ warning_once at 158
> * In utilities \ private \ fixsampleinfo at 66
> In ft_datatype_raw at 157
> In ft_checkdata at 224
> In ft_timelockanalysis at 105
> In codgen at 50
> Warning: sampleinfo by reconstructing Assuming That the trials are
> consecutive segments of
> a continuous recording
>> * In utilities \ private \ warning_once at 158
> * In utilities \ private \ fixsampleinfo at 79
> In ft_datatype_raw at 157
> In ft_checkdata at 224
> In ft_timelockanalysis at 105
> In codgen at 50
> averaging trials
> trial averaging 10 of 10
>
> the call to "ft_timelockanalysis" took 1 seconds
>
>
> I hope you can help
>
>
> greetings
>
> --
> *Gamaliel Huerta*
> *Ingenier?a Civil Biom?dica*
> *Universidad de Valpara?so*
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140916/cf2e0fd5/attachment-0001.html>
>
> ------------------------------
>
> Message: 9
> Date: Tue, 16 Sep 2014 18:42:21 +0000
> From: Marc Lalancette <marc.lalancette at sickkids.ca>
> To: "fieldtrip at science.ru.nl" <fieldtrip at science.ru.nl>
> Subject: Re: [FieldTrip] MEG lead field units
> Message-ID:
> <2A2B6A5B8C4C174CBCCE0B45E548DEB229FBB67F at SKMBXX01.sickkids.ca>
> Content-Type: text/plain; charset="us-ascii"
>
> Hello Fieldtrippies,
>
> Regarding a question I asked some months ago about the physical
> units of the lead field in Fieldtrip, I wanted to share the fact
> that I was wrong, and that it might be good to either document this
> in the code and possibly to add a factor. When using 'cm' units,
> the lead field is in Wb/cm^2/(A*m) = 1e4 T/Am = 1e2 T/(A*cm). I
> started to realize my original assumption was wrong while working on
> my Biomag poster since I was getting very low SNR values (around 1)
> for typical source and system parameters. So I looked closer at
> the single sphere code and my own old spherical forward solution
> code, and here is where the extra factor comes in:
>
> Skipping to the last step, my formula is:
> B = UnitConversion * (1e-7) * ( (QxrQ/F - (QxrQ * rv') * GradF/F^2)
> * SensorOrient' );
> The second factor is the constant mu0/(4*pi) = 10^-7 Wb/Am.
> Assuming a source (Q) in units of Am and distances in cm, the
> complicated bit has units of Am*cm/cm^3.
> Thus without the first factor, B would have units of Wb/cm^2 = 1e4
> T, and so I was using UnitConversion = 1e4 in my code, to get B in
> Tesla. If we don't put in a specific source amplitude (as in
> Fieldtrip), and still using UnitConversion, then B would be in T/(Am).
>
> I guess units can be different than 'cm' though, so the factor would
> have to take that into account. Note that the single shell forward
> solution gives the same units as single sphere and would need the
> same factor. I haven't looked at other forward methods. I also
> haven't verified if this is correctly dealt with when obtaining
> reconstructed source amplitudes, say with a beamformer.
>
> Cheers,
> Marc Lalancette
> Lab Research Project Manager
> The Hospital for Sick Children, Toronto, Canada
>
>
>
>
> ________________________________
>
> This e-mail may contain confidential, personal and/or health
> information(information which may be subject to legal restrictions
> on use, retention and/or disclosure) for the sole use of the
> intended recipient. Any review or distribution by anyone other than
> the person for whom it was originally intended is strictly
> prohibited. If you have received this e-mail in error, please
> contact the sender and delete all copies.
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140916/44d60490/attachment-0001.html>
>
> ------------------------------
>
> Message: 10
> Date: Wed, 17 Sep 2014 11:22:19 +0200
> From: barbara.schorr at uni-ulm.de
> To: fieldtrip at science.ru.nl
> Subject: Re: [FieldTrip] ft_globalmeanfield : Undefined function of
> variable
> Message-ID: <20140917112219.crkxv6dgoo0skccc at imap.uni-ulm.de>
> Content-Type: text/plain; charset=ISO-8859-1; DelSp="Yes";
> format="flowed"
>
> Dear Jim,
>
> I now downloaded the newest fieldtrip version but I still get the same
> error messag. Is there anything else I need to know?
>
> Thanks a lot!
>
> Best,
> Barbara
>
>
> Zitat von fieldtrip-request at science.ru.nl:
>
>> Send fieldtrip mailing list submissions to
>> fieldtrip at science.ru.nl
>>
>> To subscribe or unsubscribe via the World Wide Web, visit
>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>> or, via email, send a message with subject or body 'help' to
>> fieldtrip-request at science.ru.nl
>>
>> You can reach the person managing the list at
>> fieldtrip-owner at science.ru.nl
>>
>> When replying, please edit your Subject line so it is more specific
>> than "Re: Contents of fieldtrip digest..."
>>
>>
>> Today's Topics:
>>
>> 1. Re: ft_rejectvisual: removing trials marked as bad (Ashley Greene)
>> 2. Read only EEG data from combined MEG/EEG ctf file (Tobias Trame)
>> 3. Re: ft_globalmeanfield : Undefined function of variable
>> 'abort' (Herring, J.D. (Jim))
>> 4. using ft_megplanar with sinle-trial TFRs (Fr?d?ric Roux)
>> 5. dipole simulation on head model (gamaliel huerta urrea)
>> 6. Re: dipole simulation on head model (Tzvetan Popov)
>> 7. Re: ft_globalmeanfield : Undefined function of variable
>> 'abort' (Jing Fan)
>> 8. Re: ft_globalmeanfield : Undefined function of variable
>> 'abort' (Jing Fan)
>>
>>
>> ----------------------------------------------------------------------
>>
>> Message: 1
>> Date: Fri, 12 Sep 2014 21:39:43 +0900
>> From: Ashley Greene <agreene24 at gmail.com>
>> To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>> Subject: Re: [FieldTrip] ft_rejectvisual: removing trials marked as
>> bad
>> Message-ID:
>> <CAG9tv=Q9gS=FsuC7GZoL8u_fhBFzzZBDSjjP7d1SRo9OsjC3Rg at mail.gmail.com>
>> Content-Type: text/plain; charset="utf-8"
>>
>> Hi Emilie,
>>
>> Thanks!! I, of course, completely overlooked that.
>>
>> Ashley
>>
>> On Tue, Sep 9, 2014 at 3:37 PM, Caspar, Emilie <e.caspar at ucl.ac.uk> wrote:
>>
>>> Hi Ashley,
>>>
>>> Maybe the mistake is you did not integrate in your script the command to
>>> save the rejection. Normally, with the following command, you will see in
>>> the Matlab Window that artifacts are correctly rejected after the "quit"
>>> button.
>>>
>>> clean_data = ft_rejectvisual(cfg, interpoldata);
>>> cfg.artfctdef.reject = 'complete';
>>> cfg.artfctdef.feedback = 'yes';
>>> cleandata = ft_rejectartifact(cfg,clean_data);
>>>
>>> Emilie
>>>
>>>
>>>
>>>
>>>
>>> Le 3 sept. 2014 ? 11:58, Ashley Greene <agreene24 at gmail.com> a ?crit :
>>>
>>> Hello,
>>>
>>> I have used the rejectvisual function in attempt to remove bad trials,
>>> but after marking them and pressing the quit button, although the command
>>> window states that the selected trials have been removed, there is no
>>> obvious change in the data; all of the trials are still intact. Have I
>>> overlooked something?
>>>
>>> Thanks,
>>>
>>> Ashley
>>> _______________________________________________
>>> fieldtrip mailing list
>>> fieldtrip at donders.ru.nl
>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>>
>>>
>>>
>>> _______________________________________________
>>> fieldtrip mailing list
>>> fieldtrip at donders.ru.nl
>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>>
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL:
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140912/795a7f96/attachment-0001.html>
>>
>> ------------------------------
>>
>> Message: 2
>> Date: Fri, 12 Sep 2014 18:23:17 +0200 (CEST)
>> From: Tobias Trame <tobiastrame at uni-muenster.de>
>> To: <fieldtrip at science.ru.nl>
>> Subject: [FieldTrip] Read only EEG data from combined MEG/EEG ctf file
>> Message-ID:
>> <permail-201409121623178954262000002741-t_tram02 at message-id.uni-muenster.de>
>>
>> Content-Type: text/plain; charset=us-ascii
>>
>> Hi everybody!
>>
>> I'm trying to read only the EEG data from a combined MEG/EEG ctf
>> file in order
>> to create leadfields later on, but the function "ft_read_sens" just returns
>> the gradiometer information in a 'grad' field. It searches for an
>> 'elec'-field
>> in the header of the data which is not present. Is there a configuration to
>> get the EEG-elecrodes by using "ft_read_sens"?
>>
>> My first attempt was to write the EEG-Information from the header by hand
>> using the following code:
>>
>> hdr = ft_read_header('subject.ds', 'headerformat', 'ctf_ds');
>> elec.elecpos = [hdr.orig.eeg.pos]';
>> elec.chanpos = [hdr.orig.eeg.pos]';
>> elec.label = {hdr.orig.eeg.name}';
>> elec.type = 'eeg';
>> elec.unit = 'cm';
>>
>> But now I get a similar problem if I want to create leadfields from timelock
>> data. After doing the timelock analysis using
>>
>> timelock_data = ft_timelockanalysis(cfg, mydata);
>>
>> the structure timelock_data contains just a 'grad' and no 'elec'
>> field so that
>> ft_prepare_leadfield(cfg, timelock_data) always ignores the
>> EEG-elecrodes and
>> tries to use the gradiometes - even if I put the electrodes defined
>> above into
>> cfg.elec.
>>
>> Thanks for any suggestions!
>>
>> Tobias
>>
>>
>> ------------------------------
>>
>> Message: 3
>> Date: Mon, 15 Sep 2014 12:01:02 +0200 (CEST)
>> From: "Herring, J.D. (Jim)" <j.herring at fcdonders.ru.nl>
>> To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>> Subject: Re: [FieldTrip] ft_globalmeanfield : Undefined function of
>> variable 'abort'
>> Message-ID:
>> <2103383764.4690548.1410775262514.JavaMail.root at draco.zimbra.ru.nl>
>> Content-Type: text/plain; charset=utf-8
>>
>> Dear Barbara,
>>
>> The error seems to be related to a bug that pops up now and then
>> (http://bugzilla.fcdonders.nl/show_bug.cgi?id=2580) which could be
>> due to a corrupt installation of fieldtrip and/or the need to update
>> fieldtrip.
>>
>> Could you please try downloading the most recent version of
>> fieldtrip and see if the problem persists?
>>
>> For an example of what can be expected from this function see: Esser
>> SK, Huber R, Massimini M, Peterson MJ, Ferrarelli F, Tononi G. A
>> direct demonstration of cortical LTP in humans: a combined TMS/EEG
>> study. Brain Res Bull. 2006 Mar 15;69(1):86-94. Epub 2005 Dec 1.
>> PubMed PMID: 16464689.
>>
>> Best,
>>
>> Jim
>>
>>
>> ----- Oorspronkelijk bericht -----
>>> Van: "barbara schorr" <barbara.schorr at uni-ulm.de>
>>> Aan: fieldtrip at science.ru.nl
>>> Verzonden: Woensdag 10 september 2014 14:07:14
>>> Onderwerp: [FieldTrip] ft_globalmeanfield : Undefined function of
>>> variable 'abort'
>>> Dear fieldtripers.
>>>
>>> as mentioned in the subject line I would like to anaylse my timelocked
>>> ERP Data with the function ft_globalmeanfield.
>>>
>>> I get the Error: Undefined function or variable 'abort'
>>> Error in ft_globalmeanfield (line84)
>>> if abort
>>>
>>> in the function it says:
>>>
>>> %the abort variable is set to true or false in ft_preamble_inti
>>> if abort
>>> % do not continue function execution in case the outputfile is
>>> present and the user indicated to keep it
>>> return
>>> end
>>>
>>>
>>> I don't understand what this means. I would really appreciate your
>>> help to get this running.
>>>
>>> Also, what is the result when I run this function on my data? (This
>>> method was proposed from a reviewer. I never used it before, so I
>>> don't exactly know what it does and what the result will look like).
>>>
>>> Thank you very much in advance!
>>>
>>> Best,
>>>
>>> Barbara Schorr
>>>
>>>
>>>
>>>
>>> Zitat von fieldtrip-request at science.ru.nl:
>>>
>>> > Send fieldtrip mailing list submissions to
>>> > fieldtrip at science.ru.nl
>>> >
>>> > To subscribe or unsubscribe via the World Wide Web, visit
>>> > http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> > or, via email, send a message with subject or body 'help' to
>>> > fieldtrip-request at science.ru.nl
>>> >
>>> > You can reach the person managing the list at
>>> > fieldtrip-owner at science.ru.nl
>>> >
>>> > When replying, please edit your Subject line so it is more specific
>>> > than "Re: Contents of fieldtrip digest..."
>>> >
>>> >
>>> > Today's Topics:
>>> >
>>> > 1. Re: Question regarding nonparametric testing for coherence
>>> > differences (Eric Maris)
>>> > 2. Re: Problem with Geodesic 129 layout!! (KatrinH Heimann)
>>> > 3. Re: Problem with Geodesic 129 layout!! (Joseph Dien)
>>> > 4. Re: ft_rejectvisual: removing trials marked as bad
>>> > (Caspar, Emilie)
>>> > 5. Re: TRENTOOL pipeline help (Patricia Wollstadt)
>>> > 6. Latest FT version on ftp-server is from three days ago
>>> > (Holger Krause)
>>> > 7. Re: TRENTOOL pipeline help (Max Cantor)
>>> >
>>> >
>>> > ----------------------------------------------------------------------
>>> >
>>> > Message: 1
>>> > Date: Mon, 8 Sep 2014 15:46:11 +0200 (CEST)
>>> > From: "Eric Maris" <e.maris at psych.ru.nl>
>>> > To: <hweeling.lee at gmail.com>, "'FieldTrip discussion list'"
>>> > <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] Question regarding nonparametric testing
>>> > for
>>> > coherence differences
>>> > Message-ID: <015901cfcb6b$3fdf1f00$bf9d5d00$@maris at psych.ru.nl>
>>> > Content-Type: text/plain; charset="utf-8"
>>> >
>>> > Dear Hwee Ling,
>>> >
>>> >
>>> >
>>> > In the paper you refer to (Maris et al, JNM, 2007), I did not
>>> > perform a
>>> > cluster-based permutation test at the level of the channel pairs.
>>> > Instead,
>>> > all coherences mentioned in the paper are coherence between a single
>>> > EMG
>>> > channel (2 electrodes mounted on the forearm) and all MEG
>>> > electrodes. Thus,
>>> > there are as many EMG-MEG coherences as there are MEG channels (275
>>> > in our
>>> > lab), and the clustering of these coherences involves the same
>>> > neighbourhood
>>> > structure as the clustering of channel-specific statistics on power
>>> > or
>>> > evoked response. The analysis you propose involves clustering in a
>>> > much more
>>> > complex space, namely the formed by all (MEG,MEG) channel pairs
>>> > (275*275=75625 pairs). In the early days of cluster-based
>>> > permutation
>>> > statistics, I have worked on this problem but did not pursue it
>>> > because the
>>> > resulting clusters are very hard to interpret.
>>> >
>>> >
>>> >
>>> > Best,
>>> >
>>> >
>>> >
>>> > Eric Maris
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > Dear all and Prof Maris,
>>> >
>>> > I'm re-posting this question again, as I didn't get any replies
>>> > previously.
>>> >
>>> > I?m interested to investigate if there are any differences in phase
>>> > synchronization in resting state data at timepoint 2 versus
>>> > timepoint 1. The
>>> > EEG data was collected using 64 EEG channels, resting state, eyes
>>> > opened and
>>> > eyes closed. I?ve arbitrarily segmented the resting state data into
>>> > epochs
>>> > of 2s each, and the epochs with artifacts are excluded completely
>>> > from
>>> > further analyses. I then performed mtmfft to get the fourier
>>> > representation
>>> > of the data, extracted the coherence, and compared the coherence
>>> > difference
>>> > of timepoint 2 versus timepoint 1 of all channels paired with all
>>> > other
>>> > channels.
>>> >
>>> > I figured that if I extract the connectivity analyses without
>>> > specifying the
>>> > channelcmb, I get a 'chan_chan_freq' dimord variable that would
>>> > allow me to
>>> > perform cluster-based statistical analyses. I get an output with
>>> > ?chan_chan?
>>> > dimord variable. However, I was not 100% sure that this is correct,
>>> > hence, I?ve
>>> > inserted my code (see below). It?ll be great if you could tell me if
>>> > what I?m
>>> > doing makes any sense at all. Also, I don?t know how I can plot the
>>> > results
>>> > to see if it make any sense at all.
>>> >
>>> > Also, I checked the values obtained from when I specified
>>> > "cfg.channelcmb"
>>> > and when I did not specify "cfg.channelcmb", I noticed that the
>>> > values were
>>> > somehow different. I would assume that the values to be similar,
>>> > although
>>> > I'm not sure why they would have differences in the values obtained
>>> > from
>>> > specifying "cfg.channelcmb".
>>> >
>>> > This is my code that I've used thus far:
>>> >
>>> > for sub = 1:5
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.output = 'fourier';
>>> >
>>> > cfg.channel = {'all'};
>>> >
>>> > cfg.method = 'mtmfft';
>>> >
>>> > cfg.keeptrials = 'yes';
>>> >
>>> > cfg.tapsmofrq = 5;
>>> >
>>> > cfg.foilim = [0 100];
>>> >
>>> > cfg.taper = 'dpss';
>>> >
>>> > % find the index for the c200 condition
>>> >
>>> > pre_c200_idx = find(data5.trialinfo == 201);
>>> >
>>> > cfg.trials = pre_c200_idx;
>>> >
>>> > HLF_pre_c200 = ft_freqanalysis(cfg, data5);
>>> >
>>> > post_c200_idx = find(data5.trialinfo == 200);
>>> >
>>> > cfg.trials = post_c200_idx;
>>> >
>>> > HLF_post_c200 = ft_freqanalysis(cfg, data5);
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.keeptrials = 'no';
>>> >
>>> > cfg.channel = {'all'};
>>> >
>>> > cfg.removemean = 'yes';
>>> >
>>> > cfg.method = 'coh';
>>> >
>>> > HLF_pre_c200coh{sub} = ft_connectivityanalysis(cfg,
>>> > HLF_pre_c200);
>>> >
>>> > HLF_post_c200coh{sub} = ft_connectivityanalysis(cfg,
>>> > HLF_post_c200);
>>> >
>>> > end
>>> >
>>> >
>>> >
>>> >
>>> load('D:\Hweeling_Programs\fieldtrip-20140330\template\layout\easycapM11.mat');
>>> >
>>> > cfg_neighb.method = 'template';
>>> >
>>> > cfg_neighb.layout = lay;
>>> >
>>> > cfg_neighb.channel = 'all';
>>> >
>>> > neighbours = ft_prepare_neighbours(cfg_neighb,
>>> > sub_HLF_pre_c200coh{1});
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay;
>>> >
>>> > cfg.neighbours = neighbours;
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.channelcmb = {cfg.channel, cfg.channel};
>>> >
>>> > cfg.latency = 'all';
>>> >
>>> > cfg.avgovertime = 'no';
>>> >
>>> > cfg.avgoverchan = 'no';
>>> >
>>> > cfg.parameter = 'cohspctrm';
>>> >
>>> > cfg.method = 'montecarlo';
>>> >
>>> > cfg.statistic = 'depsamplesT';
>>> >
>>> > cfg.correctm = 'cluster';
>>> >
>>> > cfg.tail = 0;
>>> >
>>> > % cfg.clustertail = 0;
>>> >
>>> > cfg.alpha = 0.05/8; % to correct for multiple comparisons across 8
>>> > frequency
>>> > bands.
>>> >
>>> > cfg.numrandomization = 10000;
>>> >
>>> > cfg.ivar = 2;
>>> >
>>> > cfg.uvar = 1;
>>> >
>>> >
>>> >
>>> > % design matrices
>>> >
>>> > clear design;
>>> >
>>> > design(1,:) = [1:5, 1:5];
>>> >
>>> > design(2,:) = [ones(1,5), ones(1,5) * 2];
>>> >
>>> > cfg.design = design;
>>> >
>>> > % for theta band
>>> >
>>> > cfg.avgoverfreq = 'yes';
>>> >
>>> > cfg.frequency = [4 8]; % I also performed the statistics for delta
>>> > (2-4),
>>> > alpha (8-10.5), alpha (10.5-13), beta (13-20), beta (20-30), gamma
>>> > (30-40),
>>> > and gamma (40-100).
>>> >
>>> > [diffc200_theta_stat] = ft_freqstatistics(cfg,
>>> > sub_HLF_post_c200coh{:},
>>> > sub_HLF_pre_c200coh{:});
>>> >
>>> >
>>> >
>>> > When I tried to plot the results, I used this code:
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.layout = 'lay';
>>> >
>>> > cfg.zlim = [-1 1];
>>> >
>>> > cfg.alpha = 0.05;
>>> >
>>> > cfg.refchannel = 'all';
>>> >
>>> > ft_clusterplot(cfg, diffc200_theta_stat);
>>> >
>>> > However, I was not sure how I could plot the results. I get an error
>>> > message
>>> > from Fieldtrip when using ft_clusterplot:
>>> >
>>> > Error using topoplot_common (line 366)
>>> >
>>> > no reference channel is specified
>>> >
>>> > Error in ft_topoplotTFR (line 192)
>>> >
>>> > [cfg] = topoplot_common(cfg, varargin{:});
>>> >
>>> > Error in ft_clusterplot (line 372)
>>> >
>>> > ft_topoplotTFR(cfgtopo, stat);
>>> >
>>> >
>>> >
>>> > According to your paper in 2007, the topoplot of the results were
>>> > masked by
>>> > the spatio-spectral pattern of the significant clusters. I don't
>>> > know how to
>>> > do this, and I would really appreciate if you can show me how to
>>> > make such a
>>> > plot.
>>> >
>>> > Thank you very much.
>>> >
>>> > Kind regards,
>>> >
>>> > Hweeling
>>> >
>>> >
>>> >
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140908/98b85280/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 2
>>> > Date: Mon, 8 Sep 2014 21:38:01 +0200
>>> > From: KatrinH Heimann <katrinheimann at gmail.com>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] Problem with Geodesic 129 layout!!
>>> > Message-ID:
>>> > <CACnHcBeqEoQMirfZ-hCKK8rSmbfcNYzxFQH1mmSaeGCuKMN-uA at mail.gmail.com>
>>> > Content-Type: text/plain; charset="utf-8"
>>> >
>>> > Dear Joseph, thanks so much, I really appreciate your help. I was
>>> > also
>>> > wandering, if maybe there is another bug in my code.
>>> > Our nets are 128 channels, Hydrocel, but as a colleague of me
>>> > adviced me to
>>> > do so, I also tried the 129 layout.
>>> > My code you find below (without selection of bad channels etc.)
>>> > If you need also the data of two subjects to have a look, let me
>>> > know!!!
>>> > Best and thanks really!
>>> > Katrin
>>> >
>>> >
>>> > subject=input('Which subject do you want to analyse? ','s');
>>> >
>>> > name = strcat(subject,'.raw');
>>> >
>>> > subjectnumber=input('Which is the subjectnumber?', 's');
>>> >
>>> > sb=subjectnumber
>>> >
>>> > %subjectnumber = strcat(subjectnumber, '.txt')
>>> >
>>> > %%
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.dataset = name;
>>> >
>>> > cfg.trialfun = 'ft_trialfun_general'; % this is the default
>>> >
>>> > cfg.trialdef.eventtype = 'trigger';
>>> >
>>> > cfg.trialdef.eventvalue = 'stim'; % the value of the stimulus
>>> > trigger
>>> >
>>> > cfg.trialdef.prestim = 0.234; % in seconds
>>> >
>>> > cfg.trialdef.poststim = 7.266; % in seconds (whole time of video
>>> > observation, but maybe we need less)
>>> >
>>> > cfg = ft_definetrial(cfg);
>>> >
>>> >
>>> > cfg.trl([1:7],:) = [];
>>> >
>>> >
>>> > %change timeline according to constant offset of 16 ms = 8 samples
>>> > (because
>>> > recorded with 500 hz)in
>>> >
>>> > %structure trial
>>> >
>>> > cfg.trl(:,3)=cfg.trl(:,3)-8
>>> >
>>> >
>>> > %change timeline to make the cut the zeropoint
>>> >
>>> >
>>> > cfg.trl(:,3)=cfg.trl(:,3)- 1000;
>>> >
>>> >
>>> >
>>> > %% preprocess data
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.preproc.detrend = 'yes';
>>> >
>>> > cfg.preproc.demean = 'yes';
>>> >
>>> > cfg.preproc.baselinewindow = [-2.1 -2.0]
>>> >
>>> > %cfg.preproc.bpfilter = 'yes'; - the data here has to be already
>>> > filtered
>>> >
>>> > %(0.1-45) and bad channels have to be replaced!!!!
>>> >
>>> > %cfg.preproc.bpfreq = [6 32];
>>> >
>>> > %
>>> >
>>> > %
>>> >
>>> > obs_data = ft_preprocessing(cfg);
>>> >
>>> > %
>>> >
>>> > save (strcat(sb,'obs_data') , 'obs_data')
>>> >
>>> >
>>> > %% determining channel neighbours (necessary for Artifact detection)
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.channel = obs_data.label;
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.feedback = 'yes';
>>> >
>>> > lay = ft_prepare_layout(cfg);
>>> >
>>> >
>>> >
>>> > cfg_neighb = [];
>>> >
>>> > cfg_neighb.feedback = 'yes';
>>> >
>>> >
>>> > cfg_neighb.method = 'triangulation';
>>> >
>>> > cfg_neighb.layout = 'GSN128.sfp';
>>> >
>>> > neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >
>>> >
>>> > obs_data.elec = ft_read_sens('GSN128.sfp');
>>> >
>>> >
>>> > %% Artifacts - to detect bad channels - is not saved!!!
>>> >
>>> >
>>> >
>>> > cfg.method = 'summary';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >
>>> > obs_data_try = ft_rejectvisual(cfg, obs_data);
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs_data);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs_data_try = ft_rejectartifact (cfg,obs_data);
>>> >
>>> >
>>> >
>>> > %% Preparing neighbours for channel repair - but bad channel info
>>> > in!!!
>>> >
>>> >
>>> > % cfg_neighb = [];
>>> >
>>> > % cfg_neighb.feedback = 'yes';
>>> >
>>> > % cfg_neighb.method = 'triangulation';
>>> >
>>> > % cfg_neighb.layout = 'GSN-HydroCel-128.sfp';
>>> >
>>> > % neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >
>>> >
>>> > % Interpolate and put into new data structure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.badchannel = {};
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.method = 'nearest';
>>> >
>>> > cfg.neighbours = neighbours;
>>> >
>>> > obs_data_channelrepaired = ft_channelrepair(cfg,obs_data)
>>> >
>>> >
>>> > % Check reconstruction
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs_data_channelrepaired);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs_data_clean1 = ft_rejectartifact (cfg,obs_data_channelrepaired);
>>> >
>>> >
>>> > % dat1=obs_data;
>>> >
>>> > % dat2=obs_data_channelrepaired;
>>> >
>>> > %
>>> >
>>> > % x=dat1.trial{1}(62,:); % 68 is channel index of E68
>>> >
>>> > % y=dat2.trial{1}(62,:);
>>> >
>>> > % plot(x);hold on;plot(y,'r');
>>> >
>>> > %
>>> >
>>> > % x=dat1.trial{1}(72,:);
>>> >
>>> > % y=dat2.trial{1}(75,:);
>>> >
>>> > % figure;
>>> >
>>> > % plot(x);hold on;plot(y,'r')
>>> >
>>> > %
>>> >
>>> > % x=dat1.trial{1}(75,:);
>>> >
>>> > % y=dat2.trial{1}(75,:);
>>> >
>>> > % figure;
>>> >
>>> > % plot(x);hold on;plot(y,'r')
>>> >
>>> > %% artifact rejection/trial inspection - throw out electrode jumps
>>> > etc.
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs_data_channelrepaired);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs_data_clean1 = ft_rejectartifact (cfg,obs_data_channelrepaired);
>>> >
>>> >
>>> > %% ICA - Anzahl der Komponenten anpassen!- adapt numcomponent
>>> > according to
>>> > channels interpolated %% 128-number of interp. channels)
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.channel = {'all'};
>>> >
>>> > cfg.numcomponent = 128
>>> >
>>> > comp = ft_componentanalysis(cfg,obs_data_clean1);
>>> >
>>> > save (strcat(sb,'comp_all') , 'comp')
>>> >
>>> >
>>> > %%
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'component';
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='some';
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > ft_databrowser(cfg,comp);
>>> >
>>> >
>>> > %% poweranalysis components
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.output = 'pow';
>>> >
>>> > cfg.channel = 'all';%compute the power spectrum in all ICs
>>> >
>>> > cfg.method = 'mtmfft';
>>> >
>>> > cfg.taper = 'hanning';
>>> >
>>> > cfg.foi = 0:0.2:50;
>>> >
>>> > obs_freq = ft_freqanalysis(cfg, comp);
>>> >
>>> >
>>> > %And you can plot the spectra:
>>> >
>>> >
>>> > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>> >
>>> > nsubplots = 16;
>>> >
>>> > nbyn = sqrt(nsubplots);% sqrt(nsubplots) should not contain
>>> > decimals, type
>>> > doc subplot
>>> >
>>> >
>>> > Nfigs = ceil(size(comp.topo,1)/nsubplots);
>>> >
>>> > tot = Nfigs*nsubplots;
>>> >
>>> >
>>> > rptvect = 1:size(comp.topo,1);
>>> >
>>> > rptvect = padarray(rptvect, [0 tot-size(comp.topo,1)], 0,'post');
>>> >
>>> > rptvect = reshape(rptvect,nsubplots,Nfigs)';
>>> >
>>> >
>>> > for r=1:size(rptvect,1);
>>> >
>>> > figure;set(gcf,'units','normalized','outerposition',[0 0 1
>>> > 1]);%full
>>> > screen
>>> >
>>> > k=0;
>>> >
>>> > for j=1:size(rptvect,2);
>>> >
>>> > if~(rptvect(r,j)==0);
>>> >
>>> > k=k+1;
>>> >
>>> > cfg=[];
>>> >
>>> > cfg.channel = rptvect(r,j);
>>> >
>>> > cfg.ylim =[0 500]
>>> >
>>> > cfg.xlim =[0 50]
>>> >
>>> > subplot(nbyn,nbyn,k);ft_singleplotER(cfg,obs_freq);
>>> >
>>> > end
>>> >
>>> > end
>>> >
>>> > end
>>> >
>>> >
>>> > %For the IC topos you'll follow the same logic as above but with:
>>> >
>>> >
>>> > figure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [1:20]; % specify the component(s) that should be
>>> > plotted
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.comment = 'no';
>>> >
>>> > ft_topoplotIC(cfg, comp)
>>> >
>>> >
>>> > figure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [21:40]; % specify the component(s) that should be
>>> > plotted
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.comment = 'no';
>>> >
>>> > ft_topoplotIC(cfg, comp)
>>> >
>>> >
>>> > figure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [41:60]; % specify the component(s) that should be
>>> > plotted
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.comment = 'no';
>>> >
>>> > ft_topoplotIC(cfg, comp)
>>> >
>>> >
>>> > figure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [61:80]; % specify the component(s) that should be
>>> > plotted
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.comment = 'no';
>>> >
>>> > ft_topoplotIC(cfg, comp)
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > %% Seperate observation conditions
>>> >
>>> >
>>> > name1= strcat(num2str(sb),'_90.xls');
>>> >
>>> > list1=xlsread (name1)
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > name2= strcat(num2str(sb),'_180.xls');
>>> >
>>> > list2=xlsread (name2)
>>> >
>>> >
>>> >
>>> > %
>>> >
>>> >
>>> > cfg = []
>>> >
>>> > cfg.trials = [list1]
>>> >
>>> > obs90_data = ft_redefinetrial(cfg,obs_data_channelrepaired)
>>> >
>>> >
>>> > cfg = []
>>> >
>>> > cfg.trials = [list2]
>>> >
>>> > obs180_data = ft_redefinetrial(cfg,obs_data_channelrepaired)
>>> >
>>> >
>>> > %%PIPELINE FOR obs90
>>> >
>>> >
>>> > %% Decompose original data according to the components found before
>>> >
>>> > load (strcat(sb,'comp_all'))
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.numcomponent = 128;
>>> >
>>> > cfg.unmixing = comp.unmixing;
>>> >
>>> > cfg.topolabel = comp.topolabel;
>>> >
>>> >
>>> > comp_1 = ft_componentanalysis(cfg, obs90_data);
>>> >
>>> >
>>> >
>>> > %% Reject component
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [];
>>> >
>>> > obs90_data_ica_cleaned = ft_rejectcomponent(cfg, comp_1,
>>> > obs90_data);
>>> >
>>> >
>>> >
>>> >
>>> > save (strcat(sb,'obs90_ica_cleaned') , 'obs90_data_ica_cleaned')
>>> >
>>> >
>>> >
>>> >
>>> > %% Artifacts - final detection
>>> >
>>> >
>>> >
>>> > cfg.method = 'summary';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >
>>> > obs90_data_clean3 = ft_rejectvisual(cfg, obs90_data_ica_cleaned);
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs90_data_clean3);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs90_data_clean2 = ft_rejectartifact (cfg,obs90_data_clean3);
>>> >
>>> >
>>> >
>>> > % Save clean data
>>> >
>>> >
>>> > save (strcat(subject,'obs90_clean') , 'obs90_data_clean2')
>>> >
>>> >
>>> >
>>> > %% Rereferencing data
>>> >
>>> > cfg = [];
>>> >
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.preproc.reref = 'yes';
>>> >
>>> > cfg.preproc.refchannel = 'all';
>>> >
>>> > obs90_data_ref= ft_preprocessing(cfg,obs90_data_clean2)
>>> >
>>> >
>>> > save (strcat(subject,'obs90_ref') , 'obs90_data_ref')
>>> >
>>> > %% Snap out smaller pieces (the third second)
>>> >
>>> >
>>> > cfg = []
>>> >
>>> > cfg.toilim = [0 1]
>>> >
>>> >
>>> > obs90_data_small = ft_redefinetrial(cfg,obs90_data_ref)
>>> >
>>> >
>>> > %% TIMELOCK ERP
>>> >
>>> > obs90_data_ERP = ft_timelockanalysis(cfg, obs90_data_small);
>>> >
>>> >
>>> > save (strcat(subject,'obs90_ERP') , 'obs90_data_ERP')
>>> >
>>> >
>>> > %% plot it
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay ;
>>> >
>>> > cfg.interactive = 'yes';
>>> >
>>> > ft_multiplotER(cfg, obs90_data_ERP)
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > %% PIPELINE FOR obs180
>>> >
>>> >
>>> >
>>> > %% Decompose original data according to the components found before
>>> >
>>> > load (strcat(sb,'comp_all'))
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.numcomponent = 128
>>> >
>>> > cfg.unmixing = comp.unmixing;
>>> >
>>> > cfg.topolabel = comp.topolabel;
>>> >
>>> > comp_2 = ft_componentanalysis(cfg, obs180_data);
>>> >
>>> >
>>> >
>>> > %% Reject component
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [];
>>> >
>>> > obs180_data_ica_cleaned = ft_rejectcomponent(cfg, comp_2,
>>> > obs180_data);
>>> >
>>> >
>>> >
>>> >
>>> > save (strcat(sb,'obs180_ica_cleaned') , 'obs180_data_ica_cleaned')
>>> >
>>> >
>>> >
>>> >
>>> > %% Artifacts final 180
>>> >
>>> >
>>> >
>>> > cfg.method = 'summary';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >
>>> > obs180_data_clean3 = ft_rejectvisual(cfg, obs180_data_ica_cleaned);
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs180_data_clean3);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs180_data_clean2 = ft_rejectartifact (cfg,obs180_data_clean3);
>>> >
>>> >
>>> >
>>> > % Save clean data
>>> >
>>> >
>>> > save (strcat(subject,'obs180_clean') , 'obs180_data_clean2')
>>> >
>>> >
>>> >
>>> > %% Rereferencing data
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.preproc.reref = 'yes';
>>> >
>>> > cfg.preproc.refchannel = 'all';
>>> >
>>> > obs180_data_ref= ft_preprocessing(cfg,obs180_data_clean2)
>>> >
>>> >
>>> > save (strcat(subject,'obs180_ref') , 'obs180_data_ref')
>>> >
>>> > %% Snap out smaller pieces (the third second)
>>> >
>>> >
>>> > cfg = []
>>> >
>>> > cfg.toilim = [0 1]
>>> >
>>> >
>>> > obs180_data_small = ft_redefinetrial(cfg,obs180_data_ref)
>>> >
>>> >
>>> > %% TIMELOCK ERP
>>> >
>>> > obs180_data_ERP = ft_timelockanalysis(cfg, obs180_data_small);
>>> >
>>> >
>>> > save (strcat(subject,'obs180_ERP') , 'obs180_data_ERP')
>>> >
>>> >
>>> > %% plot 180 ERP
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay ;
>>> >
>>> > cfg.interactive = 'yes';
>>> >
>>> > ft_multiplotER(cfg, obs180_data_ERP)
>>> >
>>> >
>>> > %% plot both ERPs
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay ;
>>> >
>>> > cfg.interactive = 'yes';
>>> >
>>> > cfg.showlabels = 'yes';
>>> >
>>> > ft_multiplotER(cfg, obs90_data_ERP, obs180_data_ERP)
>>> >
>>> >
>>> > %% plot difference wave
>>> >
>>> >
>>> > difference = obs180_data_ERP; % copy one of the
>>> > structures
>>> >
>>> > difference.avg = obs180_data_ERP.avg - obs90_data_ERP.avg; % compute
>>> > the
>>> > difference ERP
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay;
>>> >
>>> > cfg.interactive = 'yes';
>>> >
>>> > ft_multiplotER(cfg, difference)
>>> >
>>> > 2014-09-07 7:53 GMT+02:00 Joseph Dien <jdien07 at mac.com>:
>>> >
>>> >> Hi,
>>> >> I?m one of the main Fieldtrip contributors working on supporting
>>> >> EGI
>>> >> data. A couple things. First of all, exactly which net do you use?
>>> >> If
>>> >> they are 129-channel, there is still the question of whether they
>>> >> are the
>>> >> Hydrocel or the older geodesic nets. Regardless, that shouldn't
>>> >> cause an
>>> >> error like this. Could you send me the file you are trying to
>>> >> process and
>>> >> the script you are using and I?ll try troubleshooting it.
>>> >>
>>> >> Joe
>>> >>
>>> >>
>>> >> On Aug 26, 2014, at 12:53 AM, Ana Laura Diez Martini <
>>> >> diezmartini at gmail.com> wrote:
>>> >>
>>> >> Which nets do you use? I use EGI. I tried both the ones you mention
>>> >> and
>>> >> they didn't work. It was hard to find that exact one online but it
>>> >> was the
>>> >> only file that actually worked.
>>> >>
>>> >>
>>> >> On Mon, Aug 25, 2014 at 7:52 AM, KatrinH Heimann
>>> >> <katrinheimann at gmail.com>
>>> >> wrote:
>>> >>
>>> >>> Dear Ana, dear all,
>>> >>> the layout you used does not correspond to our nets. I tried the
>>> >>> GSN-HydroCel-128.sfp and the GSN-HydroCel-129.sfp. Both don't
>>> >>> work.
>>> >>> Please can anybody help?
>>> >>> Cheers
>>> >>> Katrin
>>> >>>
>>> >>>
>>> >>> 2014-08-24 5:40 GMT+02:00 Ana Laura Diez Martini
>>> >>> <diezmartini at gmail.com>:
>>> >>>
>>> >>> Try this one
>>> >>> <https://www.dropbox.com/s/58zv658rtdant2c/GSN129.sfp?dl=0>
>>> >>>> I use
>>> >>>>
>>> >>>>
>>> >>>> On Sun, Aug 24, 2014 at 4:08 AM, KatrinH Heimann <
>>> >>>> katrinheimann at gmail.com> wrote:
>>> >>>>
>>> >>>>> Dear all, my problems seem neverending. This time however i
>>> >>>>> really need
>>> >>>>> help.
>>> >>>>> I implemented a pipeline for ERPs. All works now,
>>> >>>>> trialdefinition,
>>> >>>>> preprocessing, channelreplacement, ica, componentrejection,
>>> >>>>> final
>>> >>>>> artifactdetection, timelock of the single subject data. However,
>>> >>>>> when I
>>> >>>>> wanna compute the grandaverage of the single subjects I get the
>>> >>>>> following
>>> >>>>> error message:
>>> >>>>>
>>> >>>>> computing average of avg over 19 subjects
>>> >>>>> Warning: discarding electrode information because it cannot be
>>> >>>>> averaged
>>> >>>>> > In ft_timelockgrandaverage at 249
>>> >>>>> the call to "ft_timelockgrandaverage" took 0 seconds and
>>> >>>>> required the
>>> >>>>> additional allocation of an estimated 3 MB
>>> >>>>> computing average of avg over 2 subjects
>>> >>>>> Warning: discarding electrode information because it cannot be
>>> >>>>> averaged
>>> >>>>> > In ft_timelockgrandaverage at 249
>>> >>>>> the call to "ft_timelockgrandaverage" took 0 seconds and
>>> >>>>> required the
>>> >>>>> additional allocation of an estimated 0 MB
>>> >>>>> the call to "ft_prepare_layout" took 0 seconds and required the
>>> >>>>> additional allocation of an estimated 0 MB
>>> >>>>> the call to "ft_topoplotER" took 0 seconds and required the
>>> >>>>> additional
>>> >>>>> allocation of an estimated 0 MB
>>> >>>>>
>>> >>>>> Furthermore in the plot of the significant clusters, the
>>> >>>>> channelnames
>>> >>>>> are mixed up (do not correspond to my net)
>>> >>>>>
>>> >>>>>
>>> >>>>> I guess that there is a problem with the layout I use.
>>> >>>>> Here the code that I use
>>> >>>>>
>>> >>>>> %For generating the layout (also in the single subjects):
>>> >>>>>
>>> >>>>> cfg = [];
>>> >>>>>
>>> >>>>> cfg.channel = obs_data.label;
>>> >>>>>
>>> >>>>> cfg.layout = 'GSN-HydroCel-129.sfp';
>>> >>>>>
>>> >>>>> cfg.feedback = 'yes';
>>> >>>>>
>>> >>>>> lay = ft_prepare_layout(cfg);
>>> >>>>>
>>> >>>>>
>>> >>>>> cfg_neighb = [];
>>> >>>>>
>>> >>>>> cfg_neighb.feedback = 'yes';
>>> >>>>>
>>> >>>>> cfg_neighb.method = 'triangulation';
>>> >>>>>
>>> >>>>> cfg_neighb.layout = lay;
>>> >>>>>
>>> >>>>> neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >>>>>
>>> >>>>>
>>> >>>>> obs_data.elec = ft_read_sens('GSN-HydroCel-129.sfp');
>>> >>>>>
>>> >>>>>
>>> >>>>> %For computing the grand average
>>> >>>>>
>>> >>>>> cfg = [];
>>> >>>>>
>>> >>>>> cfg.channel = 'all';
>>> >>>>>
>>> >>>>> cfg.latency = 'all';
>>> >>>>>
>>> >>>>> cfg.parameter = 'avg';
>>> >>>>>
>>> >>>>> cfg.keepindividual = 'no'
>>> >>>>>
>>> >>>>> GA_90 = ft_timelockgrandaverage(cfg,all90{:});
>>> >>>>>
>>> >>>>> GA_180 = ft_timelockgrandaverage(cfg,all180{:});
>>> >>>>>
>>> >>>>> % "{:}" means to use data from all elements of the variable
>>> >>>>>
>>> >>>>>
>>> >>>>> For plotting the significant clusters
>>> >>>>>
>>> >>>>> cfg = [];
>>> >>>>>
>>> >>>>> cfg.style = 'blank';
>>> >>>>>
>>> >>>>> cfg.layout = lay;
>>> >>>>>
>>> >>>>> cfg.channellabels = 'yes';
>>> >>>>>
>>> >>>>> cfg.highlight = 'labels';
>>> >>>>>
>>> >>>>> cfg.highlightchannel = find(stat.mask);
>>> >>>>>
>>> >>>>> cfg.comment = 'no';
>>> >>>>>
>>> >>>>> figure; ft_topoplotER(cfg, GA_90)
>>> >>>>>
>>> >>>>> title('Nonparametric: significant with cluster multiple
>>> >>>>> comparison
>>> >>>>> correction')
>>> >>>>>
>>> >>>>>
>>> >>>>> Do you have ANY idea to this? I am really completely
>>> >>>>> helpless....
>>> >>>>>
>>> >>>>> thanks and best
>>> >>>>>
>>> >>>>> Katrin
>>> >>>>>
>>> >>>>> _______________________________________________
>>> >>>>> fieldtrip mailing list
>>> >>>>> fieldtrip at donders.ru.nl
>>> >>>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>>>
>>> >>>>
>>> >>>>
>>> >>>> _______________________________________________
>>> >>>> fieldtrip mailing list
>>> >>>> fieldtrip at donders.ru.nl
>>> >>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>>
>>> >>>
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> >>
>>> >>
>>> >>
>>> --------------------------------------------------------------------------------
>>> >>
>>> >> Joseph Dien, PhD
>>> >> Research Associate
>>> >> Cognitive Neurology
>>> >> The Johns Hopkins University School of Medicine
>>> >>
>>> >> Lab E-mail: jdien1 at jhmi.edu
>>> >> Private E-mail: jdien07 at mac.com
>>> >> Office Phone: 410-614-3115
>>> >> Cell Phone: 202-297-8117
>>> >> Fax: 410-955-0188
>>> >> http://joedien.com
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140908/e8846b61/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 3
>>> > Date: Mon, 08 Sep 2014 21:55:44 -0400
>>> > From: Joseph Dien <jdien07 at mac.com>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] Problem with Geodesic 129 layout!!
>>> > Message-ID: <148A801A-8CEA-4F88-A7D0-130637BDAC03 at mac.com>
>>> > Content-Type: text/plain; charset="windows-1252"
>>> >
>>> > yes, please do send me the data.
>>> >
>>> > Thanks!
>>> >
>>> > Joe
>>> >
>>> > On Sep 8, 2014, at 3:38 PM, KatrinH Heimann
>>> > <katrinheimann at gmail.com> wrote:
>>> >
>>> >> Dear Joseph, thanks so much, I really appreciate your help. I was
>>> >> also wandering, if maybe there is another bug in my code.
>>> >> Our nets are 128 channels, Hydrocel, but as a colleague of me
>>> >> adviced me to do so, I also tried the 129 layout.
>>> >> My code you find below (without selection of bad channels etc.)
>>> >> If you need also the data of two subjects to have a look, let me
>>> >> know!!!
>>> >> Best and thanks really!
>>> >> Katrin
>>> >>
>>> >>
>>> >>
>>> >> subject=input('Which subject do you want to analyse? ','s');
>>> >>
>>> >> name = strcat(subject,'.raw');
>>> >>
>>> >> subjectnumber=input('Which is the subjectnumber?', 's');
>>> >>
>>> >> sb=subjectnumber
>>> >>
>>> >> %subjectnumber = strcat(subjectnumber, '.txt')
>>> >>
>>> >> %%
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.dataset = name;
>>> >>
>>> >> cfg.trialfun = 'ft_trialfun_general'; % this is the default
>>> >>
>>> >> cfg.trialdef.eventtype = 'trigger';
>>> >>
>>> >> cfg.trialdef.eventvalue = 'stim'; % the value of the stimulus
>>> >> trigger
>>> >>
>>> >> cfg.trialdef.prestim = 0.234; % in seconds
>>> >>
>>> >> cfg.trialdef.poststim = 7.266; % in seconds (whole time of video
>>> >> observation, but maybe we need less)
>>> >>
>>> >> cfg = ft_definetrial(cfg);
>>> >>
>>> >>
>>> >>
>>> >> cfg.trl([1:7],:) = [];
>>> >>
>>> >>
>>> >>
>>> >> %change timeline according to constant offset of 16 ms = 8 samples
>>> >> (because recorded with 500 hz)in
>>> >>
>>> >> %structure trial
>>> >>
>>> >> cfg.trl(:,3)=cfg.trl(:,3)-8
>>> >>
>>> >>
>>> >>
>>> >> %change timeline to make the cut the zeropoint
>>> >>
>>> >>
>>> >>
>>> >> cfg.trl(:,3)=cfg.trl(:,3)- 1000;
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% preprocess data
>>> >>
>>> >> cfg.channel = 'all';
>>> >>
>>> >> cfg.preproc.detrend = 'yes';
>>> >>
>>> >> cfg.preproc.demean = 'yes';
>>> >>
>>> >> cfg.preproc.baselinewindow = [-2.1 -2.0]
>>> >>
>>> >> %cfg.preproc.bpfilter = 'yes'; - the data here has to be already
>>> >> filtered
>>> >>
>>> >> %(0.1-45) and bad channels have to be replaced!!!!
>>> >>
>>> >> %cfg.preproc.bpfreq = [6 32];
>>> >>
>>> >> %
>>> >>
>>> >> %
>>> >>
>>> >> obs_data = ft_preprocessing(cfg);
>>> >>
>>> >> %
>>> >>
>>> >> save (strcat(sb,'obs_data') , 'obs_data')
>>> >>
>>> >>
>>> >>
>>> >> %% determining channel neighbours (necessary for Artifact
>>> >> detection)
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.channel = obs_data.label;
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.feedback = 'yes';
>>> >>
>>> >> lay = ft_prepare_layout(cfg);
>>> >>
>>> >>
>>> >> cfg_neighb = [];
>>> >>
>>> >> cfg_neighb.feedback = 'yes';
>>> >>
>>> >>
>>> >>
>>> >> cfg_neighb.method = 'triangulation';
>>> >>
>>> >> cfg_neighb.layout = 'GSN128.sfp';
>>> >>
>>> >> neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >>
>>> >>
>>> >>
>>> >> obs_data.elec = ft_read_sens('GSN128.sfp');
>>> >>
>>> >>
>>> >>
>>> >> %% Artifacts - to detect bad channels - is not saved!!!
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> cfg.method = 'summary';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >>
>>> >> obs_data_try = ft_rejectvisual(cfg, obs_data);
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs_data);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs_data_try = ft_rejectartifact (cfg,obs_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Preparing neighbours for channel repair - but bad channel info
>>> >> in!!!
>>> >>
>>> >>
>>> >>
>>> >> % cfg_neighb = [];
>>> >>
>>> >> % cfg_neighb.feedback = 'yes';
>>> >>
>>> >> % cfg_neighb.method = 'triangulation';
>>> >>
>>> >> % cfg_neighb.layout = 'GSN-HydroCel-128.sfp';
>>> >>
>>> >> % neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >>
>>> >>
>>> >>
>>> >> % Interpolate and put into new data structure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.badchannel = {};
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.method = 'nearest';
>>> >>
>>> >> cfg.neighbours = neighbours;
>>> >>
>>> >> obs_data_channelrepaired = ft_channelrepair(cfg,obs_data)
>>> >>
>>> >>
>>> >>
>>> >> % Check reconstruction
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs_data_channelrepaired);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs_data_clean1 = ft_rejectartifact (cfg,obs_data_channelrepaired);
>>> >>
>>> >>
>>> >>
>>> >> % dat1=obs_data;
>>> >>
>>> >> % dat2=obs_data_channelrepaired;
>>> >>
>>> >> %
>>> >>
>>> >> % x=dat1.trial{1}(62,:); % 68 is channel index of E68
>>> >>
>>> >> % y=dat2.trial{1}(62,:);
>>> >>
>>> >> % plot(x);hold on;plot(y,'r');
>>> >>
>>> >> %
>>> >>
>>> >> % x=dat1.trial{1}(72,:);
>>> >>
>>> >> % y=dat2.trial{1}(75,:);
>>> >>
>>> >> % figure;
>>> >>
>>> >> % plot(x);hold on;plot(y,'r')
>>> >>
>>> >> %
>>> >>
>>> >> % x=dat1.trial{1}(75,:);
>>> >>
>>> >> % y=dat2.trial{1}(75,:);
>>> >>
>>> >> % figure;
>>> >>
>>> >> % plot(x);hold on;plot(y,'r')
>>> >>
>>> >> %% artifact rejection/trial inspection - throw out electrode jumps
>>> >> etc.
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs_data_channelrepaired);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs_data_clean1 = ft_rejectartifact (cfg,obs_data_channelrepaired);
>>> >>
>>> >>
>>> >>
>>> >> %% ICA - Anzahl der Komponenten anpassen!- adapt numcomponent
>>> >> according to channels interpolated %% 128-number of interp.
>>> >> channels)
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.channel = {'all'};
>>> >>
>>> >> cfg.numcomponent = 128
>>> >>
>>> >> comp = ft_componentanalysis(cfg,obs_data_clean1);
>>> >>
>>> >> save (strcat(sb,'comp_all') , 'comp')
>>> >>
>>> >>
>>> >>
>>> >> %%
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'component';
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='some';
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> ft_databrowser(cfg,comp);
>>> >>
>>> >>
>>> >>
>>> >> %% poweranalysis components
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.output = 'pow';
>>> >>
>>> >> cfg.channel = 'all';%compute the power spectrum in all ICs
>>> >>
>>> >> cfg.method = 'mtmfft';
>>> >>
>>> >> cfg.taper = 'hanning';
>>> >>
>>> >> cfg.foi = 0:0.2:50;
>>> >>
>>> >> obs_freq = ft_freqanalysis(cfg, comp);
>>> >>
>>> >>
>>> >>
>>> >> %And you can plot the spectra:
>>> >>
>>> >>
>>> >>
>>> >> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>> >>
>>> >> nsubplots = 16;
>>> >>
>>> >> nbyn = sqrt(nsubplots);% sqrt(nsubplots) should not contain
>>> >> decimals, type doc subplot
>>> >>
>>> >>
>>> >>
>>> >> Nfigs = ceil(size(comp.topo,1)/nsubplots);
>>> >>
>>> >> tot = Nfigs*nsubplots;
>>> >>
>>> >>
>>> >>
>>> >> rptvect = 1:size(comp.topo,1);
>>> >>
>>> >> rptvect = padarray(rptvect, [0 tot-size(comp.topo,1)], 0,'post');
>>> >>
>>> >> rptvect = reshape(rptvect,nsubplots,Nfigs)';
>>> >>
>>> >>
>>> >>
>>> >> for r=1:size(rptvect,1);
>>> >>
>>> >> figure;set(gcf,'units','normalized','outerposition',[0 0 1
>>> >> 1]);%full screen
>>> >>
>>> >> k=0;
>>> >>
>>> >> for j=1:size(rptvect,2);
>>> >>
>>> >> if~(rptvect(r,j)==0);
>>> >>
>>> >> k=k+1;
>>> >>
>>> >> cfg=[];
>>> >>
>>> >> cfg.channel = rptvect(r,j);
>>> >>
>>> >> cfg.ylim =[0 500]
>>> >>
>>> >> cfg.xlim =[0 50]
>>> >>
>>> >> subplot(nbyn,nbyn,k);ft_singleplotER(cfg,obs_freq);
>>> >>
>>> >> end
>>> >>
>>> >> end
>>> >>
>>> >> end
>>> >>
>>> >>
>>> >>
>>> >> %For the IC topos you'll follow the same logic as above but with:
>>> >>
>>> >>
>>> >>
>>> >> figure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [1:20]; % specify the component(s) that
>>> >> should be plotted
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.comment = 'no';
>>> >>
>>> >> ft_topoplotIC(cfg, comp)
>>> >>
>>> >>
>>> >>
>>> >> figure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [21:40]; % specify the component(s) that
>>> >> should be plotted
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.comment = 'no';
>>> >>
>>> >> ft_topoplotIC(cfg, comp)
>>> >>
>>> >>
>>> >>
>>> >> figure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [41:60]; % specify the component(s) that
>>> >> should be plotted
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.comment = 'no';
>>> >>
>>> >> ft_topoplotIC(cfg, comp)
>>> >>
>>> >>
>>> >>
>>> >> figure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [61:80]; % specify the component(s) that
>>> >> should be plotted
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.comment = 'no';
>>> >>
>>> >> ft_topoplotIC(cfg, comp)
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Seperate observation conditions
>>> >>
>>> >>
>>> >>
>>> >> name1= strcat(num2str(sb),'_90.xls');
>>> >>
>>> >> list1=xlsread (name1)
>>> >>
>>> >>
>>> >>
>>> >> name2= strcat(num2str(sb),'_180.xls');
>>> >>
>>> >> list2=xlsread (name2)
>>> >>
>>> >>
>>> >> %
>>> >>
>>> >>
>>> >>
>>> >> cfg = []
>>> >>
>>> >> cfg.trials = [list1]
>>> >>
>>> >> obs90_data = ft_redefinetrial(cfg,obs_data_channelrepaired)
>>> >>
>>> >>
>>> >>
>>> >> cfg = []
>>> >>
>>> >> cfg.trials = [list2]
>>> >>
>>> >> obs180_data = ft_redefinetrial(cfg,obs_data_channelrepaired)
>>> >>
>>> >>
>>> >>
>>> >> %%PIPELINE FOR obs90
>>> >>
>>> >>
>>> >>
>>> >> %% Decompose original data according to the components found before
>>> >>
>>> >> load (strcat(sb,'comp_all'))
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.numcomponent = 128;
>>> >>
>>> >> cfg.unmixing = comp.unmixing;
>>> >>
>>> >> cfg.topolabel = comp.topolabel;
>>> >>
>>> >>
>>> >>
>>> >> comp_1 = ft_componentanalysis(cfg, obs90_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Reject component
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [];
>>> >>
>>> >> obs90_data_ica_cleaned = ft_rejectcomponent(cfg, comp_1,
>>> >> obs90_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(sb,'obs90_ica_cleaned') , 'obs90_data_ica_cleaned')
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Artifacts - final detection
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> cfg.method = 'summary';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >>
>>> >> obs90_data_clean3 = ft_rejectvisual(cfg, obs90_data_ica_cleaned);
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs90_data_clean3);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs90_data_clean2 = ft_rejectartifact (cfg,obs90_data_clean3);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> % Save clean data
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs90_clean') , 'obs90_data_clean2')
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Rereferencing data
>>> >>
>>> >> cfg = [];
>>> >>
>>> >>
>>> >>
>>> >> cfg.channel = 'all';
>>> >>
>>> >> cfg.preproc.reref = 'yes';
>>> >>
>>> >> cfg.preproc.refchannel = 'all';
>>> >>
>>> >> obs90_data_ref= ft_preprocessing(cfg,obs90_data_clean2)
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs90_ref') , 'obs90_data_ref')
>>> >>
>>> >> %% Snap out smaller pieces (the third second)
>>> >>
>>> >>
>>> >>
>>> >> cfg = []
>>> >>
>>> >> cfg.toilim = [0 1]
>>> >>
>>> >>
>>> >>
>>> >> obs90_data_small = ft_redefinetrial(cfg,obs90_data_ref)
>>> >>
>>> >>
>>> >>
>>> >> %% TIMELOCK ERP
>>> >>
>>> >> obs90_data_ERP = ft_timelockanalysis(cfg, obs90_data_small);
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs90_ERP') , 'obs90_data_ERP')
>>> >>
>>> >>
>>> >>
>>> >> %% plot it
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.layout = lay ;
>>> >>
>>> >> cfg.interactive = 'yes';
>>> >>
>>> >> ft_multiplotER(cfg, obs90_data_ERP)
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% PIPELINE FOR obs180
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Decompose original data according to the components found before
>>> >>
>>> >> load (strcat(sb,'comp_all'))
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.numcomponent = 128
>>> >>
>>> >> cfg.unmixing = comp.unmixing;
>>> >>
>>> >> cfg.topolabel = comp.topolabel;
>>> >>
>>> >> comp_2 = ft_componentanalysis(cfg, obs180_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Reject component
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [];
>>> >>
>>> >> obs180_data_ica_cleaned = ft_rejectcomponent(cfg, comp_2,
>>> >> obs180_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(sb,'obs180_ica_cleaned') , 'obs180_data_ica_cleaned')
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Artifacts final 180
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> cfg.method = 'summary';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >>
>>> >> obs180_data_clean3 = ft_rejectvisual(cfg, obs180_data_ica_cleaned);
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs180_data_clean3);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs180_data_clean2 = ft_rejectartifact (cfg,obs180_data_clean3);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> % Save clean data
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs180_clean') , 'obs180_data_clean2')
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Rereferencing data
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.channel = 'all';
>>> >>
>>> >> cfg.preproc.reref = 'yes';
>>> >>
>>> >> cfg.preproc.refchannel = 'all';
>>> >>
>>> >> obs180_data_ref= ft_preprocessing(cfg,obs180_data_clean2)
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs180_ref') , 'obs180_data_ref')
>>> >>
>>> >> %% Snap out smaller pieces (the third second)
>>> >>
>>> >>
>>> >>
>>> >> cfg = []
>>> >>
>>> >> cfg.toilim = [0 1]
>>> >>
>>> >>
>>> >>
>>> >> obs180_data_small = ft_redefinetrial(cfg,obs180_data_ref)
>>> >>
>>> >>
>>> >>
>>> >> %% TIMELOCK ERP
>>> >>
>>> >> obs180_data_ERP = ft_timelockanalysis(cfg, obs180_data_small);
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs180_ERP') , 'obs180_data_ERP')
>>> >>
>>> >>
>>> >>
>>> >> %% plot 180 ERP
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.layout = lay ;
>>> >>
>>> >> cfg.interactive = 'yes';
>>> >>
>>> >> ft_multiplotER(cfg, obs180_data_ERP)
>>> >>
>>> >>
>>> >>
>>> >> %% plot both ERPs
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.layout = lay ;
>>> >>
>>> >> cfg.interactive = 'yes';
>>> >>
>>> >> cfg.showlabels = 'yes';
>>> >>
>>> >> ft_multiplotER(cfg, obs90_data_ERP, obs180_data_ERP)
>>> >>
>>> >>
>>> >>
>>> >> %% plot difference wave
>>> >>
>>> >>
>>> >>
>>> >> difference = obs180_data_ERP; % copy one of
>>> >> the structures
>>> >>
>>> >> difference.avg = obs180_data_ERP.avg - obs90_data_ERP.avg; %
>>> >> compute the difference ERP
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.layout = lay;
>>> >>
>>> >> cfg.interactive = 'yes';
>>> >>
>>> >> ft_multiplotER(cfg, difference)
>>> >>
>>> >>
>>> >> 2014-09-07 7:53 GMT+02:00 Joseph Dien <jdien07 at mac.com>:
>>> >> Hi,
>>> >> I?m one of the main Fieldtrip contributors working on supporting
>>> >> EGI data. A couple things. First of all, exactly which net do
>>> >> you use? If they are 129-channel, there is still the question of
>>> >> whether they are the Hydrocel or the older geodesic nets.
>>> >> Regardless, that shouldn't cause an error like this. Could you
>>> >> send me the file you are trying to process and the script you are
>>> >> using and I?ll try troubleshooting it.
>>> >>
>>> >> Joe
>>> >>
>>> >>
>>> >> On Aug 26, 2014, at 12:53 AM, Ana Laura Diez Martini
>>> >> <diezmartini at gmail.com> wrote:
>>> >>
>>> >>> Which nets do you use? I use EGI. I tried both the ones you
>>> >>> mention and they didn't work. It was hard to find that exact one
>>> >>> online but it was the only file that actually worked.
>>> >>>
>>> >>>
>>> >>> On Mon, Aug 25, 2014 at 7:52 AM, KatrinH Heimann
>>> >>> <katrinheimann at gmail.com> wrote:
>>> >>> Dear Ana, dear all,
>>> >>> the layout you used does not correspond to our nets. I tried the
>>> >>> GSN-HydroCel-128.sfp and the GSN-HydroCel-129.sfp. Both don't
>>> >>> work. Please can anybody help?
>>> >>> Cheers
>>> >>> Katrin
>>> >>>
>>> >>>
>>> >>> 2014-08-24 5:40 GMT+02:00 Ana Laura Diez Martini
>>> >>> <diezmartini at gmail.com>:
>>> >>>
>>> >>> Try this one I use
>>> >>>
>>> >>>
>>> >>> On Sun, Aug 24, 2014 at 4:08 AM, KatrinH Heimann
>>> >>> <katrinheimann at gmail.com> wrote:
>>> >>> Dear all, my problems seem neverending. This time however i really
>>> >>> need help.
>>> >>> I implemented a pipeline for ERPs. All works now, trialdefinition,
>>> >>> preprocessing, channelreplacement, ica, componentrejection, final
>>> >>> artifactdetection, timelock of the single subject data. However,
>>> >>> when I wanna compute the grandaverage of the single subjects I get
>>> >>> the following error message:
>>> >>>
>>> >>> computing average of avg over 19 subjects
>>> >>> Warning: discarding electrode information because it cannot be
>>> >>> averaged
>>> >>> > In ft_timelockgrandaverage at 249
>>> >>> the call to "ft_timelockgrandaverage" took 0 seconds and required
>>> >>> the additional allocation of an estimated 3 MB
>>> >>> computing average of avg over 2 subjects
>>> >>> Warning: discarding electrode information because it cannot be
>>> >>> averaged
>>> >>> > In ft_timelockgrandaverage at 249
>>> >>> the call to "ft_timelockgrandaverage" took 0 seconds and required
>>> >>> the additional allocation of an estimated 0 MB
>>> >>> the call to "ft_prepare_layout" took 0 seconds and required the
>>> >>> additional allocation of an estimated 0 MB
>>> >>> the call to "ft_topoplotER" took 0 seconds and required the
>>> >>> additional allocation of an estimated 0 MB
>>> >>>
>>> >>> Furthermore in the plot of the significant clusters, the
>>> >>> channelnames are mixed up (do not correspond to my net)
>>> >>>
>>> >>>
>>> >>> I guess that there is a problem with the layout I use.
>>> >>> Here the code that I use
>>> >>>
>>> >>> %For generating the layout (also in the single subjects):
>>> >>> cfg = [];
>>> >>>
>>> >>> cfg.channel = obs_data.label;
>>> >>>
>>> >>> cfg.layout = 'GSN-HydroCel-129.sfp';
>>> >>>
>>> >>> cfg.feedback = 'yes';
>>> >>>
>>> >>> lay = ft_prepare_layout(cfg);
>>> >>>
>>> >>>
>>> >>> cfg_neighb = [];
>>> >>>
>>> >>> cfg_neighb.feedback = 'yes';
>>> >>>
>>> >>> cfg_neighb.method = 'triangulation';
>>> >>>
>>> >>> cfg_neighb.layout = lay;
>>> >>>
>>> >>> neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >>>
>>> >>>
>>> >>> obs_data.elec = ft_read_sens('GSN-HydroCel-129.sfp');
>>> >>>
>>> >>>
>>> >>>
>>> >>> %For computing the grand average
>>> >>>
>>> >>> cfg = [];
>>> >>>
>>> >>> cfg.channel = 'all';
>>> >>>
>>> >>> cfg.latency = 'all';
>>> >>>
>>> >>> cfg.parameter = 'avg';
>>> >>>
>>> >>> cfg.keepindividual = 'no'
>>> >>>
>>> >>> GA_90 = ft_timelockgrandaverage(cfg,all90{:});
>>> >>>
>>> >>> GA_180 = ft_timelockgrandaverage(cfg,all180{:});
>>> >>>
>>> >>> % "{:}" means to use data from all elements of the variable
>>> >>>
>>> >>>
>>> >>> For plotting the significant clusters
>>> >>>
>>> >>> cfg = [];
>>> >>>
>>> >>> cfg.style = 'blank';
>>> >>>
>>> >>> cfg.layout = lay;
>>> >>>
>>> >>> cfg.channellabels = 'yes';
>>> >>>
>>> >>> cfg.highlight = 'labels';
>>> >>>
>>> >>> cfg.highlightchannel = find(stat.mask);
>>> >>>
>>> >>> cfg.comment = 'no';
>>> >>>
>>> >>> figure; ft_topoplotER(cfg, GA_90)
>>> >>>
>>> >>> title('Nonparametric: significant with cluster multiple comparison
>>> >>> correction')
>>> >>>
>>> >>>
>>> >>>
>>> >>> Do you have ANY idea to this? I am really completely helpless....
>>> >>>
>>> >>> thanks and best
>>> >>>
>>> >>> Katrin
>>> >>>
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> >>
>>> --------------------------------------------------------------------------------
>>> >>
>>> >> Joseph Dien, PhD
>>> >> Research Associate
>>> >> Cognitive Neurology
>>> >> The Johns Hopkins University School of Medicine
>>> >>
>>> >> Lab E-mail: jdien1 at jhmi.edu
>>> >> Private E-mail: jdien07 at mac.com
>>> >> Office Phone: 410-614-3115
>>> >> Cell Phone: 202-297-8117
>>> >> Fax: 410-955-0188
>>> >> http://joedien.com
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >
>>> >
>>> --------------------------------------------------------------------------------
>>> >
>>> > Joseph Dien, PhD
>>> > Research Associate
>>> > Cognitive Neurology
>>> > The Johns Hopkins University School of Medicine
>>> >
>>> > Lab E-mail: jdien1 at jhmi.edu
>>> > Private E-mail: jdien07 at mac.com
>>> > Office Phone: 410-614-3115
>>> > Cell Phone: 202-297-8117
>>> > Fax: 410-955-0188
>>> > http://joedien.com
>>> >
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140908/81922ad2/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 4
>>> > Date: Tue, 9 Sep 2014 06:37:13 +0000
>>> > From: "Caspar, Emilie" <e.caspar at ucl.ac.uk>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] ft_rejectvisual: removing trials marked as
>>> > bad
>>> > Message-ID: <3C365782-4B07-4EFE-A921-99489BDD5DA6 at live.ucl.ac.uk>
>>> > Content-Type: text/plain; charset="iso-8859-1"
>>> >
>>> > Hi Ashley,
>>> >
>>> > Maybe the mistake is you did not integrate in your script the
>>> > command to save the rejection. Normally, with the following command,
>>> > you will see in the Matlab Window that artifacts are correctly
>>> > rejected after the "quit" button.
>>> >
>>> > clean_data = ft_rejectvisual(cfg, interpoldata);
>>> > cfg.artfctdef.reject = 'complete';
>>> > cfg.artfctdef.feedback = 'yes';
>>> > cleandata = ft_rejectartifact(cfg,clean_data);
>>> >
>>> > Emilie
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > Le 3 sept. 2014 ? 11:58, Ashley Greene
>>> > <agreene24 at gmail.com<mailto:agreene24 at gmail.com>> a ?crit :
>>> >
>>> > Hello,
>>> >
>>> > I have used the rejectvisual function in attempt to remove bad
>>> > trials, but after marking them and pressing the quit button,
>>> > although the command window states that the selected trials have
>>> > been removed, there is no obvious change in the data; all of the
>>> > trials are still intact. Have I overlooked something?
>>> >
>>> > Thanks,
>>> >
>>> > Ashley
>>> > _______________________________________________
>>> > fieldtrip mailing list
>>> > fieldtrip at donders.ru.nl<mailto:fieldtrip at donders.ru.nl>
>>> > http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140909/4c2d0985/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 5
>>> > Date: Tue, 09 Sep 2014 14:16:20 +0200
>>> > From: Patricia Wollstadt <Patricia.Wollstadt at gmx.de>
>>> > To: fieldtrip at science.ru.nl
>>> > Subject: Re: [FieldTrip] TRENTOOL pipeline help
>>> > Message-ID: <540EEF94.9080601 at gmx.de>
>>> > Content-Type: text/plain; charset="windows-1252"
>>> >
>>> > Hello Max,
>>> >
>>> > I added a few comments to the questions regarding individual
>>> > parameters
>>> > below. To address the general problem of TRENTOOL telling you, that
>>> > there are not enough sample points in your data: From what I can see
>>> > in
>>> > your script, you probably don't have enough data points in each time
>>> > series to robustly estimate TE. You analyze 800 ms of data sampled
>>> > at
>>> > 300 Hz, which gives you 240 samples per time series. Can you maybe
>>> > avoid
>>> > downsampling to 300 Hz and downsample to 600 Hz instead? Or could
>>> > you
>>> > analyze a longer time window of interest?
>>> > Note that you also 'lose' data to embedding and the interaction
>>> > delay:
>>> > The first point that can be used for TE estimation is at max.
>>> > embedding
>>> > length + max. interaction delay in samples. For example: max.
>>> > embedding
>>> > length = dim * tau_factor * ACT = 10 * 0.4 * 5 = 20 samples plus the
>>> > max
>>> > interaction delay of 30 ms = 9 samples. In this example, you would
>>> > be
>>> > left with 240 - 29 samples for TE estimation per trial. There is
>>> > also
>>> > the possibility to estimate time resolved TE/TE for shorter time
>>> > windows
>>> > of interest (see section 4.4 in the manual); however, this method
>>> > requires the use of a GPU for TE estimation.
>>> >
>>> > I would further recommend to use the new pipeline for group
>>> > statistics
>>> > described in the manual in section 4.5 (the function
>>> > 'TEgroup_calculate'
>>> > is deprecated). The new pipeline allows you to reconstruct the
>>> > interaction delay and uses the following functions (see also
>>> > comments in
>>> > the script):
>>> >
>>> > TEgroup_prepare -> prepares all data sets (all subjects/all
>>> > conditions) for group analysis (this means finding common embedding
>>> > parameters such that estimates are not biased between groups)
>>> > InteractionDelayReconstruction_calculate -> estimates TE for
>>> > individual data sets and all assumed interaction delays u
>>> > InteractionDelayReconstruction_analyze -> reconstructs the
>>> > interaction delay by selecting the u that maximizes TE for each
>>> > channel
>>> > TEgroup_stats -> calculate group statistics using a permutation test
>>> >
>>> > I can send you an example script for group TE analysis using this
>>> > pipeline to get you started. I hope this helps you to get the group
>>> > analysis running. Just write again if you're having trouble setting
>>> > up
>>> > the pipeline or something is not clear about the parameters/my
>>> > comments.
>>> >
>>> > Best,
>>> > Patricia
>>> >
>>> >
>>> >
>>> >
>>> > On 09/04/2014 08:30 PM, Max Cantor wrote:
>>> >> Hi fieldtrippers,
>>> >>
>>> >> I know trentool is not produced by the Donders Institute, so I'm
>>> >> not
>>> >> 100% sure if it is appropriate to ask questions about it here, but
>>> >> to
>>> >> the best of my knowledge they do not have a mailing list and I saw
>>> >> a
>>> >> few trentool questions in the archives, so I'm going to assume it's
>>> >> ok...
>>> >>
>>> >> In any case, below is my current pipeline (slightly modified for
>>> >> comprehensibility):
>>> >>
>>> >> (notes in bold are comments/questions made in this email, not
>>> >> present
>>> >> in the pipeline. Sorry in advance for the long post! Any help would
>>> >> be
>>> >> greatly appreciated as I'm a bit over my head on this but I think
>>> >> I'm
>>> >> close!)
>>> >>
>>> >> *****
>>> >>
>>> >> % Prepare group TE data
>>> >>
>>> >> cfgP = [];
>>> >> cfgP.Path2TSTOOL = *TSTOOLPATH*
>>> >> cfgP.TEcalctype = 'VW_ds';
>>> >> cfgP.channel = {'ctfdip_LAC' 'ctfdip_RAC'};
>>> >>
>>> >> *I'm trying to find the transfer entropy between the left and right
>>> >> auditory cortices in my experiment. The input is virtual sensor
>>> >> data
>>> >> that was produced using SAM in fieldtrip on real MEG data. *
>>> >>
>>> >> % specify u to be scanned
>>> >>
>>> >> cfgP.predicttime_u = 30;
>>> >> cfgP.toi = [-0.4 0.4];
>>> >>
>>> >> *For clarification, the predicttime_u is in seconds but the toi is
>>> >> in
>>> >> milliseconds. If I understand correctly, the predicttime_u must fit
>>> >> within the toi, but beyond that are there any benefits to it being
>>> >> earlier or later?* PW: The predictiontime_u is in milliseconds and
>>> >> the
>>> >> toi is in seconds. The prediction time is the assumed interaction
>>> >> delay between your two sources and should fit within your toi. In
>>> >> general it is preferable to use the method for interaction delay
>>> >> reconstruction for TE estimation, because it allows you to
>>> >> reconstruct
>>> >> the actual delay between your source and target times series. A
>>> >> non-optimal u/interaction delay may cause an underestimation of TE,
>>> >> so
>>> >> it is recommended to use the pipeline for interaction delay
>>> >> reconstruction whenever estimating TE for unknown delays.
>>> >> If you use the methods for interaction delay reconstruction
>>> >> 'predicttime_u' is replaced by
>>> >> cfgTEP.predicttimemin_u % minimum u to be scanned
>>> >> cfgTEP.predicttimemax_u % maximum u to be scanned
>>> >> cfgTEP.predicttimestepsize % time steps between u to be scanned
>>> >> A large range for u values to be scanned increases computing time a
>>> >> lot, so it is best to limit the u range to values that are
>>> >> physiologically plausible.
>>> >>
>>> >> % ACT (Autocorrelation Time) estimation and constraints
>>> >>
>>> >> cfgP.maxlag = 150;
>>> >> cfgP.actthrvalue = 7.5;
>>> >> cfgP.minnrtrials = 5;
>>> >>
>>> >> *My understanding is maxlag should be 1/2 the sampling rate, so
>>> >> since
>>> >> the data are downsampled to 300hz, it should be 150. I know that
>>> >> the
>>> >> sample rate and filters are used to determine the actthrvalue, but
>>> >> I
>>> >> don't actually know the calculation. 7.5 was a rough guess just to
>>> >> test the pipeline. I'm also uncertain of what minnrtrials should
>>> >> be.*
>>> >> PW: You can set the actthrvalue based on the filtering you did
>>> >> prior
>>> >> to TE analysis. If you for example highpass filtered at 10 Hz, you
>>> >> shouldn't find an ACT higher than 30 samples, because you filtered
>>> >> out
>>> >> any components of the signal slower than 10 Hz/30 samples (given
>>> >> your
>>> >> sampling frequency of 300 Hz). So in this scenario the actthrvalue
>>> >> would be 30.
>>> >> A good value for cfgP.minnrtrials is 12 (a minimum number of trials
>>> >> is
>>> >> needed to realize the permutation test for estimated TE values).
>>> >>
>>> >> % Optimization
>>> >>
>>> >> cfgP.optimizemethod = 'ragwitz';
>>> >> cfgP.ragdim = 4:8;
>>> >> cfgP.ragtaurange = [0.2 0.4];
>>> >> cfgP.ragtausteps = 15;
>>> >> cfgP.repPred = 100;
>>> >> *
>>> >> *
>>> >> *I am completely at a loss for this. I've done some reading into
>>> >> transfer entropy, mutual information, etc., cited in trentool, but
>>> >> I'm
>>> >> yet to understand how exactly this optimization works and what the
>>> >> configuration should be, given my data and experimental
>>> >> intentions.*
>>> >> PW: The Ragwitz criterion tries to find optimal embedding
>>> >> parameters
>>> >> dim and tau for the data. To do that, the method iteratively takes
>>> >> all
>>> >> possible combinations of dim and tau values that are provided in
>>> >> cfgP.ragdim and cfgP.ragtaurange/.ragtausteps and tests how well
>>> >> these
>>> >> combinations embed the data. To test an embedding, the method
>>> >> builds
>>> >> the embedding vectors from the data; it then tests for each point
>>> >> how
>>> >> well the next point in time can be predicted from the reference
>>> >> point's nearest neighbours. So for each embedded point, the method
>>> >> searches for the nearest neighbours and calculates the average of
>>> >> those nearest neighbours. The difference between the
>>> >> averaged/predicted point and the actual next point is the error of
>>> >> the
>>> >> local predictor. The Ragwitz criterion will then return the
>>> >> parameter
>>> >> combination for which this error over all points is minimal.
>>> >> The parameters set the following: 'ragdim' are dimensions to be
>>> >> tested
>>> >> by the method (I would reccomend to start with 2:10), 'ragtaurange'
>>> >> together with 'ragtausteps' specifies the tau values to be tested
>>> >> (TRENTOOL will build a vector from 0.2 to 0.4 in 15 steps). Note,
>>> >> that
>>> >> the values here are factors that are later multiplied with the ACT
>>> >> to
>>> >> obtain the actual tau. 'repPred' is the number of points that will
>>> >> be
>>> >> used for the local prediction, i.e. the Ragwitz criterion will test
>>> >> the local prediction and calculate the error for the first 100
>>> >> points
>>> >> in your time series. The two parameters 'flagNei' ans 'sizeNei'
>>> >> below
>>> >> specify the type of neighbour search conducted by the Ragwitz
>>> >> criterion: 'flagNei' tells the method to either conduct a kNN or
>>> >> range
>>> >> search; 'sizeNei' specifies the number of neighbours or the radius
>>> >> to
>>> >> be searched by a range search.
>>> >>
>>> >>
>>> >> % Kernel-based TE estimation
>>> >>
>>> >> cfgP.flagNei = 'Mass';
>>> >> cfgP.sizeNei = 4; % Default
>>> >>
>>> >> cfgP.ensemblemethod = 'no';
>>> >> cfgP.outputpath = *OUTPUT PATH*;
>>> >>
>>> >> if ~exist(*Path for TEprepare data object*)
>>> >> load VSdat;
>>> >> TE_Wrd = {};
>>> >> for i = 1:nConds
>>> >> for j = 1:Nsub
>>> >> TE_Wrd{i}{j} = TEprepare(cfgP, VSdat{i}{j});
>>> >> end
>>> >> end
>>> >> clear VSdat;
>>> >> save('TE_Wrd', 'TE_Wrd');
>>> >> end
>>> >> *
>>> >> *
>>> >> *The configuration and virtual sensor data, organized in a 3 x 15
>>> >> cell
>>> >> of structures (condition by subject) are the input. The TEprepare
>>> >> substructure is added to each individual condition x subject .mat
>>> >> files' data structure which are stored on disk independently.*
>>> >>
>>> >> % Use object_to_mat_conversion.m to replace individual condition x
>>> >> subject virtual sensor data
>>> >> % .mat files with their TE_Wrd equivalent
>>> >> *
>>> >> *
>>> >> *I'm using a separate script to make some manipulations to the
>>> >> objects
>>> >> from disk; this will all eventually be integrated into the main
>>> >> pipeline*.*TRENTOOL seems to handle data output very differently
>>> >> from
>>> >> fieldtrip and I've had trouble thinking through the most logical
>>> >> way
>>> >> to handle the data so it's a bit haphazard right now.*
>>> >>
>>> >> load cond080sub01.mat
>>> >>
>>> >> cfgG = [];
>>> >> cfgG.dim = cond080sub01.TEprepare.optdim;
>>> >> cfgG.tau = cond080sub01.TEprepare.opttau;
>>> >>
>>> >> if isfield(cond080sub01, 'TEprepare')
>>> >> TEgroup_prepare(cfgG, fileCell);
>>> >> else
>>> >> error('Need to run TEprepare before TEgroup_prepare');
>>> >> end
>>> >> *
>>> >> *
>>> >> *For clarification, fileCell is a cell with the name of each
>>> >> condition
>>> >> x subject .mat file, which as I said before is collectively the
>>> >> same
>>> >> as the 3 x 15 VSdat structure (condition x subject).*
>>> >>
>>> >> % Replace .mat files with '_for_TEgroup_calculate' version in
>>> >> % object_to_mat_conversion.m
>>> >>
>>> >> % TE Group Calculate
>>> >>
>>> >> load cond080sub01.mat
>>> >> if isfield(cond080sub01, 'TEgroupprepare')
>>> >> for i = 1:length(fileCell)
>>> >> TEgroup_calculate(fileCell{i});
>>> >> end
>>> >> else
>>> >> error('Need to run TEgroup_prepare before TEgroup_calculate');
>>> >> end
>>> >> *
>>> >> *
>>> >> *At this step I get the following error:
>>> >>
>>> >> Error using transferentropy (line 337)
>>> >> \nTRENTOOL ERROR: not enough data points left after embedding
>>> >>
>>> >> Error in TEgroup_calculate (line 133)
>>> >> [TEresult] = transferentropy(cfg,data);*
>>> >>
>>> >> % TE Group Stats
>>> >>
>>> >> cfgGSTAT = [];
>>> >> cfgGSTAT.design(1,1:2*Nsub) = [ones(1,Nsub) 2*ones(1,Nsub)];
>>> >> cfgGSTAT.design(2,1:2*Nsub) = [1:Nsub 1:Nsub];
>>> >>
>>> >> cfgGSTAT.uvar = 1;
>>> >> cfgGSTAT.ivar = 2;
>>> >> cfgGSTAT.fileidout = 'test_groupstats';
>>> >>
>>> >> TEgroup_stats(cfgGSTAT, fileCell);
>>> >>
>>> >> *Given the error above, I am yet to get to this step, but it does
>>> >> not
>>> >> seem fundamentally different from normal fieldtrip stats.*
>>> >>
>>> >> *****
>>> >>
>>> >> In case my notes were not clear or you skipped to the bottom, *my
>>> >> primary concern is whether the error I'm getting in
>>> >> TEgroup_calculate
>>> >> is a pipeline issue* (I noticed the example pipeline in trentool,
>>> >> the
>>> >> manual, and published methods articles all seem to have slightly or
>>> >> significantly different pipeline compositions), *or if the error
>>> >> is*
>>> >> due to ACT, ragwitz optimization, or some other faulty
>>> >> parameterization *on my part due to a lack of understanding of how
>>> >> transfer entropy works on a more theoretical/mathematical level*.
>>> >> If
>>> >> the latter is the case, is there any relatively straightforward way
>>> >> to
>>> >> conceptualize this, or is this something where I'm just going to
>>> >> have
>>> >> to keep reading and rereading until it eventually makes sense? I've
>>> >> already done quite a bit of that and it hasn't pierced my thick
>>> >> skull
>>> >> yet but I'm sure it will eventually!
>>> >>
>>> >> Thank you so much,
>>> >>
>>> >> Max Cantor
>>> >>
>>> >>
>>> >> --
>>> >> Max Cantor
>>> >> Lab Manager
>>> >> Computational Neurolinguistics Lab
>>> >> University of Michigan
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >
>>> > --
>>> > ------------------------------------------------------------
>>> >
>>> > Patricia Wollstadt, PhD Student
>>> >
>>> > MEG Unit, Brain Imaging Center
>>> >
>>> > Goethe University, Frankfurt, Germany
>>> >
>>> > Heinrich Hoffmann Strasse 10, Haus 93 B
>>> >
>>> > D - 60528 Frankfurt am Main
>>> >
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140909/ce6b297f/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 6
>>> > Date: Tue, 9 Sep 2014 15:21:20 +0200
>>> > From: Holger Krause <Holger.Krause at med.uni-duesseldorf.de>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: [FieldTrip] Latest FT version on ftp-server is from three
>>> > days ago
>>> > Message-ID:
>>> > <201409091521.22589.Holger.Krause at med.uni-duesseldorf.de>
>>> > Content-Type: text/plain; charset="us-ascii"
>>> >
>>> > Dear developers,
>>> >
>>> > Could you please check the process for creation/publication of
>>> > zip-files on
>>> > the FTP server? The latest file I can find there is
>>> > fieldtrip-20140906.zip.
>>> >
>>> > Thanks in advance,
>>> >
>>> > Holger
>>> >
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 7
>>> > Date: Tue, 9 Sep 2014 09:19:55 -0400
>>> > From: Max Cantor <mcantor at umich.edu>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] TRENTOOL pipeline help
>>> > Message-ID:
>>> > <CAFTjRaUXzwca7rR3sm8iPLLyUxqHO9kkm++=zAU4LUW=r7NRBw at mail.gmail.com>
>>> > Content-Type: text/plain; charset="utf-8"
>>> >
>>> > This is immensely helpful, thank you. I was very confused about why
>>> > some
>>> > versions of the pipeline I saw were using group calculate and others
>>> > were
>>> > using interaction delay reconstruction and what that meant, and I
>>> > think I
>>> > have a more clear idea of what the different steps of the pipeline
>>> > are
>>> > doing. There are still a few things I'm a bit confused about though
>>> > in
>>> > terms of the pipeline. For instance, whether or not I need to do
>>> > TEprepare
>>> > before group prepare, and if I need to do graph analysis (which I'm
>>> > not
>>> > sure I fully understand but also haven't looked deeply into) before
>>> > group
>>> > stats.
>>> >
>>> > If you don't mind me taking you up on your offer, I think seeing
>>> > your
>>> > example script might help clarify some of these issues.
>>> >
>>> > Thank you!
>>> >
>>> > On Tue, Sep 9, 2014 at 8:16 AM, Patricia Wollstadt <
>>> > Patricia.Wollstadt at gmx.de> wrote:
>>> >
>>> >> Hello Max,
>>> >>
>>> >> I added a few comments to the questions regarding individual
>>> >> parameters
>>> >> below. To address the general problem of TRENTOOL telling you, that
>>> >> there
>>> >> are not enough sample points in your data: From what I can see in
>>> >> your
>>> >> script, you probably don't have enough data points in each time
>>> >> series to
>>> >> robustly estimate TE. You analyze 800 ms of data sampled at 300 Hz,
>>> >> which
>>> >> gives you 240 samples per time series. Can you maybe avoid
>>> >> downsampling to
>>> >> 300 Hz and downsample to 600 Hz instead? Or could you analyze a
>>> >> longer time
>>> >> window of interest?
>>> >> Note that you also 'lose' data to embedding and the interaction
>>> >> delay: The
>>> >> first point that can be used for TE estimation is at max. embedding
>>> >> length
>>> >> + max. interaction delay in samples. For example: max. embedding
>>> >> length =
>>> >> dim * tau_factor * ACT = 10 * 0.4 * 5 = 20 samples plus the max
>>> >> interaction
>>> >> delay of 30 ms = 9 samples. In this example, you would be left with
>>> >> 240 -
>>> >> 29 samples for TE estimation per trial. There is also the
>>> >> possibility to
>>> >> estimate time resolved TE/TE for shorter time windows of interest
>>> >> (see
>>> >> section 4.4 in the manual); however, this method requires the use
>>> >> of a GPU
>>> >> for TE estimation.
>>> >>
>>> >> I would further recommend to use the new pipeline for group
>>> >> statistics
>>> >> described in the manual in section 4.5 (the function
>>> >> 'TEgroup_calculate' is
>>> >> deprecated). The new pipeline allows you to reconstruct the
>>> >> interaction
>>> >> delay and uses the following functions (see also comments in the
>>> >> script):
>>> >>
>>> >> TEgroup_prepare -> prepares all data sets (all subjects/all
>>> >> conditions)
>>> >> for group analysis (this means finding common embedding parameters
>>> >> such
>>> >> that estimates are not biased between groups)
>>> >> InteractionDelayReconstruction_calculate -> estimates TE for
>>> >> individual data sets and all assumed interaction delays u
>>> >> InteractionDelayReconstruction_analyze -> reconstructs the
>>> >> interaction delay by selecting the u that maximizes TE for each
>>> >> channel
>>> >> TEgroup_stats -> calculate group statistics using a permutation
>>> >> test
>>> >>
>>> >> I can send you an example script for group TE analysis using this
>>> >> pipeline
>>> >> to get you started. I hope this helps you to get the group analysis
>>> >> running. Just write again if you're having trouble setting up the
>>> >> pipeline
>>> >> or something is not clear about the parameters/my comments.
>>> >>
>>> >> Best,
>>> >> Patricia
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> On 09/04/2014 08:30 PM, Max Cantor wrote:
>>> >>
>>> >> Hi fieldtrippers,
>>> >>
>>> >> I know trentool is not produced by the Donders Institute, so I'm
>>> >> not 100%
>>> >> sure if it is appropriate to ask questions about it here, but to
>>> >> the best
>>> >> of my knowledge they do not have a mailing list and I saw a few
>>> >> trentool
>>> >> questions in the archives, so I'm going to assume it's ok...
>>> >>
>>> >> In any case, below is my current pipeline (slightly modified for
>>> >> comprehensibility):
>>> >>
>>> >> (notes in bold are comments/questions made in this email, not
>>> >> present in
>>> >> the pipeline. Sorry in advance for the long post! Any help would be
>>> >> greatly
>>> >> appreciated as I'm a bit over my head on this but I think I'm
>>> >> close!)
>>> >>
>>> >> *****
>>> >>
>>> >> % Prepare group TE data
>>> >>
>>> >> cfgP = [];
>>> >> cfgP.Path2TSTOOL = *TSTOOLPATH*
>>> >> cfgP.TEcalctype = 'VW_ds';
>>> >> cfgP.channel = {'ctfdip_LAC' 'ctfdip_RAC'};
>>> >>
>>> >> *I'm trying to find the transfer entropy between the left and right
>>> >> auditory cortices in my experiment. The input is virtual sensor
>>> >> data that
>>> >> was produced using SAM in fieldtrip on real MEG data. *
>>> >>
>>> >> % specify u to be scanned
>>> >>
>>> >> cfgP.predicttime_u = 30;
>>> >> cfgP.toi = [-0.4 0.4];
>>> >>
>>> >> *For clarification, the predicttime_u is in seconds but the toi
>>> >> is in
>>> >> milliseconds. If I understand correctly, the predicttime_u must fit
>>> >> within
>>> >> the toi, but beyond that are there any benefits to it being earlier
>>> >> or
>>> >> later?* PW: The predictiontime_u is in milliseconds and the toi is
>>> >> in
>>> >> seconds. The prediction time is the assumed interaction delay
>>> >> between your
>>> >> two sources and should fit within your toi. In general it is
>>> >> preferable to
>>> >> use the method for interaction delay reconstruction for TE
>>> >> estimation,
>>> >> because it allows you to reconstruct the actual delay between your
>>> >> source
>>> >> and target times series. A non-optimal u/interaction delay may
>>> >> cause an
>>> >> underestimation of TE, so it is recommended to use the pipeline for
>>> >> interaction delay reconstruction whenever estimating TE for unknown
>>> >> delays.
>>> >> If you use the methods for interaction delay reconstruction
>>> >> 'predicttime_u' is replaced by
>>> >> cfgTEP.predicttimemin_u % minimum u to be scanned
>>> >> cfgTEP.predicttimemax_u % maximum u to be scanned
>>> >> cfgTEP.predicttimestepsize % time steps between u to be scanned
>>> >> A large range for u values to be scanned increases computing time a
>>> >> lot,
>>> >> so it is best to limit the u range to values that are
>>> >> physiologically
>>> >> plausible.
>>> >>
>>> >>
>>> >> % ACT (Autocorrelation Time) estimation and constraints
>>> >>
>>> >> cfgP.maxlag = 150;
>>> >> cfgP.actthrvalue = 7.5;
>>> >> cfgP.minnrtrials = 5;
>>> >>
>>> >> *My understanding is maxlag should be 1/2 the sampling rate, so
>>> >> since
>>> >> the data are downsampled to 300hz, it should be 150. I know that
>>> >> the sample
>>> >> rate and filters are used to determine the actthrvalue, but I don't
>>> >> actually know the calculation. 7.5 was a rough guess just to test
>>> >> the
>>> >> pipeline. I'm also uncertain of what minnrtrials should be.* PW:
>>> >> You can
>>> >> set the actthrvalue based on the filtering you did prior to TE
>>> >> analysis. If
>>> >> you for example highpass filtered at 10 Hz, you shouldn't find an
>>> >> ACT
>>> >> higher than 30 samples, because you filtered out any components of
>>> >> the
>>> >> signal slower than 10 Hz/30 samples (given your sampling frequency
>>> >> of 300
>>> >> Hz). So in this scenario the actthrvalue would be 30.
>>> >> A good value for cfgP.minnrtrials is 12 (a minimum number of trials
>>> >> is
>>> >> needed to realize the permutation test for estimated TE values).
>>> >>
>>> >>
>>> >> % Optimization
>>> >>
>>> >> cfgP.optimizemethod = 'ragwitz';
>>> >> cfgP.ragdim = 4:8;
>>> >> cfgP.ragtaurange = [0.2 0.4];
>>> >> cfgP.ragtausteps = 15;
>>> >> cfgP.repPred = 100;
>>> >>
>>> >> *I am completely at a loss for this. I've done some reading into
>>> >> transfer entropy, mutual information, etc., cited in trentool, but
>>> >> I'm yet
>>> >> to understand how exactly this optimization works and what the
>>> >> configuration should be, given my data and experimental
>>> >> intentions.* PW:
>>> >> The Ragwitz criterion tries to find optimal embedding parameters
>>> >> dim and
>>> >> tau for the data. To do that, the method iteratively takes all
>>> >> possible
>>> >> combinations of dim and tau values that are provided in cfgP.ragdim
>>> >> and
>>> >> cfgP.ragtaurange/.ragtausteps and tests how well these combinations
>>> >> embed
>>> >> the data. To test an embedding, the method builds the embedding
>>> >> vectors
>>> >> from the data; it then tests for each point how well the next point
>>> >> in time
>>> >> can be predicted from the reference point's nearest neighbours. So
>>> >> for each
>>> >> embedded point, the method searches for the nearest neighbours and
>>> >> calculates the average of those nearest neighbours. The difference
>>> >> between
>>> >> the averaged/predicted point and the actual next point is the error
>>> >> of the
>>> >> local predictor. The Ragwitz criterion will then return the
>>> >> parameter
>>> >> combination for which this error over all points is minimal.
>>> >> The parameters set the following: 'ragdim' are dimensions to be
>>> >> tested by
>>> >> the method (I would reccomend to start with 2:10), 'ragtaurange'
>>> >> together
>>> >> with 'ragtausteps' specifies the tau values to be tested (TRENTOOL
>>> >> will
>>> >> build a vector from 0.2 to 0.4 in 15 steps). Note, that the values
>>> >> here are
>>> >> factors that are later multiplied with the ACT to obtain the actual
>>> >> tau.
>>> >> 'repPred' is the number of points that will be used for the local
>>> >> prediction, i.e. the Ragwitz criterion will test the local
>>> >> prediction and
>>> >> calculate the error for the first 100 points in your time series.
>>> >> The two
>>> >> parameters 'flagNei' ans 'sizeNei' below specify the type of
>>> >> neighbour
>>> >> search conducted by the Ragwitz criterion: 'flagNei' tells the
>>> >> method to
>>> >> either conduct a kNN or range search; 'sizeNei' specifies the
>>> >> number of
>>> >> neighbours or the radius to be searched by a range search.
>>> >>
>>> >>
>>> >> % Kernel-based TE estimation
>>> >>
>>> >> cfgP.flagNei = 'Mass';
>>> >> cfgP.sizeNei = 4; % Default
>>> >>
>>> >> cfgP.ensemblemethod = 'no';
>>> >> cfgP.outputpath = *OUTPUT PATH*;
>>> >>
>>> >> if ~exist(*Path for TEprepare data object*)
>>> >> load VSdat;
>>> >> TE_Wrd = {};
>>> >> for i = 1:nConds
>>> >> for j = 1:Nsub
>>> >> TE_Wrd{i}{j} = TEprepare(cfgP, VSdat{i}{j});
>>> >> end
>>> >> end
>>> >> clear VSdat;
>>> >> save('TE_Wrd', 'TE_Wrd');
>>> >> end
>>> >>
>>> >> *The configuration and virtual sensor data, organized in a 3 x 15
>>> >> cell
>>> >> of structures (condition by subject) are the input. The TEprepare
>>> >> substructure is added to each individual condition x subject .mat
>>> >> files'
>>> >> data structure which are stored on disk independently.*
>>> >>
>>> >> % Use object_to_mat_conversion.m to replace individual condition x
>>> >> subject
>>> >> virtual sensor data
>>> >> % .mat files with their TE_Wrd equivalent
>>> >>
>>> >> *I'm using a separate script to make some manipulations to the
>>> >> objects
>>> >> from disk; this will all eventually be integrated into the main
>>> >> pipeline*.*
>>> >> TRENTOOL seems to handle data output very differently from
>>> >> fieldtrip and
>>> >> I've had trouble thinking through the most logical way to handle
>>> >> the data
>>> >> so it's a bit haphazard right now.*
>>> >>
>>> >> load cond080sub01.mat
>>> >>
>>> >> cfgG = [];
>>> >> cfgG.dim = cond080sub01.TEprepare.optdim;
>>> >> cfgG.tau = cond080sub01.TEprepare.opttau;
>>> >>
>>> >> if isfield(cond080sub01, 'TEprepare')
>>> >> TEgroup_prepare(cfgG, fileCell);
>>> >> else
>>> >> error('Need to run TEprepare before TEgroup_prepare');
>>> >> end
>>> >>
>>> >> *For clarification, fileCell is a cell with the name of each
>>> >> condition x
>>> >> subject .mat file, which as I said before is collectively the same
>>> >> as the 3
>>> >> x 15 VSdat structure (condition x subject).*
>>> >>
>>> >> % Replace .mat files with '_for_TEgroup_calculate' version in
>>> >> % object_to_mat_conversion.m
>>> >>
>>> >> % TE Group Calculate
>>> >>
>>> >> load cond080sub01.mat
>>> >> if isfield(cond080sub01, 'TEgroupprepare')
>>> >> for i = 1:length(fileCell)
>>> >> TEgroup_calculate(fileCell{i});
>>> >> end
>>> >> else
>>> >> error('Need to run TEgroup_prepare before TEgroup_calculate');
>>> >> end
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> *At this step I get the following error: Error using
>>> >> transferentropy (line
>>> >> 337) \nTRENTOOL ERROR: not enough data points left after embedding
>>> >> Error in
>>> >> TEgroup_calculate (line 133) [TEresult] =
>>> >> transferentropy(cfg,data);*
>>> >>
>>> >> % TE Group Stats
>>> >>
>>> >> cfgGSTAT = [];
>>> >> cfgGSTAT.design(1,1:2*Nsub) = [ones(1,Nsub) 2*ones(1,Nsub)];
>>> >> cfgGSTAT.design(2,1:2*Nsub) = [1:Nsub 1:Nsub];
>>> >>
>>> >> cfgGSTAT.uvar = 1;
>>> >> cfgGSTAT.ivar = 2;
>>> >> cfgGSTAT.fileidout = 'test_groupstats';
>>> >>
>>> >> TEgroup_stats(cfgGSTAT, fileCell);
>>> >>
>>> >> *Given the error above, I am yet to get to this step, but it does
>>> >> not
>>> >> seem fundamentally different from normal fieldtrip stats.*
>>> >>
>>> >> *****
>>> >>
>>> >> In case my notes were not clear or you skipped to the bottom, *my
>>> >> primary concern is whether the error I'm getting in
>>> >> TEgroup_calculate is a
>>> >> pipeline issue* (I noticed the example pipeline in trentool, the
>>> >> manual,
>>> >> and published methods articles all seem to have slightly or
>>> >> significantly
>>> >> different pipeline compositions), *or if the error is* due to ACT,
>>> >> ragwitz optimization, or some other faulty parameterization *on my
>>> >> part
>>> >> due to a lack of understanding of how transfer entropy works on a
>>> >> more
>>> >> theoretical/mathematical level*. If the latter is the case, is
>>> >> there any
>>> >> relatively straightforward way to conceptualize this, or is this
>>> >> something
>>> >> where I'm just going to have to keep reading and rereading until it
>>> >> eventually makes sense? I've already done quite a bit of that and
>>> >> it hasn't
>>> >> pierced my thick skull yet but I'm sure it will eventually!
>>> >>
>>> >> Thank you so much,
>>> >>
>>> >> Max Cantor
>>> >>
>>> >>
>>> >> --
>>> >> Max Cantor
>>> >> Lab Manager
>>> >> Computational Neurolinguistics Lab
>>> >> University of Michigan
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing
>>> >>
>>> listfieldtrip at donders.ru.nlhttp://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> >>
>>> >> --
>>> >> ------------------------------------------------------------
>>> >>
>>> >> Patricia Wollstadt, PhD Student
>>> >>
>>> >> MEG Unit, Brain Imaging Center Goethe University, Frankfurt,
>>> >> Germany
>>> >>
>>> >> Heinrich Hoffmann Strasse 10, Haus 93 B D - 60528 Frankfurt am
>>> >> Main
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> >
>>> >
>>> >
>>> > --
>>> > Max Cantor
>>> > Lab Manager
>>> > Computational Neurolinguistics Lab
>>> > University of Michigan
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140909/29e18024/attachment.html>
>>> >
>>> > ------------------------------
>>> >
>>> > _______________________________________________
>>> > fieldtrip mailing list
>>> > fieldtrip at donders.ru.nl
>>> > http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >
>>> > End of fieldtrip Digest, Vol 46, Issue 3
>>> > ****************************************
>>> >
>>>
>>>
>>>
>>> Barbara Schorr, MSc
>>> Clinical and Biological Psychology
>>> University of Ulm
>>> Albert-Einstein-Allee 47
>>> 89069 Ulm
>>>
>>>
>>>
>>> _______________________________________________
>>> fieldtrip mailing list
>>> fieldtrip at donders.ru.nl
>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>
>> --
>> Jim Herring, MSc.
>> Neuronal Oscillations Group
>> Centre for Cognitive Neuroimaging
>> Donders Institute for Brain, Cognition and Behaviour
>> Radboud University Nijmegen
>>
>>
>> ------------------------------
>>
>> Message: 4
>> Date: Mon, 15 Sep 2014 12:09:24 +0200 (CEST)
>> From: Fr?d?ric Roux <f.roux at bcbl.eu>
>> To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>> Subject: [FieldTrip] using ft_megplanar with sinle-trial TFRs
>> Message-ID: <867006743.3066178.1410775764568.JavaMail.root at bcbl.eu>
>> Content-Type: text/plain; charset=utf-8
>>
>> Dear all,
>>
>> my question relates to the computation of combined planar gradients
>> using the ft_combineplanar function.
>>
>> Our data has been recorded with an Elekta Neuromag 306 channel system,
>> and I would like to know if it is "safe" to compute combined gradients
>> before calling ft_freqstatistics, if the input data contains single
>> trial TFRs.
>>
>> The reason why I am asking is because in the documentation of the
>> function it says
>> % Use as
>> % [data] = ft_combineplanar(cfg, data)
>> % where data contains an averaged planar gradient (either ERF or TFR).
>>
>> However, the following tutorial suggests that this can be safely applied if
>> the input data contains TFRs which have been computed with the
>> cfg.keeptrials = 'yes' option:
>> http://fieldtrip.fcdonders.nl/tutorial/cluster_permutation_freq
>>
>> I am bit confused as both information (the fieldtrip documentation
>> and the tutorial)
>> seem to contradict each other.
>>
>> The 2 options that are see are:
>>
>> 1) compute TFRs with cfg.keeptrials = 'yes', then call
>> ft_frestatistics, then call ft_combineplanar
>> by using the output of ft_freqstatistics as input for the
>> ft_combineplanar function.
>> 2) compute TFRs with cfg.keeptrials = 'yes', then call
>> ft_combineplanar, then call ft_freqstatistics
>>
>> Could anyone with experience on this issue please let me know what
>> the best way
>> to proceed would be?
>>
>> Fred
>> ---------------------------------------------------------------------------
>>
>>
>>
>>
>> ------------------------------
>>
>> Message: 5
>> Date: Mon, 15 Sep 2014 13:12:38 -0300
>> From: gamaliel huerta urrea <gamaliel.ghu at gmail.com>
>> To: fieldtrip at science.ru.nl
>> Subject: [FieldTrip] dipole simulation on head model
>> Message-ID:
>> <CAPEf3EPXER4dMmY+BhrAO_S_+0mf_GZ8A335xydBMmTza5Y9+Q at mail.gmail.com>
>> Content-Type: text/plain; charset="utf-8"
>>
>> hi all
>>
>> I hope you can help my problem.
>>
>> I have generated a model of head fieldtrip, and now I need to simulate
>> sources at different positions within the crust generated. I followed the
>> tutorial head model generation for EEG. However I have not found
>> information on how to simulate a source. Any help would be welcome.
>>
>> Thank you
>> greetings
>>
>> --
>> *Gamaliel Huerta*
>> *Ingenier?a Civil Biom?dica*
>> *Universidad de Valpara?so*
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL:
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140915/698f063b/attachment-0001.html>
>>
>> ------------------------------
>>
>> Message: 6
>> Date: Mon, 15 Sep 2014 18:38:26 +0200
>> From: Tzvetan Popov <tzvetan.popov at uni-konstanz.de>
>> To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>> Subject: Re: [FieldTrip] dipole simulation on head model
>> Message-ID: <6677301D-D72C-4C12-BC84-779D5E4DF8F3 at uni-konstanz.de>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>>
>> Dear Gamaliel,
>> you might try something like this:
>>
>> http://fieldtrip.fcdonders.nl/example/compute_forward_simulated_data_and_apply_a_dipole_fit
>>
>> good luck
>> tzvetan
>>
>> Am 15.09.2014 um 18:12 schrieb gamaliel huerta urrea
>> <gamaliel.ghu at gmail.com>:
>>
>>> hi all
>>>
>>> I hope you can help my problem.
>>>
>>> I have generated a model of head fieldtrip, and now I need to
>>> simulate sources at different positions within the crust generated.
>>> I followed the tutorial head model generation for EEG. However I
>>> have not found information on how to simulate a source. Any help
>>> would be welcome.
>>>
>>> Thank you
>>> greetings
>>>
>>> --
>>> Gamaliel Huerta
>>> Ingenier?a Civil Biom?dica
>>> Universidad de Valpara?so
>>> _______________________________________________
>>> fieldtrip mailing list
>>> fieldtrip at donders.ru.nl
>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL:
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140915/1325eec8/attachment-0001.html>
>>
>> ------------------------------
>>
>> Message: 7
>> Date: Mon, 15 Sep 2014 12:40:41 -0500
>> From: "Jing Fan" <jingfan.jf at gmail.com>
>> To: "'FieldTrip discussion list'" <fieldtrip at science.ru.nl>
>> Subject: Re: [FieldTrip] ft_globalmeanfield : Undefined function of
>> variable 'abort'
>> Message-ID: <000001cfd10c$2b7786a0$826693e0$@gmail.com>
>> Content-Type: text/plain; charset="us-ascii"
>>
>> Hi Jim,
>>
>> I download the latest .zip file from FTP.
>> I received the same error message when calling function ft_definetrial(cfg).
>> It seems to me that ft_preamble init command will go to script ft_preamble.m
>> instead of ft_preamble_init.m.
>> Any help to resolve this issue will be appreciated.
>>
>> Best,
>> Jing
>>
>>
>>
>> -----Original Message-----
>> From: fieldtrip-bounces at science.ru.nl
>> [mailto:fieldtrip-bounces at science.ru.nl] On Behalf Of Herring, J.D. (Jim)
>> Sent: Monday, September 15, 2014 5:01 AM
>> To: FieldTrip discussion list
>> Subject: Re: [FieldTrip] ft_globalmeanfield : Undefined function of variable
>> 'abort'
>>
>> Dear Barbara,
>>
>> The error seems to be related to a bug that pops up now and then
>> (http://bugzilla.fcdonders.nl/show_bug.cgi?id=2580) which could be due to a
>> corrupt installation of fieldtrip and/or the need to update fieldtrip.
>>
>> Could you please try downloading the most recent version of fieldtrip and
>> see if the problem persists?
>>
>> For an example of what can be expected from this function see: Esser SK,
>> Huber R, Massimini M, Peterson MJ, Ferrarelli F, Tononi G. A direct
>> demonstration of cortical LTP in humans: a combined TMS/EEG study. Brain Res
>> Bull. 2006 Mar 15;69(1):86-94. Epub 2005 Dec 1. PubMed PMID: 16464689.
>>
>> Best,
>>
>> Jim
>>
>>
>> ----- Oorspronkelijk bericht -----
>>> Van: "barbara schorr" <barbara.schorr at uni-ulm.de>
>>> Aan: fieldtrip at science.ru.nl
>>> Verzonden: Woensdag 10 september 2014 14:07:14
>>> Onderwerp: [FieldTrip] ft_globalmeanfield : Undefined function of variable
>> 'abort'
>>> Dear fieldtripers.
>>>
>>> as mentioned in the subject line I would like to anaylse my timelocked
>>> ERP Data with the function ft_globalmeanfield.
>>>
>>> I get the Error: Undefined function or variable 'abort'
>>> Error in ft_globalmeanfield (line84)
>>> if abort
>>>
>>> in the function it says:
>>>
>>> %the abort variable is set to true or false in ft_preamble_inti
>>> if abort
>>> % do not continue function execution in case the outputfile is
>>> present and the user indicated to keep it
>>> return
>>> end
>>>
>>>
>>> I don't understand what this means. I would really appreciate your
>>> help to get this running.
>>>
>>> Also, what is the result when I run this function on my data? (This
>>> method was proposed from a reviewer. I never used it before, so I
>>> don't exactly know what it does and what the result will look like).
>>>
>>> Thank you very much in advance!
>>>
>>> Best,
>>>
>>> Barbara Schorr
>>>
>>>
>>>
>>>
>>> Zitat von fieldtrip-request at science.ru.nl:
>>>
>>> > Send fieldtrip mailing list submissions to
>>> > fieldtrip at science.ru.nl
>>> >
>>> > To subscribe or unsubscribe via the World Wide Web, visit
>>> > http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> > or, via email, send a message with subject or body 'help' to
>>> > fieldtrip-request at science.ru.nl
>>> >
>>> > You can reach the person managing the list at
>>> > fieldtrip-owner at science.ru.nl
>>> >
>>> > When replying, please edit your Subject line so it is more specific
>>> > than "Re: Contents of fieldtrip digest..."
>>> >
>>> >
>>> > Today's Topics:
>>> >
>>> > 1. Re: Question regarding nonparametric testing for coherence
>>> > differences (Eric Maris)
>>> > 2. Re: Problem with Geodesic 129 layout!! (KatrinH Heimann)
>>> > 3. Re: Problem with Geodesic 129 layout!! (Joseph Dien)
>>> > 4. Re: ft_rejectvisual: removing trials marked as bad
>>> > (Caspar, Emilie)
>>> > 5. Re: TRENTOOL pipeline help (Patricia Wollstadt)
>>> > 6. Latest FT version on ftp-server is from three days ago
>>> > (Holger Krause)
>>> > 7. Re: TRENTOOL pipeline help (Max Cantor)
>>> >
>>> >
>>> > ----------------------------------------------------------------------
>>> >
>>> > Message: 1
>>> > Date: Mon, 8 Sep 2014 15:46:11 +0200 (CEST)
>>> > From: "Eric Maris" <e.maris at psych.ru.nl>
>>> > To: <hweeling.lee at gmail.com>, "'FieldTrip discussion list'"
>>> > <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] Question regarding nonparametric testing
>>> > for
>>> > coherence differences
>>> > Message-ID: <015901cfcb6b$3fdf1f00$bf9d5d00$@maris at psych.ru.nl>
>>> > Content-Type: text/plain; charset="utf-8"
>>> >
>>> > Dear Hwee Ling,
>>> >
>>> >
>>> >
>>> > In the paper you refer to (Maris et al, JNM, 2007), I did not
>>> > perform a
>>> > cluster-based permutation test at the level of the channel pairs.
>>> > Instead,
>>> > all coherences mentioned in the paper are coherence between a single
>>> > EMG
>>> > channel (2 electrodes mounted on the forearm) and all MEG
>>> > electrodes. Thus,
>>> > there are as many EMG-MEG coherences as there are MEG channels (275
>>> > in our
>>> > lab), and the clustering of these coherences involves the same
>>> > neighbourhood
>>> > structure as the clustering of channel-specific statistics on power
>>> > or
>>> > evoked response. The analysis you propose involves clustering in a
>>> > much more
>>> > complex space, namely the formed by all (MEG,MEG) channel pairs
>>> > (275*275=75625 pairs). In the early days of cluster-based
>>> > permutation
>>> > statistics, I have worked on this problem but did not pursue it
>>> > because the
>>> > resulting clusters are very hard to interpret.
>>> >
>>> >
>>> >
>>> > Best,
>>> >
>>> >
>>> >
>>> > Eric Maris
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > Dear all and Prof Maris,
>>> >
>>> > I'm re-posting this question again, as I didn't get any replies
>>> > previously.
>>> >
>>> > I?m interested to investigate if there are any differences in phase
>>> > synchronization in resting state data at timepoint 2 versus
>>> > timepoint 1. The
>>> > EEG data was collected using 64 EEG channels, resting state, eyes
>>> > opened and
>>> > eyes closed. I?ve arbitrarily segmented the resting state data into
>>> > epochs
>>> > of 2s each, and the epochs with artifacts are excluded completely
>>> > from
>>> > further analyses. I then performed mtmfft to get the fourier
>>> > representation
>>> > of the data, extracted the coherence, and compared the coherence
>>> > difference
>>> > of timepoint 2 versus timepoint 1 of all channels paired with all
>>> > other
>>> > channels.
>>> >
>>> > I figured that if I extract the connectivity analyses without
>>> > specifying the
>>> > channelcmb, I get a 'chan_chan_freq' dimord variable that would
>>> > allow me to
>>> > perform cluster-based statistical analyses. I get an output with
>>> > ?chan_chan?
>>> > dimord variable. However, I was not 100% sure that this is correct,
>>> > hence, I?ve
>>> > inserted my code (see below). It?ll be great if you could tell me if
>>> > what I?m
>>> > doing makes any sense at all. Also, I don?t know how I can plot the
>>> > results
>>> > to see if it make any sense at all.
>>> >
>>> > Also, I checked the values obtained from when I specified
>>> > "cfg.channelcmb"
>>> > and when I did not specify "cfg.channelcmb", I noticed that the
>>> > values were
>>> > somehow different. I would assume that the values to be similar,
>>> > although
>>> > I'm not sure why they would have differences in the values obtained
>>> > from
>>> > specifying "cfg.channelcmb".
>>> >
>>> > This is my code that I've used thus far:
>>> >
>>> > for sub = 1:5
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.output = 'fourier';
>>> >
>>> > cfg.channel = {'all'};
>>> >
>>> > cfg.method = 'mtmfft';
>>> >
>>> > cfg.keeptrials = 'yes';
>>> >
>>> > cfg.tapsmofrq = 5;
>>> >
>>> > cfg.foilim = [0 100];
>>> >
>>> > cfg.taper = 'dpss';
>>> >
>>> > % find the index for the c200 condition
>>> >
>>> > pre_c200_idx = find(data5.trialinfo == 201);
>>> >
>>> > cfg.trials = pre_c200_idx;
>>> >
>>> > HLF_pre_c200 = ft_freqanalysis(cfg, data5);
>>> >
>>> > post_c200_idx = find(data5.trialinfo == 200);
>>> >
>>> > cfg.trials = post_c200_idx;
>>> >
>>> > HLF_post_c200 = ft_freqanalysis(cfg, data5);
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.keeptrials = 'no';
>>> >
>>> > cfg.channel = {'all'};
>>> >
>>> > cfg.removemean = 'yes';
>>> >
>>> > cfg.method = 'coh';
>>> >
>>> > HLF_pre_c200coh{sub} = ft_connectivityanalysis(cfg,
>>> > HLF_pre_c200);
>>> >
>>> > HLF_post_c200coh{sub} = ft_connectivityanalysis(cfg,
>>> > HLF_post_c200);
>>> >
>>> > end
>>> >
>>> >
>>> >
>>> >
>> load('D:\Hweeling_Programs\fieldtrip-20140330\template\layout\easycapM11.mat
>> ');
>>> >
>>> > cfg_neighb.method = 'template';
>>> >
>>> > cfg_neighb.layout = lay;
>>> >
>>> > cfg_neighb.channel = 'all';
>>> >
>>> > neighbours = ft_prepare_neighbours(cfg_neighb,
>>> > sub_HLF_pre_c200coh{1});
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay;
>>> >
>>> > cfg.neighbours = neighbours;
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.channelcmb = {cfg.channel, cfg.channel};
>>> >
>>> > cfg.latency = 'all';
>>> >
>>> > cfg.avgovertime = 'no';
>>> >
>>> > cfg.avgoverchan = 'no';
>>> >
>>> > cfg.parameter = 'cohspctrm';
>>> >
>>> > cfg.method = 'montecarlo';
>>> >
>>> > cfg.statistic = 'depsamplesT';
>>> >
>>> > cfg.correctm = 'cluster';
>>> >
>>> > cfg.tail = 0;
>>> >
>>> > % cfg.clustertail = 0;
>>> >
>>> > cfg.alpha = 0.05/8; % to correct for multiple comparisons across 8
>>> > frequency
>>> > bands.
>>> >
>>> > cfg.numrandomization = 10000;
>>> >
>>> > cfg.ivar = 2;
>>> >
>>> > cfg.uvar = 1;
>>> >
>>> >
>>> >
>>> > % design matrices
>>> >
>>> > clear design;
>>> >
>>> > design(1,:) = [1:5, 1:5];
>>> >
>>> > design(2,:) = [ones(1,5), ones(1,5) * 2];
>>> >
>>> > cfg.design = design;
>>> >
>>> > % for theta band
>>> >
>>> > cfg.avgoverfreq = 'yes';
>>> >
>>> > cfg.frequency = [4 8]; % I also performed the statistics for delta
>>> > (2-4),
>>> > alpha (8-10.5), alpha (10.5-13), beta (13-20), beta (20-30), gamma
>>> > (30-40),
>>> > and gamma (40-100).
>>> >
>>> > [diffc200_theta_stat] = ft_freqstatistics(cfg,
>>> > sub_HLF_post_c200coh{:},
>>> > sub_HLF_pre_c200coh{:});
>>> >
>>> >
>>> >
>>> > When I tried to plot the results, I used this code:
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.layout = 'lay';
>>> >
>>> > cfg.zlim = [-1 1];
>>> >
>>> > cfg.alpha = 0.05;
>>> >
>>> > cfg.refchannel = 'all';
>>> >
>>> > ft_clusterplot(cfg, diffc200_theta_stat);
>>> >
>>> > However, I was not sure how I could plot the results. I get an error
>>> > message
>>> > from Fieldtrip when using ft_clusterplot:
>>> >
>>> > Error using topoplot_common (line 366)
>>> >
>>> > no reference channel is specified
>>> >
>>> > Error in ft_topoplotTFR (line 192)
>>> >
>>> > [cfg] = topoplot_common(cfg, varargin{:});
>>> >
>>> > Error in ft_clusterplot (line 372)
>>> >
>>> > ft_topoplotTFR(cfgtopo, stat);
>>> >
>>> >
>>> >
>>> > According to your paper in 2007, the topoplot of the results were
>>> > masked by
>>> > the spatio-spectral pattern of the significant clusters. I don't
>>> > know how to
>>> > do this, and I would really appreciate if you can show me how to
>>> > make such a
>>> > plot.
>>> >
>>> > Thank you very much.
>>> >
>>> > Kind regards,
>>> >
>>> > Hweeling
>>> >
>>> >
>>> >
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140908/98b85
>> 280/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 2
>>> > Date: Mon, 8 Sep 2014 21:38:01 +0200
>>> > From: KatrinH Heimann <katrinheimann at gmail.com>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] Problem with Geodesic 129 layout!!
>>> > Message-ID:
>>> > <CACnHcBeqEoQMirfZ-hCKK8rSmbfcNYzxFQH1mmSaeGCuKMN-uA at mail.gmail.com>
>>> > Content-Type: text/plain; charset="utf-8"
>>> >
>>> > Dear Joseph, thanks so much, I really appreciate your help. I was
>>> > also
>>> > wandering, if maybe there is another bug in my code.
>>> > Our nets are 128 channels, Hydrocel, but as a colleague of me
>>> > adviced me to
>>> > do so, I also tried the 129 layout.
>>> > My code you find below (without selection of bad channels etc.)
>>> > If you need also the data of two subjects to have a look, let me
>>> > know!!!
>>> > Best and thanks really!
>>> > Katrin
>>> >
>>> >
>>> > subject=input('Which subject do you want to analyse? ','s');
>>> >
>>> > name = strcat(subject,'.raw');
>>> >
>>> > subjectnumber=input('Which is the subjectnumber?', 's');
>>> >
>>> > sb=subjectnumber
>>> >
>>> > %subjectnumber = strcat(subjectnumber, '.txt')
>>> >
>>> > %%
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.dataset = name;
>>> >
>>> > cfg.trialfun = 'ft_trialfun_general'; % this is the default
>>> >
>>> > cfg.trialdef.eventtype = 'trigger';
>>> >
>>> > cfg.trialdef.eventvalue = 'stim'; % the value of the stimulus
>>> > trigger
>>> >
>>> > cfg.trialdef.prestim = 0.234; % in seconds
>>> >
>>> > cfg.trialdef.poststim = 7.266; % in seconds (whole time of video
>>> > observation, but maybe we need less)
>>> >
>>> > cfg = ft_definetrial(cfg);
>>> >
>>> >
>>> > cfg.trl([1:7],:) = [];
>>> >
>>> >
>>> > %change timeline according to constant offset of 16 ms = 8 samples
>>> > (because
>>> > recorded with 500 hz)in
>>> >
>>> > %structure trial
>>> >
>>> > cfg.trl(:,3)=cfg.trl(:,3)-8
>>> >
>>> >
>>> > %change timeline to make the cut the zeropoint
>>> >
>>> >
>>> > cfg.trl(:,3)=cfg.trl(:,3)- 1000;
>>> >
>>> >
>>> >
>>> > %% preprocess data
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.preproc.detrend = 'yes';
>>> >
>>> > cfg.preproc.demean = 'yes';
>>> >
>>> > cfg.preproc.baselinewindow = [-2.1 -2.0]
>>> >
>>> > %cfg.preproc.bpfilter = 'yes'; - the data here has to be already
>>> > filtered
>>> >
>>> > %(0.1-45) and bad channels have to be replaced!!!!
>>> >
>>> > %cfg.preproc.bpfreq = [6 32];
>>> >
>>> > %
>>> >
>>> > %
>>> >
>>> > obs_data = ft_preprocessing(cfg);
>>> >
>>> > %
>>> >
>>> > save (strcat(sb,'obs_data') , 'obs_data')
>>> >
>>> >
>>> > %% determining channel neighbours (necessary for Artifact detection)
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.channel = obs_data.label;
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.feedback = 'yes';
>>> >
>>> > lay = ft_prepare_layout(cfg);
>>> >
>>> >
>>> >
>>> > cfg_neighb = [];
>>> >
>>> > cfg_neighb.feedback = 'yes';
>>> >
>>> >
>>> > cfg_neighb.method = 'triangulation';
>>> >
>>> > cfg_neighb.layout = 'GSN128.sfp';
>>> >
>>> > neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >
>>> >
>>> > obs_data.elec = ft_read_sens('GSN128.sfp');
>>> >
>>> >
>>> > %% Artifacts - to detect bad channels - is not saved!!!
>>> >
>>> >
>>> >
>>> > cfg.method = 'summary';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >
>>> > obs_data_try = ft_rejectvisual(cfg, obs_data);
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs_data);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs_data_try = ft_rejectartifact (cfg,obs_data);
>>> >
>>> >
>>> >
>>> > %% Preparing neighbours for channel repair - but bad channel info
>>> > in!!!
>>> >
>>> >
>>> > % cfg_neighb = [];
>>> >
>>> > % cfg_neighb.feedback = 'yes';
>>> >
>>> > % cfg_neighb.method = 'triangulation';
>>> >
>>> > % cfg_neighb.layout = 'GSN-HydroCel-128.sfp';
>>> >
>>> > % neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >
>>> >
>>> > % Interpolate and put into new data structure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.badchannel = {};
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.method = 'nearest';
>>> >
>>> > cfg.neighbours = neighbours;
>>> >
>>> > obs_data_channelrepaired = ft_channelrepair(cfg,obs_data)
>>> >
>>> >
>>> > % Check reconstruction
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs_data_channelrepaired);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs_data_clean1 = ft_rejectartifact (cfg,obs_data_channelrepaired);
>>> >
>>> >
>>> > % dat1=obs_data;
>>> >
>>> > % dat2=obs_data_channelrepaired;
>>> >
>>> > %
>>> >
>>> > % x=dat1.trial{1}(62,:); % 68 is channel index of E68
>>> >
>>> > % y=dat2.trial{1}(62,:);
>>> >
>>> > % plot(x);hold on;plot(y,'r');
>>> >
>>> > %
>>> >
>>> > % x=dat1.trial{1}(72,:);
>>> >
>>> > % y=dat2.trial{1}(75,:);
>>> >
>>> > % figure;
>>> >
>>> > % plot(x);hold on;plot(y,'r')
>>> >
>>> > %
>>> >
>>> > % x=dat1.trial{1}(75,:);
>>> >
>>> > % y=dat2.trial{1}(75,:);
>>> >
>>> > % figure;
>>> >
>>> > % plot(x);hold on;plot(y,'r')
>>> >
>>> > %% artifact rejection/trial inspection - throw out electrode jumps
>>> > etc.
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs_data_channelrepaired);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs_data_clean1 = ft_rejectartifact (cfg,obs_data_channelrepaired);
>>> >
>>> >
>>> > %% ICA - Anzahl der Komponenten anpassen!- adapt numcomponent
>>> > according to
>>> > channels interpolated %% 128-number of interp. channels)
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.channel = {'all'};
>>> >
>>> > cfg.numcomponent = 128
>>> >
>>> > comp = ft_componentanalysis(cfg,obs_data_clean1);
>>> >
>>> > save (strcat(sb,'comp_all') , 'comp')
>>> >
>>> >
>>> > %%
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'component';
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='some';
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > ft_databrowser(cfg,comp);
>>> >
>>> >
>>> > %% poweranalysis components
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.output = 'pow';
>>> >
>>> > cfg.channel = 'all';%compute the power spectrum in all ICs
>>> >
>>> > cfg.method = 'mtmfft';
>>> >
>>> > cfg.taper = 'hanning';
>>> >
>>> > cfg.foi = 0:0.2:50;
>>> >
>>> > obs_freq = ft_freqanalysis(cfg, comp);
>>> >
>>> >
>>> > %And you can plot the spectra:
>>> >
>>> >
>>> > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>> >
>>> > nsubplots = 16;
>>> >
>>> > nbyn = sqrt(nsubplots);% sqrt(nsubplots) should not contain
>>> > decimals, type
>>> > doc subplot
>>> >
>>> >
>>> > Nfigs = ceil(size(comp.topo,1)/nsubplots);
>>> >
>>> > tot = Nfigs*nsubplots;
>>> >
>>> >
>>> > rptvect = 1:size(comp.topo,1);
>>> >
>>> > rptvect = padarray(rptvect, [0 tot-size(comp.topo,1)], 0,'post');
>>> >
>>> > rptvect = reshape(rptvect,nsubplots,Nfigs)';
>>> >
>>> >
>>> > for r=1:size(rptvect,1);
>>> >
>>> > figure;set(gcf,'units','normalized','outerposition',[0 0 1
>>> > 1]);%full
>>> > screen
>>> >
>>> > k=0;
>>> >
>>> > for j=1:size(rptvect,2);
>>> >
>>> > if~(rptvect(r,j)==0);
>>> >
>>> > k=k+1;
>>> >
>>> > cfg=[];
>>> >
>>> > cfg.channel = rptvect(r,j);
>>> >
>>> > cfg.ylim =[0 500]
>>> >
>>> > cfg.xlim =[0 50]
>>> >
>>> > subplot(nbyn,nbyn,k);ft_singleplotER(cfg,obs_freq);
>>> >
>>> > end
>>> >
>>> > end
>>> >
>>> > end
>>> >
>>> >
>>> > %For the IC topos you'll follow the same logic as above but with:
>>> >
>>> >
>>> > figure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [1:20]; % specify the component(s) that should be
>>> > plotted
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.comment = 'no';
>>> >
>>> > ft_topoplotIC(cfg, comp)
>>> >
>>> >
>>> > figure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [21:40]; % specify the component(s) that should be
>>> > plotted
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.comment = 'no';
>>> >
>>> > ft_topoplotIC(cfg, comp)
>>> >
>>> >
>>> > figure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [41:60]; % specify the component(s) that should be
>>> > plotted
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.comment = 'no';
>>> >
>>> > ft_topoplotIC(cfg, comp)
>>> >
>>> >
>>> > figure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [61:80]; % specify the component(s) that should be
>>> > plotted
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.comment = 'no';
>>> >
>>> > ft_topoplotIC(cfg, comp)
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > %% Seperate observation conditions
>>> >
>>> >
>>> > name1= strcat(num2str(sb),'_90.xls');
>>> >
>>> > list1=xlsread (name1)
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > name2= strcat(num2str(sb),'_180.xls');
>>> >
>>> > list2=xlsread (name2)
>>> >
>>> >
>>> >
>>> > %
>>> >
>>> >
>>> > cfg = []
>>> >
>>> > cfg.trials = [list1]
>>> >
>>> > obs90_data = ft_redefinetrial(cfg,obs_data_channelrepaired)
>>> >
>>> >
>>> > cfg = []
>>> >
>>> > cfg.trials = [list2]
>>> >
>>> > obs180_data = ft_redefinetrial(cfg,obs_data_channelrepaired)
>>> >
>>> >
>>> > %%PIPELINE FOR obs90
>>> >
>>> >
>>> > %% Decompose original data according to the components found before
>>> >
>>> > load (strcat(sb,'comp_all'))
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.numcomponent = 128;
>>> >
>>> > cfg.unmixing = comp.unmixing;
>>> >
>>> > cfg.topolabel = comp.topolabel;
>>> >
>>> >
>>> > comp_1 = ft_componentanalysis(cfg, obs90_data);
>>> >
>>> >
>>> >
>>> > %% Reject component
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [];
>>> >
>>> > obs90_data_ica_cleaned = ft_rejectcomponent(cfg, comp_1,
>>> > obs90_data);
>>> >
>>> >
>>> >
>>> >
>>> > save (strcat(sb,'obs90_ica_cleaned') , 'obs90_data_ica_cleaned')
>>> >
>>> >
>>> >
>>> >
>>> > %% Artifacts - final detection
>>> >
>>> >
>>> >
>>> > cfg.method = 'summary';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >
>>> > obs90_data_clean3 = ft_rejectvisual(cfg, obs90_data_ica_cleaned);
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs90_data_clean3);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs90_data_clean2 = ft_rejectartifact (cfg,obs90_data_clean3);
>>> >
>>> >
>>> >
>>> > % Save clean data
>>> >
>>> >
>>> > save (strcat(subject,'obs90_clean') , 'obs90_data_clean2')
>>> >
>>> >
>>> >
>>> > %% Rereferencing data
>>> >
>>> > cfg = [];
>>> >
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.preproc.reref = 'yes';
>>> >
>>> > cfg.preproc.refchannel = 'all';
>>> >
>>> > obs90_data_ref= ft_preprocessing(cfg,obs90_data_clean2)
>>> >
>>> >
>>> > save (strcat(subject,'obs90_ref') , 'obs90_data_ref')
>>> >
>>> > %% Snap out smaller pieces (the third second)
>>> >
>>> >
>>> > cfg = []
>>> >
>>> > cfg.toilim = [0 1]
>>> >
>>> >
>>> > obs90_data_small = ft_redefinetrial(cfg,obs90_data_ref)
>>> >
>>> >
>>> > %% TIMELOCK ERP
>>> >
>>> > obs90_data_ERP = ft_timelockanalysis(cfg, obs90_data_small);
>>> >
>>> >
>>> > save (strcat(subject,'obs90_ERP') , 'obs90_data_ERP')
>>> >
>>> >
>>> > %% plot it
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay ;
>>> >
>>> > cfg.interactive = 'yes';
>>> >
>>> > ft_multiplotER(cfg, obs90_data_ERP)
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > %% PIPELINE FOR obs180
>>> >
>>> >
>>> >
>>> > %% Decompose original data according to the components found before
>>> >
>>> > load (strcat(sb,'comp_all'))
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.numcomponent = 128
>>> >
>>> > cfg.unmixing = comp.unmixing;
>>> >
>>> > cfg.topolabel = comp.topolabel;
>>> >
>>> > comp_2 = ft_componentanalysis(cfg, obs180_data);
>>> >
>>> >
>>> >
>>> > %% Reject component
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [];
>>> >
>>> > obs180_data_ica_cleaned = ft_rejectcomponent(cfg, comp_2,
>>> > obs180_data);
>>> >
>>> >
>>> >
>>> >
>>> > save (strcat(sb,'obs180_ica_cleaned') , 'obs180_data_ica_cleaned')
>>> >
>>> >
>>> >
>>> >
>>> > %% Artifacts final 180
>>> >
>>> >
>>> >
>>> > cfg.method = 'summary';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >
>>> > obs180_data_clean3 = ft_rejectvisual(cfg, obs180_data_ica_cleaned);
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs180_data_clean3);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs180_data_clean2 = ft_rejectartifact (cfg,obs180_data_clean3);
>>> >
>>> >
>>> >
>>> > % Save clean data
>>> >
>>> >
>>> > save (strcat(subject,'obs180_clean') , 'obs180_data_clean2')
>>> >
>>> >
>>> >
>>> > %% Rereferencing data
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.preproc.reref = 'yes';
>>> >
>>> > cfg.preproc.refchannel = 'all';
>>> >
>>> > obs180_data_ref= ft_preprocessing(cfg,obs180_data_clean2)
>>> >
>>> >
>>> > save (strcat(subject,'obs180_ref') , 'obs180_data_ref')
>>> >
>>> > %% Snap out smaller pieces (the third second)
>>> >
>>> >
>>> > cfg = []
>>> >
>>> > cfg.toilim = [0 1]
>>> >
>>> >
>>> > obs180_data_small = ft_redefinetrial(cfg,obs180_data_ref)
>>> >
>>> >
>>> > %% TIMELOCK ERP
>>> >
>>> > obs180_data_ERP = ft_timelockanalysis(cfg, obs180_data_small);
>>> >
>>> >
>>> > save (strcat(subject,'obs180_ERP') , 'obs180_data_ERP')
>>> >
>>> >
>>> > %% plot 180 ERP
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay ;
>>> >
>>> > cfg.interactive = 'yes';
>>> >
>>> > ft_multiplotER(cfg, obs180_data_ERP)
>>> >
>>> >
>>> > %% plot both ERPs
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay ;
>>> >
>>> > cfg.interactive = 'yes';
>>> >
>>> > cfg.showlabels = 'yes';
>>> >
>>> > ft_multiplotER(cfg, obs90_data_ERP, obs180_data_ERP)
>>> >
>>> >
>>> > %% plot difference wave
>>> >
>>> >
>>> > difference = obs180_data_ERP; % copy one of the
>>> > structures
>>> >
>>> > difference.avg = obs180_data_ERP.avg - obs90_data_ERP.avg; % compute
>>> > the
>>> > difference ERP
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay;
>>> >
>>> > cfg.interactive = 'yes';
>>> >
>>> > ft_multiplotER(cfg, difference)
>>> >
>>> > 2014-09-07 7:53 GMT+02:00 Joseph Dien <jdien07 at mac.com>:
>>> >
>>> >> Hi,
>>> >> I?m one of the main Fieldtrip contributors working on supporting
>>> >> EGI
>>> >> data. A couple things. First of all, exactly which net do you use?
>>> >> If
>>> >> they are 129-channel, there is still the question of whether they
>>> >> are the
>>> >> Hydrocel or the older geodesic nets. Regardless, that shouldn't
>>> >> cause an
>>> >> error like this. Could you send me the file you are trying to
>>> >> process and
>>> >> the script you are using and I?ll try troubleshooting it.
>>> >>
>>> >> Joe
>>> >>
>>> >>
>>> >> On Aug 26, 2014, at 12:53 AM, Ana Laura Diez Martini <
>>> >> diezmartini at gmail.com> wrote:
>>> >>
>>> >> Which nets do you use? I use EGI. I tried both the ones you mention
>>> >> and
>>> >> they didn't work. It was hard to find that exact one online but it
>>> >> was the
>>> >> only file that actually worked.
>>> >>
>>> >>
>>> >> On Mon, Aug 25, 2014 at 7:52 AM, KatrinH Heimann
>>> >> <katrinheimann at gmail.com>
>>> >> wrote:
>>> >>
>>> >>> Dear Ana, dear all,
>>> >>> the layout you used does not correspond to our nets. I tried the
>>> >>> GSN-HydroCel-128.sfp and the GSN-HydroCel-129.sfp. Both don't
>>> >>> work.
>>> >>> Please can anybody help?
>>> >>> Cheers
>>> >>> Katrin
>>> >>>
>>> >>>
>>> >>> 2014-08-24 5:40 GMT+02:00 Ana Laura Diez Martini
>>> >>> <diezmartini at gmail.com>:
>>> >>>
>>> >>> Try this one
>>> >>> <https://www.dropbox.com/s/58zv658rtdant2c/GSN129.sfp?dl=0>
>>> >>>> I use
>>> >>>>
>>> >>>>
>>> >>>> On Sun, Aug 24, 2014 at 4:08 AM, KatrinH Heimann <
>>> >>>> katrinheimann at gmail.com> wrote:
>>> >>>>
>>> >>>>> Dear all, my problems seem neverending. This time however i
>>> >>>>> really need
>>> >>>>> help.
>>> >>>>> I implemented a pipeline for ERPs. All works now,
>>> >>>>> trialdefinition,
>>> >>>>> preprocessing, channelreplacement, ica, componentrejection,
>>> >>>>> final
>>> >>>>> artifactdetection, timelock of the single subject data. However,
>>> >>>>> when I
>>> >>>>> wanna compute the grandaverage of the single subjects I get the
>>> >>>>> following
>>> >>>>> error message:
>>> >>>>>
>>> >>>>> computing average of avg over 19 subjects
>>> >>>>> Warning: discarding electrode information because it cannot be
>>> >>>>> averaged
>>> >>>>> > In ft_timelockgrandaverage at 249
>>> >>>>> the call to "ft_timelockgrandaverage" took 0 seconds and
>>> >>>>> required the
>>> >>>>> additional allocation of an estimated 3 MB
>>> >>>>> computing average of avg over 2 subjects
>>> >>>>> Warning: discarding electrode information because it cannot be
>>> >>>>> averaged
>>> >>>>> > In ft_timelockgrandaverage at 249
>>> >>>>> the call to "ft_timelockgrandaverage" took 0 seconds and
>>> >>>>> required the
>>> >>>>> additional allocation of an estimated 0 MB
>>> >>>>> the call to "ft_prepare_layout" took 0 seconds and required the
>>> >>>>> additional allocation of an estimated 0 MB
>>> >>>>> the call to "ft_topoplotER" took 0 seconds and required the
>>> >>>>> additional
>>> >>>>> allocation of an estimated 0 MB
>>> >>>>>
>>> >>>>> Furthermore in the plot of the significant clusters, the
>>> >>>>> channelnames
>>> >>>>> are mixed up (do not correspond to my net)
>>> >>>>>
>>> >>>>>
>>> >>>>> I guess that there is a problem with the layout I use.
>>> >>>>> Here the code that I use
>>> >>>>>
>>> >>>>> %For generating the layout (also in the single subjects):
>>> >>>>>
>>> >>>>> cfg = [];
>>> >>>>>
>>> >>>>> cfg.channel = obs_data.label;
>>> >>>>>
>>> >>>>> cfg.layout = 'GSN-HydroCel-129.sfp';
>>> >>>>>
>>> >>>>> cfg.feedback = 'yes';
>>> >>>>>
>>> >>>>> lay = ft_prepare_layout(cfg);
>>> >>>>>
>>> >>>>>
>>> >>>>> cfg_neighb = [];
>>> >>>>>
>>> >>>>> cfg_neighb.feedback = 'yes';
>>> >>>>>
>>> >>>>> cfg_neighb.method = 'triangulation';
>>> >>>>>
>>> >>>>> cfg_neighb.layout = lay;
>>> >>>>>
>>> >>>>> neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >>>>>
>>> >>>>>
>>> >>>>> obs_data.elec = ft_read_sens('GSN-HydroCel-129.sfp');
>>> >>>>>
>>> >>>>>
>>> >>>>> %For computing the grand average
>>> >>>>>
>>> >>>>> cfg = [];
>>> >>>>>
>>> >>>>> cfg.channel = 'all';
>>> >>>>>
>>> >>>>> cfg.latency = 'all';
>>> >>>>>
>>> >>>>> cfg.parameter = 'avg';
>>> >>>>>
>>> >>>>> cfg.keepindividual = 'no'
>>> >>>>>
>>> >>>>> GA_90 = ft_timelockgrandaverage(cfg,all90{:});
>>> >>>>>
>>> >>>>> GA_180 = ft_timelockgrandaverage(cfg,all180{:});
>>> >>>>>
>>> >>>>> % "{:}" means to use data from all elements of the variable
>>> >>>>>
>>> >>>>>
>>> >>>>> For plotting the significant clusters
>>> >>>>>
>>> >>>>> cfg = [];
>>> >>>>>
>>> >>>>> cfg.style = 'blank';
>>> >>>>>
>>> >>>>> cfg.layout = lay;
>>> >>>>>
>>> >>>>> cfg.channellabels = 'yes';
>>> >>>>>
>>> >>>>> cfg.highlight = 'labels';
>>> >>>>>
>>> >>>>> cfg.highlightchannel = find(stat.mask);
>>> >>>>>
>>> >>>>> cfg.comment = 'no';
>>> >>>>>
>>> >>>>> figure; ft_topoplotER(cfg, GA_90)
>>> >>>>>
>>> >>>>> title('Nonparametric: significant with cluster multiple
>>> >>>>> comparison
>>> >>>>> correction')
>>> >>>>>
>>> >>>>>
>>> >>>>> Do you have ANY idea to this? I am really completely
>>> >>>>> helpless....
>>> >>>>>
>>> >>>>> thanks and best
>>> >>>>>
>>> >>>>> Katrin
>>> >>>>>
>>> >>>>> _______________________________________________
>>> >>>>> fieldtrip mailing list
>>> >>>>> fieldtrip at donders.ru.nl
>>> >>>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>>>
>>> >>>>
>>> >>>>
>>> >>>> _______________________________________________
>>> >>>> fieldtrip mailing list
>>> >>>> fieldtrip at donders.ru.nl
>>> >>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>>
>>> >>>
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> >>
>>> >>
>>> >>
>> ----------------------------------------------------------------------------
>> ----
>>> >>
>>> >> Joseph Dien, PhD
>>> >> Research Associate
>>> >> Cognitive Neurology
>>> >> The Johns Hopkins University School of Medicine
>>> >>
>>> >> Lab E-mail: jdien1 at jhmi.edu
>>> >> Private E-mail: jdien07 at mac.com
>>> >> Office Phone: 410-614-3115
>>> >> Cell Phone: 202-297-8117
>>> >> Fax: 410-955-0188
>>> >> http://joedien.com
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140908/e8846
>> b61/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 3
>>> > Date: Mon, 08 Sep 2014 21:55:44 -0400
>>> > From: Joseph Dien <jdien07 at mac.com>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] Problem with Geodesic 129 layout!!
>>> > Message-ID: <148A801A-8CEA-4F88-A7D0-130637BDAC03 at mac.com>
>>> > Content-Type: text/plain; charset="windows-1252"
>>> >
>>> > yes, please do send me the data.
>>> >
>>> > Thanks!
>>> >
>>> > Joe
>>> >
>>> > On Sep 8, 2014, at 3:38 PM, KatrinH Heimann
>>> > <katrinheimann at gmail.com> wrote:
>>> >
>>> >> Dear Joseph, thanks so much, I really appreciate your help. I was
>>> >> also wandering, if maybe there is another bug in my code.
>>> >> Our nets are 128 channels, Hydrocel, but as a colleague of me
>>> >> adviced me to do so, I also tried the 129 layout.
>>> >> My code you find below (without selection of bad channels etc.)
>>> >> If you need also the data of two subjects to have a look, let me
>>> >> know!!!
>>> >> Best and thanks really!
>>> >> Katrin
>>> >>
>>> >>
>>> >>
>>> >> subject=input('Which subject do you want to analyse? ','s');
>>> >>
>>> >> name = strcat(subject,'.raw');
>>> >>
>>> >> subjectnumber=input('Which is the subjectnumber?', 's');
>>> >>
>>> >> sb=subjectnumber
>>> >>
>>> >> %subjectnumber = strcat(subjectnumber, '.txt')
>>> >>
>>> >> %%
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.dataset = name;
>>> >>
>>> >> cfg.trialfun = 'ft_trialfun_general'; % this is the default
>>> >>
>>> >> cfg.trialdef.eventtype = 'trigger';
>>> >>
>>> >> cfg.trialdef.eventvalue = 'stim'; % the value of the stimulus
>>> >> trigger
>>> >>
>>> >> cfg.trialdef.prestim = 0.234; % in seconds
>>> >>
>>> >> cfg.trialdef.poststim = 7.266; % in seconds (whole time of video
>>> >> observation, but maybe we need less)
>>> >>
>>> >> cfg = ft_definetrial(cfg);
>>> >>
>>> >>
>>> >>
>>> >> cfg.trl([1:7],:) = [];
>>> >>
>>> >>
>>> >>
>>> >> %change timeline according to constant offset of 16 ms = 8 samples
>>> >> (because recorded with 500 hz)in
>>> >>
>>> >> %structure trial
>>> >>
>>> >> cfg.trl(:,3)=cfg.trl(:,3)-8
>>> >>
>>> >>
>>> >>
>>> >> %change timeline to make the cut the zeropoint
>>> >>
>>> >>
>>> >>
>>> >> cfg.trl(:,3)=cfg.trl(:,3)- 1000;
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% preprocess data
>>> >>
>>> >> cfg.channel = 'all';
>>> >>
>>> >> cfg.preproc.detrend = 'yes';
>>> >>
>>> >> cfg.preproc.demean = 'yes';
>>> >>
>>> >> cfg.preproc.baselinewindow = [-2.1 -2.0]
>>> >>
>>> >> %cfg.preproc.bpfilter = 'yes'; - the data here has to be already
>>> >> filtered
>>> >>
>>> >> %(0.1-45) and bad channels have to be replaced!!!!
>>> >>
>>> >> %cfg.preproc.bpfreq = [6 32];
>>> >>
>>> >> %
>>> >>
>>> >> %
>>> >>
>>> >> obs_data = ft_preprocessing(cfg);
>>> >>
>>> >> %
>>> >>
>>> >> save (strcat(sb,'obs_data') , 'obs_data')
>>> >>
>>> >>
>>> >>
>>> >> %% determining channel neighbours (necessary for Artifact
>>> >> detection)
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.channel = obs_data.label;
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.feedback = 'yes';
>>> >>
>>> >> lay = ft_prepare_layout(cfg);
>>> >>
>>> >>
>>> >> cfg_neighb = [];
>>> >>
>>> >> cfg_neighb.feedback = 'yes';
>>> >>
>>> >>
>>> >>
>>> >> cfg_neighb.method = 'triangulation';
>>> >>
>>> >> cfg_neighb.layout = 'GSN128.sfp';
>>> >>
>>> >> neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >>
>>> >>
>>> >>
>>> >> obs_data.elec = ft_read_sens('GSN128.sfp');
>>> >>
>>> >>
>>> >>
>>> >> %% Artifacts - to detect bad channels - is not saved!!!
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> cfg.method = 'summary';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >>
>>> >> obs_data_try = ft_rejectvisual(cfg, obs_data);
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs_data);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs_data_try = ft_rejectartifact (cfg,obs_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Preparing neighbours for channel repair - but bad channel info
>>> >> in!!!
>>> >>
>>> >>
>>> >>
>>> >> % cfg_neighb = [];
>>> >>
>>> >> % cfg_neighb.feedback = 'yes';
>>> >>
>>> >> % cfg_neighb.method = 'triangulation';
>>> >>
>>> >> % cfg_neighb.layout = 'GSN-HydroCel-128.sfp';
>>> >>
>>> >> % neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >>
>>> >>
>>> >>
>>> >> % Interpolate and put into new data structure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.badchannel = {};
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.method = 'nearest';
>>> >>
>>> >> cfg.neighbours = neighbours;
>>> >>
>>> >> obs_data_channelrepaired = ft_channelrepair(cfg,obs_data)
>>> >>
>>> >>
>>> >>
>>> >> % Check reconstruction
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs_data_channelrepaired);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs_data_clean1 = ft_rejectartifact (cfg,obs_data_channelrepaired);
>>> >>
>>> >>
>>> >>
>>> >> % dat1=obs_data;
>>> >>
>>> >> % dat2=obs_data_channelrepaired;
>>> >>
>>> >> %
>>> >>
>>> >> % x=dat1.trial{1}(62,:); % 68 is channel index of E68
>>> >>
>>> >> % y=dat2.trial{1}(62,:);
>>> >>
>>> >> % plot(x);hold on;plot(y,'r');
>>> >>
>>> >> %
>>> >>
>>> >> % x=dat1.trial{1}(72,:);
>>> >>
>>> >> % y=dat2.trial{1}(75,:);
>>> >>
>>> >> % figure;
>>> >>
>>> >> % plot(x);hold on;plot(y,'r')
>>> >>
>>> >> %
>>> >>
>>> >> % x=dat1.trial{1}(75,:);
>>> >>
>>> >> % y=dat2.trial{1}(75,:);
>>> >>
>>> >> % figure;
>>> >>
>>> >> % plot(x);hold on;plot(y,'r')
>>> >>
>>> >> %% artifact rejection/trial inspection - throw out electrode jumps
>>> >> etc.
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs_data_channelrepaired);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs_data_clean1 = ft_rejectartifact (cfg,obs_data_channelrepaired);
>>> >>
>>> >>
>>> >>
>>> >> %% ICA - Anzahl der Komponenten anpassen!- adapt numcomponent
>>> >> according to channels interpolated %% 128-number of interp.
>>> >> channels)
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.channel = {'all'};
>>> >>
>>> >> cfg.numcomponent = 128
>>> >>
>>> >> comp = ft_componentanalysis(cfg,obs_data_clean1);
>>> >>
>>> >> save (strcat(sb,'comp_all') , 'comp')
>>> >>
>>> >>
>>> >>
>>> >> %%
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'component';
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='some';
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> ft_databrowser(cfg,comp);
>>> >>
>>> >>
>>> >>
>>> >> %% poweranalysis components
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.output = 'pow';
>>> >>
>>> >> cfg.channel = 'all';%compute the power spectrum in all ICs
>>> >>
>>> >> cfg.method = 'mtmfft';
>>> >>
>>> >> cfg.taper = 'hanning';
>>> >>
>>> >> cfg.foi = 0:0.2:50;
>>> >>
>>> >> obs_freq = ft_freqanalysis(cfg, comp);
>>> >>
>>> >>
>>> >>
>>> >> %And you can plot the spectra:
>>> >>
>>> >>
>>> >>
>>> >> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>> >>
>>> >> nsubplots = 16;
>>> >>
>>> >> nbyn = sqrt(nsubplots);% sqrt(nsubplots) should not contain
>>> >> decimals, type doc subplot
>>> >>
>>> >>
>>> >>
>>> >> Nfigs = ceil(size(comp.topo,1)/nsubplots);
>>> >>
>>> >> tot = Nfigs*nsubplots;
>>> >>
>>> >>
>>> >>
>>> >> rptvect = 1:size(comp.topo,1);
>>> >>
>>> >> rptvect = padarray(rptvect, [0 tot-size(comp.topo,1)], 0,'post');
>>> >>
>>> >> rptvect = reshape(rptvect,nsubplots,Nfigs)';
>>> >>
>>> >>
>>> >>
>>> >> for r=1:size(rptvect,1);
>>> >>
>>> >> figure;set(gcf,'units','normalized','outerposition',[0 0 1
>>> >> 1]);%full screen
>>> >>
>>> >> k=0;
>>> >>
>>> >> for j=1:size(rptvect,2);
>>> >>
>>> >> if~(rptvect(r,j)==0);
>>> >>
>>> >> k=k+1;
>>> >>
>>> >> cfg=[];
>>> >>
>>> >> cfg.channel = rptvect(r,j);
>>> >>
>>> >> cfg.ylim =[0 500]
>>> >>
>>> >> cfg.xlim =[0 50]
>>> >>
>>> >> subplot(nbyn,nbyn,k);ft_singleplotER(cfg,obs_freq);
>>> >>
>>> >> end
>>> >>
>>> >> end
>>> >>
>>> >> end
>>> >>
>>> >>
>>> >>
>>> >> %For the IC topos you'll follow the same logic as above but with:
>>> >>
>>> >>
>>> >>
>>> >> figure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [1:20]; % specify the component(s) that
>>> >> should be plotted
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.comment = 'no';
>>> >>
>>> >> ft_topoplotIC(cfg, comp)
>>> >>
>>> >>
>>> >>
>>> >> figure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [21:40]; % specify the component(s) that
>>> >> should be plotted
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.comment = 'no';
>>> >>
>>> >> ft_topoplotIC(cfg, comp)
>>> >>
>>> >>
>>> >>
>>> >> figure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [41:60]; % specify the component(s) that
>>> >> should be plotted
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.comment = 'no';
>>> >>
>>> >> ft_topoplotIC(cfg, comp)
>>> >>
>>> >>
>>> >>
>>> >> figure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [61:80]; % specify the component(s) that
>>> >> should be plotted
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.comment = 'no';
>>> >>
>>> >> ft_topoplotIC(cfg, comp)
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Seperate observation conditions
>>> >>
>>> >>
>>> >>
>>> >> name1= strcat(num2str(sb),'_90.xls');
>>> >>
>>> >> list1=xlsread (name1)
>>> >>
>>> >>
>>> >>
>>> >> name2= strcat(num2str(sb),'_180.xls');
>>> >>
>>> >> list2=xlsread (name2)
>>> >>
>>> >>
>>> >> %
>>> >>
>>> >>
>>> >>
>>> >> cfg = []
>>> >>
>>> >> cfg.trials = [list1]
>>> >>
>>> >> obs90_data = ft_redefinetrial(cfg,obs_data_channelrepaired)
>>> >>
>>> >>
>>> >>
>>> >> cfg = []
>>> >>
>>> >> cfg.trials = [list2]
>>> >>
>>> >> obs180_data = ft_redefinetrial(cfg,obs_data_channelrepaired)
>>> >>
>>> >>
>>> >>
>>> >> %%PIPELINE FOR obs90
>>> >>
>>> >>
>>> >>
>>> >> %% Decompose original data according to the components found before
>>> >>
>>> >> load (strcat(sb,'comp_all'))
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.numcomponent = 128;
>>> >>
>>> >> cfg.unmixing = comp.unmixing;
>>> >>
>>> >> cfg.topolabel = comp.topolabel;
>>> >>
>>> >>
>>> >>
>>> >> comp_1 = ft_componentanalysis(cfg, obs90_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Reject component
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [];
>>> >>
>>> >> obs90_data_ica_cleaned = ft_rejectcomponent(cfg, comp_1,
>>> >> obs90_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(sb,'obs90_ica_cleaned') , 'obs90_data_ica_cleaned')
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Artifacts - final detection
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> cfg.method = 'summary';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >>
>>> >> obs90_data_clean3 = ft_rejectvisual(cfg, obs90_data_ica_cleaned);
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs90_data_clean3);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs90_data_clean2 = ft_rejectartifact (cfg,obs90_data_clean3);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> % Save clean data
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs90_clean') , 'obs90_data_clean2')
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Rereferencing data
>>> >>
>>> >> cfg = [];
>>> >>
>>> >>
>>> >>
>>> >> cfg.channel = 'all';
>>> >>
>>> >> cfg.preproc.reref = 'yes';
>>> >>
>>> >> cfg.preproc.refchannel = 'all';
>>> >>
>>> >> obs90_data_ref= ft_preprocessing(cfg,obs90_data_clean2)
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs90_ref') , 'obs90_data_ref')
>>> >>
>>> >> %% Snap out smaller pieces (the third second)
>>> >>
>>> >>
>>> >>
>>> >> cfg = []
>>> >>
>>> >> cfg.toilim = [0 1]
>>> >>
>>> >>
>>> >>
>>> >> obs90_data_small = ft_redefinetrial(cfg,obs90_data_ref)
>>> >>
>>> >>
>>> >>
>>> >> %% TIMELOCK ERP
>>> >>
>>> >> obs90_data_ERP = ft_timelockanalysis(cfg, obs90_data_small);
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs90_ERP') , 'obs90_data_ERP')
>>> >>
>>> >>
>>> >>
>>> >> %% plot it
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.layout = lay ;
>>> >>
>>> >> cfg.interactive = 'yes';
>>> >>
>>> >> ft_multiplotER(cfg, obs90_data_ERP)
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% PIPELINE FOR obs180
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Decompose original data according to the components found before
>>> >>
>>> >> load (strcat(sb,'comp_all'))
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.numcomponent = 128
>>> >>
>>> >> cfg.unmixing = comp.unmixing;
>>> >>
>>> >> cfg.topolabel = comp.topolabel;
>>> >>
>>> >> comp_2 = ft_componentanalysis(cfg, obs180_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Reject component
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [];
>>> >>
>>> >> obs180_data_ica_cleaned = ft_rejectcomponent(cfg, comp_2,
>>> >> obs180_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(sb,'obs180_ica_cleaned') , 'obs180_data_ica_cleaned')
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Artifacts final 180
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> cfg.method = 'summary';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >>
>>> >> obs180_data_clean3 = ft_rejectvisual(cfg, obs180_data_ica_cleaned);
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs180_data_clean3);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs180_data_clean2 = ft_rejectartifact (cfg,obs180_data_clean3);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> % Save clean data
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs180_clean') , 'obs180_data_clean2')
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Rereferencing data
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.channel = 'all';
>>> >>
>>> >> cfg.preproc.reref = 'yes';
>>> >>
>>> >> cfg.preproc.refchannel = 'all';
>>> >>
>>> >> obs180_data_ref= ft_preprocessing(cfg,obs180_data_clean2)
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs180_ref') , 'obs180_data_ref')
>>> >>
>>> >> %% Snap out smaller pieces (the third second)
>>> >>
>>> >>
>>> >>
>>> >> cfg = []
>>> >>
>>> >> cfg.toilim = [0 1]
>>> >>
>>> >>
>>> >>
>>> >> obs180_data_small = ft_redefinetrial(cfg,obs180_data_ref)
>>> >>
>>> >>
>>> >>
>>> >> %% TIMELOCK ERP
>>> >>
>>> >> obs180_data_ERP = ft_timelockanalysis(cfg, obs180_data_small);
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs180_ERP') , 'obs180_data_ERP')
>>> >>
>>> >>
>>> >>
>>> >> %% plot 180 ERP
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.layout = lay ;
>>> >>
>>> >> cfg.interactive = 'yes';
>>> >>
>>> >> ft_multiplotER(cfg, obs180_data_ERP)
>>> >>
>>> >>
>>> >>
>>> >> %% plot both ERPs
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.layout = lay ;
>>> >>
>>> >> cfg.interactive = 'yes';
>>> >>
>>> >> cfg.showlabels = 'yes';
>>> >>
>>> >> ft_multiplotER(cfg, obs90_data_ERP, obs180_data_ERP)
>>> >>
>>> >>
>>> >>
>>> >> %% plot difference wave
>>> >>
>>> >>
>>> >>
>>> >> difference = obs180_data_ERP; % copy one of
>>> >> the structures
>>> >>
>>> >> difference.avg = obs180_data_ERP.avg - obs90_data_ERP.avg; %
>>> >> compute the difference ERP
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.layout = lay;
>>> >>
>>> >> cfg.interactive = 'yes';
>>> >>
>>> >> ft_multiplotER(cfg, difference)
>>> >>
>>> >>
>>> >> 2014-09-07 7:53 GMT+02:00 Joseph Dien <jdien07 at mac.com>:
>>> >> Hi,
>>> >> I?m one of the main Fieldtrip contributors working on supporting
>>> >> EGI data. A couple things. First of all, exactly which net do
>>> >> you use? If they are 129-channel, there is still the question of
>>> >> whether they are the Hydrocel or the older geodesic nets.
>>> >> Regardless, that shouldn't cause an error like this. Could you
>>> >> send me the file you are trying to process and the script you are
>>> >> using and I?ll try troubleshooting it.
>>> >>
>>> >> Joe
>>> >>
>>> >>
>>> >> On Aug 26, 2014, at 12:53 AM, Ana Laura Diez Martini
>>> >> <diezmartini at gmail.com> wrote:
>>> >>
>>> >>> Which nets do you use? I use EGI. I tried both the ones you
>>> >>> mention and they didn't work. It was hard to find that exact one
>>> >>> online but it was the only file that actually worked.
>>> >>>
>>> >>>
>>> >>> On Mon, Aug 25, 2014 at 7:52 AM, KatrinH Heimann
>>> >>> <katrinheimann at gmail.com> wrote:
>>> >>> Dear Ana, dear all,
>>> >>> the layout you used does not correspond to our nets. I tried the
>>> >>> GSN-HydroCel-128.sfp and the GSN-HydroCel-129.sfp. Both don't
>>> >>> work. Please can anybody help?
>>> >>> Cheers
>>> >>> Katrin
>>> >>>
>>> >>>
>>> >>> 2014-08-24 5:40 GMT+02:00 Ana Laura Diez Martini
>>> >>> <diezmartini at gmail.com>:
>>> >>>
>>> >>> Try this one I use
>>> >>>
>>> >>>
>>> >>> On Sun, Aug 24, 2014 at 4:08 AM, KatrinH Heimann
>>> >>> <katrinheimann at gmail.com> wrote:
>>> >>> Dear all, my problems seem neverending. This time however i really
>>> >>> need help.
>>> >>> I implemented a pipeline for ERPs. All works now, trialdefinition,
>>> >>> preprocessing, channelreplacement, ica, componentrejection, final
>>> >>> artifactdetection, timelock of the single subject data. However,
>>> >>> when I wanna compute the grandaverage of the single subjects I get
>>> >>> the following error message:
>>> >>>
>>> >>> computing average of avg over 19 subjects
>>> >>> Warning: discarding electrode information because it cannot be
>>> >>> averaged
>>> >>> > In ft_timelockgrandaverage at 249
>>> >>> the call to "ft_timelockgrandaverage" took 0 seconds and required
>>> >>> the additional allocation of an estimated 3 MB
>>> >>> computing average of avg over 2 subjects
>>> >>> Warning: discarding electrode information because it cannot be
>>> >>> averaged
>>> >>> > In ft_timelockgrandaverage at 249
>>> >>> the call to "ft_timelockgrandaverage" took 0 seconds and required
>>> >>> the additional allocation of an estimated 0 MB
>>> >>> the call to "ft_prepare_layout" took 0 seconds and required the
>>> >>> additional allocation of an estimated 0 MB
>>> >>> the call to "ft_topoplotER" took 0 seconds and required the
>>> >>> additional allocation of an estimated 0 MB
>>> >>>
>>> >>> Furthermore in the plot of the significant clusters, the
>>> >>> channelnames are mixed up (do not correspond to my net)
>>> >>>
>>> >>>
>>> >>> I guess that there is a problem with the layout I use.
>>> >>> Here the code that I use
>>> >>>
>>> >>> %For generating the layout (also in the single subjects):
>>> >>> cfg = [];
>>> >>>
>>> >>> cfg.channel = obs_data.label;
>>> >>>
>>> >>> cfg.layout = 'GSN-HydroCel-129.sfp';
>>> >>>
>>> >>> cfg.feedback = 'yes';
>>> >>>
>>> >>> lay = ft_prepare_layout(cfg);
>>> >>>
>>> >>>
>>> >>> cfg_neighb = [];
>>> >>>
>>> >>> cfg_neighb.feedback = 'yes';
>>> >>>
>>> >>> cfg_neighb.method = 'triangulation';
>>> >>>
>>> >>> cfg_neighb.layout = lay;
>>> >>>
>>> >>> neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >>>
>>> >>>
>>> >>> obs_data.elec = ft_read_sens('GSN-HydroCel-129.sfp');
>>> >>>
>>> >>>
>>> >>>
>>> >>> %For computing the grand average
>>> >>>
>>> >>> cfg = [];
>>> >>>
>>> >>> cfg.channel = 'all';
>>> >>>
>>> >>> cfg.latency = 'all';
>>> >>>
>>> >>> cfg.parameter = 'avg';
>>> >>>
>>> >>> cfg.keepindividual = 'no'
>>> >>>
>>> >>> GA_90 = ft_timelockgrandaverage(cfg,all90{:});
>>> >>>
>>> >>> GA_180 = ft_timelockgrandaverage(cfg,all180{:});
>>> >>>
>>> >>> % "{:}" means to use data from all elements of the variable
>>> >>>
>>> >>>
>>> >>> For plotting the significant clusters
>>> >>>
>>> >>> cfg = [];
>>> >>>
>>> >>> cfg.style = 'blank';
>>> >>>
>>> >>> cfg.layout = lay;
>>> >>>
>>> >>> cfg.channellabels = 'yes';
>>> >>>
>>> >>> cfg.highlight = 'labels';
>>> >>>
>>> >>> cfg.highlightchannel = find(stat.mask);
>>> >>>
>>> >>> cfg.comment = 'no';
>>> >>>
>>> >>> figure; ft_topoplotER(cfg, GA_90)
>>> >>>
>>> >>> title('Nonparametric: significant with cluster multiple comparison
>>> >>> correction')
>>> >>>
>>> >>>
>>> >>>
>>> >>> Do you have ANY idea to this? I am really completely helpless....
>>> >>>
>>> >>> thanks and best
>>> >>>
>>> >>> Katrin
>>> >>>
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> >>
>> ----------------------------------------------------------------------------
>> ----
>>> >>
>>> >> Joseph Dien, PhD
>>> >> Research Associate
>>> >> Cognitive Neurology
>>> >> The Johns Hopkins University School of Medicine
>>> >>
>>> >> Lab E-mail: jdien1 at jhmi.edu
>>> >> Private E-mail: jdien07 at mac.com
>>> >> Office Phone: 410-614-3115
>>> >> Cell Phone: 202-297-8117
>>> >> Fax: 410-955-0188
>>> >> http://joedien.com
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >
>>> >
>> ----------------------------------------------------------------------------
>> ----
>>> >
>>> > Joseph Dien, PhD
>>> > Research Associate
>>> > Cognitive Neurology
>>> > The Johns Hopkins University School of Medicine
>>> >
>>> > Lab E-mail: jdien1 at jhmi.edu
>>> > Private E-mail: jdien07 at mac.com
>>> > Office Phone: 410-614-3115
>>> > Cell Phone: 202-297-8117
>>> > Fax: 410-955-0188
>>> > http://joedien.com
>>> >
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140908/81922
>> ad2/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 4
>>> > Date: Tue, 9 Sep 2014 06:37:13 +0000
>>> > From: "Caspar, Emilie" <e.caspar at ucl.ac.uk>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] ft_rejectvisual: removing trials marked as
>>> > bad
>>> > Message-ID: <3C365782-4B07-4EFE-A921-99489BDD5DA6 at live.ucl.ac.uk>
>>> > Content-Type: text/plain; charset="iso-8859-1"
>>> >
>>> > Hi Ashley,
>>> >
>>> > Maybe the mistake is you did not integrate in your script the
>>> > command to save the rejection. Normally, with the following command,
>>> > you will see in the Matlab Window that artifacts are correctly
>>> > rejected after the "quit" button.
>>> >
>>> > clean_data = ft_rejectvisual(cfg, interpoldata);
>>> > cfg.artfctdef.reject = 'complete';
>>> > cfg.artfctdef.feedback = 'yes';
>>> > cleandata = ft_rejectartifact(cfg,clean_data);
>>> >
>>> > Emilie
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > Le 3 sept. 2014 ? 11:58, Ashley Greene
>>> > <agreene24 at gmail.com<mailto:agreene24 at gmail.com>> a ?crit :
>>> >
>>> > Hello,
>>> >
>>> > I have used the rejectvisual function in attempt to remove bad
>>> > trials, but after marking them and pressing the quit button,
>>> > although the command window states that the selected trials have
>>> > been removed, there is no obvious change in the data; all of the
>>> > trials are still intact. Have I overlooked something?
>>> >
>>> > Thanks,
>>> >
>>> > Ashley
>>> > _______________________________________________
>>> > fieldtrip mailing list
>>> > fieldtrip at donders.ru.nl<mailto:fieldtrip at donders.ru.nl>
>>> > http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140909/4c2d0
>> 985/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 5
>>> > Date: Tue, 09 Sep 2014 14:16:20 +0200
>>> > From: Patricia Wollstadt <Patricia.Wollstadt at gmx.de>
>>> > To: fieldtrip at science.ru.nl
>>> > Subject: Re: [FieldTrip] TRENTOOL pipeline help
>>> > Message-ID: <540EEF94.9080601 at gmx.de>
>>> > Content-Type: text/plain; charset="windows-1252"
>>> >
>>> > Hello Max,
>>> >
>>> > I added a few comments to the questions regarding individual
>>> > parameters
>>> > below. To address the general problem of TRENTOOL telling you, that
>>> > there are not enough sample points in your data: From what I can see
>>> > in
>>> > your script, you probably don't have enough data points in each time
>>> > series to robustly estimate TE. You analyze 800 ms of data sampled
>>> > at
>>> > 300 Hz, which gives you 240 samples per time series. Can you maybe
>>> > avoid
>>> > downsampling to 300 Hz and downsample to 600 Hz instead? Or could
>>> > you
>>> > analyze a longer time window of interest?
>>> > Note that you also 'lose' data to embedding and the interaction
>>> > delay:
>>> > The first point that can be used for TE estimation is at max.
>>> > embedding
>>> > length + max. interaction delay in samples. For example: max.
>>> > embedding
>>> > length = dim * tau_factor * ACT = 10 * 0.4 * 5 = 20 samples plus the
>>> > max
>>> > interaction delay of 30 ms = 9 samples. In this example, you would
>>> > be
>>> > left with 240 - 29 samples for TE estimation per trial. There is
>>> > also
>>> > the possibility to estimate time resolved TE/TE for shorter time
>>> > windows
>>> > of interest (see section 4.4 in the manual); however, this method
>>> > requires the use of a GPU for TE estimation.
>>> >
>>> > I would further recommend to use the new pipeline for group
>>> > statistics
>>> > described in the manual in section 4.5 (the function
>>> > 'TEgroup_calculate'
>>> > is deprecated). The new pipeline allows you to reconstruct the
>>> > interaction delay and uses the following functions (see also
>>> > comments in
>>> > the script):
>>> >
>>> > TEgroup_prepare -> prepares all data sets (all subjects/all
>>> > conditions) for group analysis (this means finding common embedding
>>> > parameters such that estimates are not biased between groups)
>>> > InteractionDelayReconstruction_calculate -> estimates TE for
>>> > individual data sets and all assumed interaction delays u
>>> > InteractionDelayReconstruction_analyze -> reconstructs the
>>> > interaction delay by selecting the u that maximizes TE for each
>>> > channel
>>> > TEgroup_stats -> calculate group statistics using a permutation test
>>> >
>>> > I can send you an example script for group TE analysis using this
>>> > pipeline to get you started. I hope this helps you to get the group
>>> > analysis running. Just write again if you're having trouble setting
>>> > up
>>> > the pipeline or something is not clear about the parameters/my
>>> > comments.
>>> >
>>> > Best,
>>> > Patricia
>>> >
>>> >
>>> >
>>> >
>>> > On 09/04/2014 08:30 PM, Max Cantor wrote:
>>> >> Hi fieldtrippers,
>>> >>
>>> >> I know trentool is not produced by the Donders Institute, so I'm
>>> >> not
>>> >> 100% sure if it is appropriate to ask questions about it here, but
>>> >> to
>>> >> the best of my knowledge they do not have a mailing list and I saw
>>> >> a
>>> >> few trentool questions in the archives, so I'm going to assume it's
>>> >> ok...
>>> >>
>>> >> In any case, below is my current pipeline (slightly modified for
>>> >> comprehensibility):
>>> >>
>>> >> (notes in bold are comments/questions made in this email, not
>>> >> present
>>> >> in the pipeline. Sorry in advance for the long post! Any help would
>>> >> be
>>> >> greatly appreciated as I'm a bit over my head on this but I think
>>> >> I'm
>>> >> close!)
>>> >>
>>> >> *****
>>> >>
>>> >> % Prepare group TE data
>>> >>
>>> >> cfgP = [];
>>> >> cfgP.Path2TSTOOL = *TSTOOLPATH*
>>> >> cfgP.TEcalctype = 'VW_ds';
>>> >> cfgP.channel = {'ctfdip_LAC' 'ctfdip_RAC'};
>>> >>
>>> >> *I'm trying to find the transfer entropy between the left and right
>>> >> auditory cortices in my experiment. The input is virtual sensor
>>> >> data
>>> >> that was produced using SAM in fieldtrip on real MEG data. *
>>> >>
>>> >> % specify u to be scanned
>>> >>
>>> >> cfgP.predicttime_u = 30;
>>> >> cfgP.toi = [-0.4 0.4];
>>> >>
>>> >> *For clarification, the predicttime_u is in seconds but the toi is
>>> >> in
>>> >> milliseconds. If I understand correctly, the predicttime_u must fit
>>> >> within the toi, but beyond that are there any benefits to it being
>>> >> earlier or later?* PW: The predictiontime_u is in milliseconds and
>>> >> the
>>> >> toi is in seconds. The prediction time is the assumed interaction
>>> >> delay between your two sources and should fit within your toi. In
>>> >> general it is preferable to use the method for interaction delay
>>> >> reconstruction for TE estimation, because it allows you to
>>> >> reconstruct
>>> >> the actual delay between your source and target times series. A
>>> >> non-optimal u/interaction delay may cause an underestimation of TE,
>>> >> so
>>> >> it is recommended to use the pipeline for interaction delay
>>> >> reconstruction whenever estimating TE for unknown delays.
>>> >> If you use the methods for interaction delay reconstruction
>>> >> 'predicttime_u' is replaced by
>>> >> cfgTEP.predicttimemin_u % minimum u to be scanned
>>> >> cfgTEP.predicttimemax_u % maximum u to be scanned
>>> >> cfgTEP.predicttimestepsize % time steps between u to be scanned
>>> >> A large range for u values to be scanned increases computing time a
>>> >> lot, so it is best to limit the u range to values that are
>>> >> physiologically plausible.
>>> >>
>>> >> % ACT (Autocorrelation Time) estimation and constraints
>>> >>
>>> >> cfgP.maxlag = 150;
>>> >> cfgP.actthrvalue = 7.5;
>>> >> cfgP.minnrtrials = 5;
>>> >>
>>> >> *My understanding is maxlag should be 1/2 the sampling rate, so
>>> >> since
>>> >> the data are downsampled to 300hz, it should be 150. I know that
>>> >> the
>>> >> sample rate and filters are used to determine the actthrvalue, but
>>> >> I
>>> >> don't actually know the calculation. 7.5 was a rough guess just to
>>> >> test the pipeline. I'm also uncertain of what minnrtrials should
>>> >> be.*
>>> >> PW: You can set the actthrvalue based on the filtering you did
>>> >> prior
>>> >> to TE analysis. If you for example highpass filtered at 10 Hz, you
>>> >> shouldn't find an ACT higher than 30 samples, because you filtered
>>> >> out
>>> >> any components of the signal slower than 10 Hz/30 samples (given
>>> >> your
>>> >> sampling frequency of 300 Hz). So in this scenario the actthrvalue
>>> >> would be 30.
>>> >> A good value for cfgP.minnrtrials is 12 (a minimum number of trials
>>> >> is
>>> >> needed to realize the permutation test for estimated TE values).
>>> >>
>>> >> % Optimization
>>> >>
>>> >> cfgP.optimizemethod = 'ragwitz';
>>> >> cfgP.ragdim = 4:8;
>>> >> cfgP.ragtaurange = [0.2 0.4];
>>> >> cfgP.ragtausteps = 15;
>>> >> cfgP.repPred = 100;
>>> >> *
>>> >> *
>>> >> *I am completely at a loss for this. I've done some reading into
>>> >> transfer entropy, mutual information, etc., cited in trentool, but
>>> >> I'm
>>> >> yet to understand how exactly this optimization works and what the
>>> >> configuration should be, given my data and experimental
>>> >> intentions.*
>>> >> PW: The Ragwitz criterion tries to find optimal embedding
>>> >> parameters
>>> >> dim and tau for the data. To do that, the method iteratively takes
>>> >> all
>>> >> possible combinations of dim and tau values that are provided in
>>> >> cfgP.ragdim and cfgP.ragtaurange/.ragtausteps and tests how well
>>> >> these
>>> >> combinations embed the data. To test an embedding, the method
>>> >> builds
>>> >> the embedding vectors from the data; it then tests for each point
>>> >> how
>>> >> well the next point in time can be predicted from the reference
>>> >> point's nearest neighbours. So for each embedded point, the method
>>> >> searches for the nearest neighbours and calculates the average of
>>> >> those nearest neighbours. The difference between the
>>> >> averaged/predicted point and the actual next point is the error of
>>> >> the
>>> >> local predictor. The Ragwitz criterion will then return the
>>> >> parameter
>>> >> combination for which this error over all points is minimal.
>>> >> The parameters set the following: 'ragdim' are dimensions to be
>>> >> tested
>>> >> by the method (I would reccomend to start with 2:10), 'ragtaurange'
>>> >> together with 'ragtausteps' specifies the tau values to be tested
>>> >> (TRENTOOL will build a vector from 0.2 to 0.4 in 15 steps). Note,
>>> >> that
>>> >> the values here are factors that are later multiplied with the ACT
>>> >> to
>>> >> obtain the actual tau. 'repPred' is the number of points that will
>>> >> be
>>> >> used for the local prediction, i.e. the Ragwitz criterion will test
>>> >> the local prediction and calculate the error for the first 100
>>> >> points
>>> >> in your time series. The two parameters 'flagNei' ans 'sizeNei'
>>> >> below
>>> >> specify the type of neighbour search conducted by the Ragwitz
>>> >> criterion: 'flagNei' tells the method to either conduct a kNN or
>>> >> range
>>> >> search; 'sizeNei' specifies the number of neighbours or the radius
>>> >> to
>>> >> be searched by a range search.
>>> >>
>>> >>
>>> >> % Kernel-based TE estimation
>>> >>
>>> >> cfgP.flagNei = 'Mass';
>>> >> cfgP.sizeNei = 4; % Default
>>> >>
>>> >> cfgP.ensemblemethod = 'no';
>>> >> cfgP.outputpath = *OUTPUT PATH*;
>>> >>
>>> >> if ~exist(*Path for TEprepare data object*)
>>> >> load VSdat;
>>> >> TE_Wrd = {};
>>> >> for i = 1:nConds
>>> >> for j = 1:Nsub
>>> >> TE_Wrd{i}{j} = TEprepare(cfgP, VSdat{i}{j});
>>> >> end
>>> >> end
>>> >> clear VSdat;
>>> >> save('TE_Wrd', 'TE_Wrd');
>>> >> end
>>> >> *
>>> >> *
>>> >> *The configuration and virtual sensor data, organized in a 3 x 15
>>> >> cell
>>> >> of structures (condition by subject) are the input. The TEprepare
>>> >> substructure is added to each individual condition x subject .mat
>>> >> files' data structure which are stored on disk independently.*
>>> >>
>>> >> % Use object_to_mat_conversion.m to replace individual condition x
>>> >> subject virtual sensor data
>>> >> % .mat files with their TE_Wrd equivalent
>>> >> *
>>> >> *
>>> >> *I'm using a separate script to make some manipulations to the
>>> >> objects
>>> >> from disk; this will all eventually be integrated into the main
>>> >> pipeline*.*TRENTOOL seems to handle data output very differently
>>> >> from
>>> >> fieldtrip and I've had trouble thinking through the most logical
>>> >> way
>>> >> to handle the data so it's a bit haphazard right now.*
>>> >>
>>> >> load cond080sub01.mat
>>> >>
>>> >> cfgG = [];
>>> >> cfgG.dim = cond080sub01.TEprepare.optdim;
>>> >> cfgG.tau = cond080sub01.TEprepare.opttau;
>>> >>
>>> >> if isfield(cond080sub01, 'TEprepare')
>>> >> TEgroup_prepare(cfgG, fileCell);
>>> >> else
>>> >> error('Need to run TEprepare before TEgroup_prepare');
>>> >> end
>>> >> *
>>> >> *
>>> >> *For clarification, fileCell is a cell with the name of each
>>> >> condition
>>> >> x subject .mat file, which as I said before is collectively the
>>> >> same
>>> >> as the 3 x 15 VSdat structure (condition x subject).*
>>> >>
>>> >> % Replace .mat files with '_for_TEgroup_calculate' version in
>>> >> % object_to_mat_conversion.m
>>> >>
>>> >> % TE Group Calculate
>>> >>
>>> >> load cond080sub01.mat
>>> >> if isfield(cond080sub01, 'TEgroupprepare')
>>> >> for i = 1:length(fileCell)
>>> >> TEgroup_calculate(fileCell{i});
>>> >> end
>>> >> else
>>> >> error('Need to run TEgroup_prepare before TEgroup_calculate');
>>> >> end
>>> >> *
>>> >> *
>>> >> *At this step I get the following error:
>>> >>
>>> >> Error using transferentropy (line 337)
>>> >> \nTRENTOOL ERROR: not enough data points left after embedding
>>> >>
>>> >> Error in TEgroup_calculate (line 133)
>>> >> [TEresult] = transferentropy(cfg,data);*
>>> >>
>>> >> % TE Group Stats
>>> >>
>>> >> cfgGSTAT = [];
>>> >> cfgGSTAT.design(1,1:2*Nsub) = [ones(1,Nsub) 2*ones(1,Nsub)];
>>> >> cfgGSTAT.design(2,1:2*Nsub) = [1:Nsub 1:Nsub];
>>> >>
>>> >> cfgGSTAT.uvar = 1;
>>> >> cfgGSTAT.ivar = 2;
>>> >> cfgGSTAT.fileidout = 'test_groupstats';
>>> >>
>>> >> TEgroup_stats(cfgGSTAT, fileCell);
>>> >>
>>> >> *Given the error above, I am yet to get to this step, but it does
>>> >> not
>>> >> seem fundamentally different from normal fieldtrip stats.*
>>> >>
>>> >> *****
>>> >>
>>> >> In case my notes were not clear or you skipped to the bottom, *my
>>> >> primary concern is whether the error I'm getting in
>>> >> TEgroup_calculate
>>> >> is a pipeline issue* (I noticed the example pipeline in trentool,
>>> >> the
>>> >> manual, and published methods articles all seem to have slightly or
>>> >> significantly different pipeline compositions), *or if the error
>>> >> is*
>>> >> due to ACT, ragwitz optimization, or some other faulty
>>> >> parameterization *on my part due to a lack of understanding of how
>>> >> transfer entropy works on a more theoretical/mathematical level*.
>>> >> If
>>> >> the latter is the case, is there any relatively straightforward way
>>> >> to
>>> >> conceptualize this, or is this something where I'm just going to
>>> >> have
>>> >> to keep reading and rereading until it eventually makes sense? I've
>>> >> already done quite a bit of that and it hasn't pierced my thick
>>> >> skull
>>> >> yet but I'm sure it will eventually!
>>> >>
>>> >> Thank you so much,
>>> >>
>>> >> Max Cantor
>>> >>
>>> >>
>>> >> --
>>> >> Max Cantor
>>> >> Lab Manager
>>> >> Computational Neurolinguistics Lab
>>> >> University of Michigan
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >
>>> > --
>>> > ------------------------------------------------------------
>>> >
>>> > Patricia Wollstadt, PhD Student
>>> >
>>> > MEG Unit, Brain Imaging Center
>>> >
>>> > Goethe University, Frankfurt, Germany
>>> >
>>> > Heinrich Hoffmann Strasse 10, Haus 93 B
>>> >
>>> > D - 60528 Frankfurt am Main
>>> >
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140909/ce6b2
>> 97f/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 6
>>> > Date: Tue, 9 Sep 2014 15:21:20 +0200
>>> > From: Holger Krause <Holger.Krause at med.uni-duesseldorf.de>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: [FieldTrip] Latest FT version on ftp-server is from three
>>> > days ago
>>> > Message-ID:
>>> > <201409091521.22589.Holger.Krause at med.uni-duesseldorf.de>
>>> > Content-Type: text/plain; charset="us-ascii"
>>> >
>>> > Dear developers,
>>> >
>>> > Could you please check the process for creation/publication of
>>> > zip-files on
>>> > the FTP server? The latest file I can find there is
>>> > fieldtrip-20140906.zip.
>>> >
>>> > Thanks in advance,
>>> >
>>> > Holger
>>> >
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 7
>>> > Date: Tue, 9 Sep 2014 09:19:55 -0400
>>> > From: Max Cantor <mcantor at umich.edu>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] TRENTOOL pipeline help
>>> > Message-ID:
>>> > <CAFTjRaUXzwca7rR3sm8iPLLyUxqHO9kkm++=zAU4LUW=r7NRBw at mail.gmail.com>
>>> > Content-Type: text/plain; charset="utf-8"
>>> >
>>> > This is immensely helpful, thank you. I was very confused about why
>>> > some
>>> > versions of the pipeline I saw were using group calculate and others
>>> > were
>>> > using interaction delay reconstruction and what that meant, and I
>>> > think I
>>> > have a more clear idea of what the different steps of the pipeline
>>> > are
>>> > doing. There are still a few things I'm a bit confused about though
>>> > in
>>> > terms of the pipeline. For instance, whether or not I need to do
>>> > TEprepare
>>> > before group prepare, and if I need to do graph analysis (which I'm
>>> > not
>>> > sure I fully understand but also haven't looked deeply into) before
>>> > group
>>> > stats.
>>> >
>>> > If you don't mind me taking you up on your offer, I think seeing
>>> > your
>>> > example script might help clarify some of these issues.
>>> >
>>> > Thank you!
>>> >
>>> > On Tue, Sep 9, 2014 at 8:16 AM, Patricia Wollstadt <
>>> > Patricia.Wollstadt at gmx.de> wrote:
>>> >
>>> >> Hello Max,
>>> >>
>>> >> I added a few comments to the questions regarding individual
>>> >> parameters
>>> >> below. To address the general problem of TRENTOOL telling you, that
>>> >> there
>>> >> are not enough sample points in your data: From what I can see in
>>> >> your
>>> >> script, you probably don't have enough data points in each time
>>> >> series to
>>> >> robustly estimate TE. You analyze 800 ms of data sampled at 300 Hz,
>>> >> which
>>> >> gives you 240 samples per time series. Can you maybe avoid
>>> >> downsampling to
>>> >> 300 Hz and downsample to 600 Hz instead? Or could you analyze a
>>> >> longer time
>>> >> window of interest?
>>> >> Note that you also 'lose' data to embedding and the interaction
>>> >> delay: The
>>> >> first point that can be used for TE estimation is at max. embedding
>>> >> length
>>> >> + max. interaction delay in samples. For example: max. embedding
>>> >> length =
>>> >> dim * tau_factor * ACT = 10 * 0.4 * 5 = 20 samples plus the max
>>> >> interaction
>>> >> delay of 30 ms = 9 samples. In this example, you would be left with
>>> >> 240 -
>>> >> 29 samples for TE estimation per trial. There is also the
>>> >> possibility to
>>> >> estimate time resolved TE/TE for shorter time windows of interest
>>> >> (see
>>> >> section 4.4 in the manual); however, this method requires the use
>>> >> of a GPU
>>> >> for TE estimation.
>>> >>
>>> >> I would further recommend to use the new pipeline for group
>>> >> statistics
>>> >> described in the manual in section 4.5 (the function
>>> >> 'TEgroup_calculate' is
>>> >> deprecated). The new pipeline allows you to reconstruct the
>>> >> interaction
>>> >> delay and uses the following functions (see also comments in the
>>> >> script):
>>> >>
>>> >> TEgroup_prepare -> prepares all data sets (all subjects/all
>>> >> conditions)
>>> >> for group analysis (this means finding common embedding parameters
>>> >> such
>>> >> that estimates are not biased between groups)
>>> >> InteractionDelayReconstruction_calculate -> estimates TE for
>>> >> individual data sets and all assumed interaction delays u
>>> >> InteractionDelayReconstruction_analyze -> reconstructs the
>>> >> interaction delay by selecting the u that maximizes TE for each
>>> >> channel
>>> >> TEgroup_stats -> calculate group statistics using a permutation
>>> >> test
>>> >>
>>> >> I can send you an example script for group TE analysis using this
>>> >> pipeline
>>> >> to get you started. I hope this helps you to get the group analysis
>>> >> running. Just write again if you're having trouble setting up the
>>> >> pipeline
>>> >> or something is not clear about the parameters/my comments.
>>> >>
>>> >> Best,
>>> >> Patricia
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> On 09/04/2014 08:30 PM, Max Cantor wrote:
>>> >>
>>> >> Hi fieldtrippers,
>>> >>
>>> >> I know trentool is not produced by the Donders Institute, so I'm
>>> >> not 100%
>>> >> sure if it is appropriate to ask questions about it here, but to
>>> >> the best
>>> >> of my knowledge they do not have a mailing list and I saw a few
>>> >> trentool
>>> >> questions in the archives, so I'm going to assume it's ok...
>>> >>
>>> >> In any case, below is my current pipeline (slightly modified for
>>> >> comprehensibility):
>>> >>
>>> >> (notes in bold are comments/questions made in this email, not
>>> >> present in
>>> >> the pipeline. Sorry in advance for the long post! Any help would be
>>> >> greatly
>>> >> appreciated as I'm a bit over my head on this but I think I'm
>>> >> close!)
>>> >>
>>> >> *****
>>> >>
>>> >> % Prepare group TE data
>>> >>
>>> >> cfgP = [];
>>> >> cfgP.Path2TSTOOL = *TSTOOLPATH*
>>> >> cfgP.TEcalctype = 'VW_ds';
>>> >> cfgP.channel = {'ctfdip_LAC' 'ctfdip_RAC'};
>>> >>
>>> >> *I'm trying to find the transfer entropy between the left and right
>>> >> auditory cortices in my experiment. The input is virtual sensor
>>> >> data that
>>> >> was produced using SAM in fieldtrip on real MEG data. *
>>> >>
>>> >> % specify u to be scanned
>>> >>
>>> >> cfgP.predicttime_u = 30;
>>> >> cfgP.toi = [-0.4 0.4];
>>> >>
>>> >> *For clarification, the predicttime_u is in seconds but the toi
>>> >> is in
>>> >> milliseconds. If I understand correctly, the predicttime_u must fit
>>> >> within
>>> >> the toi, but beyond that are there any benefits to it being earlier
>>> >> or
>>> >> later?* PW: The predictiontime_u is in milliseconds and the toi is
>>> >> in
>>> >> seconds. The prediction time is the assumed interaction delay
>>> >> between your
>>> >> two sources and should fit within your toi. In general it is
>>> >> preferable to
>>> >> use the method for interaction delay reconstruction for TE
>>> >> estimation,
>>> >> because it allows you to reconstruct the actual delay between your
>>> >> source
>>> >> and target times series. A non-optimal u/interaction delay may
>>> >> cause an
>>> >> underestimation of TE, so it is recommended to use the pipeline for
>>> >> interaction delay reconstruction whenever estimating TE for unknown
>>> >> delays.
>>> >> If you use the methods for interaction delay reconstruction
>>> >> 'predicttime_u' is replaced by
>>> >> cfgTEP.predicttimemin_u % minimum u to be scanned
>>> >> cfgTEP.predicttimemax_u % maximum u to be scanned
>>> >> cfgTEP.predicttimestepsize % time steps between u to be scanned
>>> >> A large range for u values to be scanned increases computing time a
>>> >> lot,
>>> >> so it is best to limit the u range to values that are
>>> >> physiologically
>>> >> plausible.
>>> >>
>>> >>
>>> >> % ACT (Autocorrelation Time) estimation and constraints
>>> >>
>>> >> cfgP.maxlag = 150;
>>> >> cfgP.actthrvalue = 7.5;
>>> >> cfgP.minnrtrials = 5;
>>> >>
>>> >> *My understanding is maxlag should be 1/2 the sampling rate, so
>>> >> since
>>> >> the data are downsampled to 300hz, it should be 150. I know that
>>> >> the sample
>>> >> rate and filters are used to determine the actthrvalue, but I don't
>>> >> actually know the calculation. 7.5 was a rough guess just to test
>>> >> the
>>> >> pipeline. I'm also uncertain of what minnrtrials should be.* PW:
>>> >> You can
>>> >> set the actthrvalue based on the filtering you did prior to TE
>>> >> analysis. If
>>> >> you for example highpass filtered at 10 Hz, you shouldn't find an
>>> >> ACT
>>> >> higher than 30 samples, because you filtered out any components of
>>> >> the
>>> >> signal slower than 10 Hz/30 samples (given your sampling frequency
>>> >> of 300
>>> >> Hz). So in this scenario the actthrvalue would be 30.
>>> >> A good value for cfgP.minnrtrials is 12 (a minimum number of trials
>>> >> is
>>> >> needed to realize the permutation test for estimated TE values).
>>> >>
>>> >>
>>> >> % Optimization
>>> >>
>>> >> cfgP.optimizemethod = 'ragwitz';
>>> >> cfgP.ragdim = 4:8;
>>> >> cfgP.ragtaurange = [0.2 0.4];
>>> >> cfgP.ragtausteps = 15;
>>> >> cfgP.repPred = 100;
>>> >>
>>> >> *I am completely at a loss for this. I've done some reading into
>>> >> transfer entropy, mutual information, etc., cited in trentool, but
>>> >> I'm yet
>>> >> to understand how exactly this optimization works and what the
>>> >> configuration should be, given my data and experimental
>>> >> intentions.* PW:
>>> >> The Ragwitz criterion tries to find optimal embedding parameters
>>> >> dim and
>>> >> tau for the data. To do that, the method iteratively takes all
>>> >> possible
>>> >> combinations of dim and tau values that are provided in cfgP.ragdim
>>> >> and
>>> >> cfgP.ragtaurange/.ragtausteps and tests how well these combinations
>>> >> embed
>>> >> the data. To test an embedding, the method builds the embedding
>>> >> vectors
>>> >> from the data; it then tests for each point how well the next point
>>> >> in time
>>> >> can be predicted from the reference point's nearest neighbours. So
>>> >> for each
>>> >> embedded point, the method searches for the nearest neighbours and
>>> >> calculates the average of those nearest neighbours. The difference
>>> >> between
>>> >> the averaged/predicted point and the actual next point is the error
>>> >> of the
>>> >> local predictor. The Ragwitz criterion will then return the
>>> >> parameter
>>> >> combination for which this error over all points is minimal.
>>> >> The parameters set the following: 'ragdim' are dimensions to be
>>> >> tested by
>>> >> the method (I would reccomend to start with 2:10), 'ragtaurange'
>>> >> together
>>> >> with 'ragtausteps' specifies the tau values to be tested (TRENTOOL
>>> >> will
>>> >> build a vector from 0.2 to 0.4 in 15 steps). Note, that the values
>>> >> here are
>>> >> factors that are later multiplied with the ACT to obtain the actual
>>> >> tau.
>>> >> 'repPred' is the number of points that will be used for the local
>>> >> prediction, i.e. the Ragwitz criterion will test the local
>>> >> prediction and
>>> >> calculate the error for the first 100 points in your time series.
>>> >> The two
>>> >> parameters 'flagNei' ans 'sizeNei' below specify the type of
>>> >> neighbour
>>> >> search conducted by the Ragwitz criterion: 'flagNei' tells the
>>> >> method to
>>> >> either conduct a kNN or range search; 'sizeNei' specifies the
>>> >> number of
>>> >> neighbours or the radius to be searched by a range search.
>>> >>
>>> >>
>>> >> % Kernel-based TE estimation
>>> >>
>>> >> cfgP.flagNei = 'Mass';
>>> >> cfgP.sizeNei = 4; % Default
>>> >>
>>> >> cfgP.ensemblemethod = 'no';
>>> >> cfgP.outputpath = *OUTPUT PATH*;
>>> >>
>>> >> if ~exist(*Path for TEprepare data object*)
>>> >> load VSdat;
>>> >> TE_Wrd = {};
>>> >> for i = 1:nConds
>>> >> for j = 1:Nsub
>>> >> TE_Wrd{i}{j} = TEprepare(cfgP, VSdat{i}{j});
>>> >> end
>>> >> end
>>> >> clear VSdat;
>>> >> save('TE_Wrd', 'TE_Wrd');
>>> >> end
>>> >>
>>> >> *The configuration and virtual sensor data, organized in a 3 x 15
>>> >> cell
>>> >> of structures (condition by subject) are the input. The TEprepare
>>> >> substructure is added to each individual condition x subject .mat
>>> >> files'
>>> >> data structure which are stored on disk independently.*
>>> >>
>>> >> % Use object_to_mat_conversion.m to replace individual condition x
>>> >> subject
>>> >> virtual sensor data
>>> >> % .mat files with their TE_Wrd equivalent
>>> >>
>>> >> *I'm using a separate script to make some manipulations to the
>>> >> objects
>>> >> from disk; this will all eventually be integrated into the main
>>> >> pipeline*.*
>>> >> TRENTOOL seems to handle data output very differently from
>>> >> fieldtrip and
>>> >> I've had trouble thinking through the most logical way to handle
>>> >> the data
>>> >> so it's a bit haphazard right now.*
>>> >>
>>> >> load cond080sub01.mat
>>> >>
>>> >> cfgG = [];
>>> >> cfgG.dim = cond080sub01.TEprepare.optdim;
>>> >> cfgG.tau = cond080sub01.TEprepare.opttau;
>>> >>
>>> >> if isfield(cond080sub01, 'TEprepare')
>>> >> TEgroup_prepare(cfgG, fileCell);
>>> >> else
>>> >> error('Need to run TEprepare before TEgroup_prepare');
>>> >> end
>>> >>
>>> >> *For clarification, fileCell is a cell with the name of each
>>> >> condition x
>>> >> subject .mat file, which as I said before is collectively the same
>>> >> as the 3
>>> >> x 15 VSdat structure (condition x subject).*
>>> >>
>>> >> % Replace .mat files with '_for_TEgroup_calculate' version in
>>> >> % object_to_mat_conversion.m
>>> >>
>>> >> % TE Group Calculate
>>> >>
>>> >> load cond080sub01.mat
>>> >> if isfield(cond080sub01, 'TEgroupprepare')
>>> >> for i = 1:length(fileCell)
>>> >> TEgroup_calculate(fileCell{i});
>>> >> end
>>> >> else
>>> >> error('Need to run TEgroup_prepare before TEgroup_calculate');
>>> >> end
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> *At this step I get the following error: Error using
>>> >> transferentropy (line
>>> >> 337) \nTRENTOOL ERROR: not enough data points left after embedding
>>> >> Error in
>>> >> TEgroup_calculate (line 133) [TEresult] =
>>> >> transferentropy(cfg,data);*
>>> >>
>>> >> % TE Group Stats
>>> >>
>>> >> cfgGSTAT = [];
>>> >> cfgGSTAT.design(1,1:2*Nsub) = [ones(1,Nsub) 2*ones(1,Nsub)];
>>> >> cfgGSTAT.design(2,1:2*Nsub) = [1:Nsub 1:Nsub];
>>> >>
>>> >> cfgGSTAT.uvar = 1;
>>> >> cfgGSTAT.ivar = 2;
>>> >> cfgGSTAT.fileidout = 'test_groupstats';
>>> >>
>>> >> TEgroup_stats(cfgGSTAT, fileCell);
>>> >>
>>> >> *Given the error above, I am yet to get to this step, but it does
>>> >> not
>>> >> seem fundamentally different from normal fieldtrip stats.*
>>> >>
>>> >> *****
>>> >>
>>> >> In case my notes were not clear or you skipped to the bottom, *my
>>> >> primary concern is whether the error I'm getting in
>>> >> TEgroup_calculate is a
>>> >> pipeline issue* (I noticed the example pipeline in trentool, the
>>> >> manual,
>>> >> and published methods articles all seem to have slightly or
>>> >> significantly
>>> >> different pipeline compositions), *or if the error is* due to ACT,
>>> >> ragwitz optimization, or some other faulty parameterization *on my
>>> >> part
>>> >> due to a lack of understanding of how transfer entropy works on a
>>> >> more
>>> >> theoretical/mathematical level*. If the latter is the case, is
>>> >> there any
>>> >> relatively straightforward way to conceptualize this, or is this
>>> >> something
>>> >> where I'm just going to have to keep reading and rereading until it
>>> >> eventually makes sense? I've already done quite a bit of that and
>>> >> it hasn't
>>> >> pierced my thick skull yet but I'm sure it will eventually!
>>> >>
>>> >> Thank you so much,
>>> >>
>>> >> Max Cantor
>>> >>
>>> >>
>>> >> --
>>> >> Max Cantor
>>> >> Lab Manager
>>> >> Computational Neurolinguistics Lab
>>> >> University of Michigan
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing
>>> >>
>> listfieldtrip at donders.ru.nlhttp://mailman.science.ru.nl/mailman/listinfo/fie
>> ldtrip
>>> >>
>>> >>
>>> >> --
>>> >> ------------------------------------------------------------
>>> >>
>>> >> Patricia Wollstadt, PhD Student
>>> >>
>>> >> MEG Unit, Brain Imaging Center Goethe University, Frankfurt,
>>> >> Germany
>>> >>
>>> >> Heinrich Hoffmann Strasse 10, Haus 93 B D - 60528 Frankfurt am
>>> >> Main
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> >
>>> >
>>> >
>>> > --
>>> > Max Cantor
>>> > Lab Manager
>>> > Computational Neurolinguistics Lab
>>> > University of Michigan
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140909/29e18
>> 024/attachment.html>
>>> >
>>> > ------------------------------
>>> >
>>> > _______________________________________________
>>> > fieldtrip mailing list
>>> > fieldtrip at donders.ru.nl
>>> > http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >
>>> > End of fieldtrip Digest, Vol 46, Issue 3
>>> > ****************************************
>>> >
>>>
>>>
>>>
>>> Barbara Schorr, MSc
>>> Clinical and Biological Psychology
>>> University of Ulm
>>> Albert-Einstein-Allee 47
>>> 89069 Ulm
>>>
>>>
>>>
>>> _______________________________________________
>>> fieldtrip mailing list
>>> fieldtrip at donders.ru.nl
>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>
>> --
>> Jim Herring, MSc.
>> Neuronal Oscillations Group
>> Centre for Cognitive Neuroimaging
>> Donders Institute for Brain, Cognition and Behaviour
>> Radboud University Nijmegen
>> _______________________________________________
>> fieldtrip mailing list
>> fieldtrip at donders.ru.nl
>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>
>>
>>
>> ------------------------------
>>
>> Message: 8
>> Date: Mon, 15 Sep 2014 12:53:19 -0500
>> From: "Jing Fan" <jingfan.jf at gmail.com>
>> To: "'FieldTrip discussion list'" <fieldtrip at science.ru.nl>
>> Subject: Re: [FieldTrip] ft_globalmeanfield : Undefined function of
>> variable 'abort'
>> Message-ID: <000301cfd10d$ef53cba0$cdfb62e0$@gmail.com>
>> Content-Type: text/plain; charset="us-ascii"
>>
>> Hi Barbara and Jim,
>>
>> I added path your/path/to/fieldtrip/utilities and now it worked.
>> Hope it helps solve the problem.
>>
>> Best,
>> Jing
>>
>> -----Original Message-----
>> From: fieldtrip-bounces at science.ru.nl
>> [mailto:fieldtrip-bounces at science.ru.nl] On Behalf Of Herring, J.D. (Jim)
>> Sent: Monday, September 15, 2014 5:01 AM
>> To: FieldTrip discussion list
>> Subject: Re: [FieldTrip] ft_globalmeanfield : Undefined function of variable
>> 'abort'
>>
>> Dear Barbara,
>>
>> The error seems to be related to a bug that pops up now and then
>> (http://bugzilla.fcdonders.nl/show_bug.cgi?id=2580) which could be due to a
>> corrupt installation of fieldtrip and/or the need to update fieldtrip.
>>
>> Could you please try downloading the most recent version of fieldtrip and
>> see if the problem persists?
>>
>> For an example of what can be expected from this function see: Esser SK,
>> Huber R, Massimini M, Peterson MJ, Ferrarelli F, Tononi G. A direct
>> demonstration of cortical LTP in humans: a combined TMS/EEG study. Brain Res
>> Bull. 2006 Mar 15;69(1):86-94. Epub 2005 Dec 1. PubMed PMID: 16464689.
>>
>> Best,
>>
>> Jim
>>
>>
>> ----- Oorspronkelijk bericht -----
>>> Van: "barbara schorr" <barbara.schorr at uni-ulm.de>
>>> Aan: fieldtrip at science.ru.nl
>>> Verzonden: Woensdag 10 september 2014 14:07:14
>>> Onderwerp: [FieldTrip] ft_globalmeanfield : Undefined function of variable
>> 'abort'
>>> Dear fieldtripers.
>>>
>>> as mentioned in the subject line I would like to anaylse my timelocked
>>> ERP Data with the function ft_globalmeanfield.
>>>
>>> I get the Error: Undefined function or variable 'abort'
>>> Error in ft_globalmeanfield (line84)
>>> if abort
>>>
>>> in the function it says:
>>>
>>> %the abort variable is set to true or false in ft_preamble_inti
>>> if abort
>>> % do not continue function execution in case the outputfile is
>>> present and the user indicated to keep it
>>> return
>>> end
>>>
>>>
>>> I don't understand what this means. I would really appreciate your
>>> help to get this running.
>>>
>>> Also, what is the result when I run this function on my data? (This
>>> method was proposed from a reviewer. I never used it before, so I
>>> don't exactly know what it does and what the result will look like).
>>>
>>> Thank you very much in advance!
>>>
>>> Best,
>>>
>>> Barbara Schorr
>>>
>>>
>>>
>>>
>>> Zitat von fieldtrip-request at science.ru.nl:
>>>
>>> > Send fieldtrip mailing list submissions to
>>> > fieldtrip at science.ru.nl
>>> >
>>> > To subscribe or unsubscribe via the World Wide Web, visit
>>> > http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> > or, via email, send a message with subject or body 'help' to
>>> > fieldtrip-request at science.ru.nl
>>> >
>>> > You can reach the person managing the list at
>>> > fieldtrip-owner at science.ru.nl
>>> >
>>> > When replying, please edit your Subject line so it is more specific
>>> > than "Re: Contents of fieldtrip digest..."
>>> >
>>> >
>>> > Today's Topics:
>>> >
>>> > 1. Re: Question regarding nonparametric testing for coherence
>>> > differences (Eric Maris)
>>> > 2. Re: Problem with Geodesic 129 layout!! (KatrinH Heimann)
>>> > 3. Re: Problem with Geodesic 129 layout!! (Joseph Dien)
>>> > 4. Re: ft_rejectvisual: removing trials marked as bad
>>> > (Caspar, Emilie)
>>> > 5. Re: TRENTOOL pipeline help (Patricia Wollstadt)
>>> > 6. Latest FT version on ftp-server is from three days ago
>>> > (Holger Krause)
>>> > 7. Re: TRENTOOL pipeline help (Max Cantor)
>>> >
>>> >
>>> > ----------------------------------------------------------------------
>>> >
>>> > Message: 1
>>> > Date: Mon, 8 Sep 2014 15:46:11 +0200 (CEST)
>>> > From: "Eric Maris" <e.maris at psych.ru.nl>
>>> > To: <hweeling.lee at gmail.com>, "'FieldTrip discussion list'"
>>> > <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] Question regarding nonparametric testing
>>> > for
>>> > coherence differences
>>> > Message-ID: <015901cfcb6b$3fdf1f00$bf9d5d00$@maris at psych.ru.nl>
>>> > Content-Type: text/plain; charset="utf-8"
>>> >
>>> > Dear Hwee Ling,
>>> >
>>> >
>>> >
>>> > In the paper you refer to (Maris et al, JNM, 2007), I did not
>>> > perform a
>>> > cluster-based permutation test at the level of the channel pairs.
>>> > Instead,
>>> > all coherences mentioned in the paper are coherence between a single
>>> > EMG
>>> > channel (2 electrodes mounted on the forearm) and all MEG
>>> > electrodes. Thus,
>>> > there are as many EMG-MEG coherences as there are MEG channels (275
>>> > in our
>>> > lab), and the clustering of these coherences involves the same
>>> > neighbourhood
>>> > structure as the clustering of channel-specific statistics on power
>>> > or
>>> > evoked response. The analysis you propose involves clustering in a
>>> > much more
>>> > complex space, namely the formed by all (MEG,MEG) channel pairs
>>> > (275*275=75625 pairs). In the early days of cluster-based
>>> > permutation
>>> > statistics, I have worked on this problem but did not pursue it
>>> > because the
>>> > resulting clusters are very hard to interpret.
>>> >
>>> >
>>> >
>>> > Best,
>>> >
>>> >
>>> >
>>> > Eric Maris
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > Dear all and Prof Maris,
>>> >
>>> > I'm re-posting this question again, as I didn't get any replies
>>> > previously.
>>> >
>>> > I?m interested to investigate if there are any differences in phase
>>> > synchronization in resting state data at timepoint 2 versus
>>> > timepoint 1. The
>>> > EEG data was collected using 64 EEG channels, resting state, eyes
>>> > opened and
>>> > eyes closed. I?ve arbitrarily segmented the resting state data into
>>> > epochs
>>> > of 2s each, and the epochs with artifacts are excluded completely
>>> > from
>>> > further analyses. I then performed mtmfft to get the fourier
>>> > representation
>>> > of the data, extracted the coherence, and compared the coherence
>>> > difference
>>> > of timepoint 2 versus timepoint 1 of all channels paired with all
>>> > other
>>> > channels.
>>> >
>>> > I figured that if I extract the connectivity analyses without
>>> > specifying the
>>> > channelcmb, I get a 'chan_chan_freq' dimord variable that would
>>> > allow me to
>>> > perform cluster-based statistical analyses. I get an output with
>>> > ?chan_chan?
>>> > dimord variable. However, I was not 100% sure that this is correct,
>>> > hence, I?ve
>>> > inserted my code (see below). It?ll be great if you could tell me if
>>> > what I?m
>>> > doing makes any sense at all. Also, I don?t know how I can plot the
>>> > results
>>> > to see if it make any sense at all.
>>> >
>>> > Also, I checked the values obtained from when I specified
>>> > "cfg.channelcmb"
>>> > and when I did not specify "cfg.channelcmb", I noticed that the
>>> > values were
>>> > somehow different. I would assume that the values to be similar,
>>> > although
>>> > I'm not sure why they would have differences in the values obtained
>>> > from
>>> > specifying "cfg.channelcmb".
>>> >
>>> > This is my code that I've used thus far:
>>> >
>>> > for sub = 1:5
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.output = 'fourier';
>>> >
>>> > cfg.channel = {'all'};
>>> >
>>> > cfg.method = 'mtmfft';
>>> >
>>> > cfg.keeptrials = 'yes';
>>> >
>>> > cfg.tapsmofrq = 5;
>>> >
>>> > cfg.foilim = [0 100];
>>> >
>>> > cfg.taper = 'dpss';
>>> >
>>> > % find the index for the c200 condition
>>> >
>>> > pre_c200_idx = find(data5.trialinfo == 201);
>>> >
>>> > cfg.trials = pre_c200_idx;
>>> >
>>> > HLF_pre_c200 = ft_freqanalysis(cfg, data5);
>>> >
>>> > post_c200_idx = find(data5.trialinfo == 200);
>>> >
>>> > cfg.trials = post_c200_idx;
>>> >
>>> > HLF_post_c200 = ft_freqanalysis(cfg, data5);
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.keeptrials = 'no';
>>> >
>>> > cfg.channel = {'all'};
>>> >
>>> > cfg.removemean = 'yes';
>>> >
>>> > cfg.method = 'coh';
>>> >
>>> > HLF_pre_c200coh{sub} = ft_connectivityanalysis(cfg,
>>> > HLF_pre_c200);
>>> >
>>> > HLF_post_c200coh{sub} = ft_connectivityanalysis(cfg,
>>> > HLF_post_c200);
>>> >
>>> > end
>>> >
>>> >
>>> >
>>> >
>> load('D:\Hweeling_Programs\fieldtrip-20140330\template\layout\easycapM11.mat
>> ');
>>> >
>>> > cfg_neighb.method = 'template';
>>> >
>>> > cfg_neighb.layout = lay;
>>> >
>>> > cfg_neighb.channel = 'all';
>>> >
>>> > neighbours = ft_prepare_neighbours(cfg_neighb,
>>> > sub_HLF_pre_c200coh{1});
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay;
>>> >
>>> > cfg.neighbours = neighbours;
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.channelcmb = {cfg.channel, cfg.channel};
>>> >
>>> > cfg.latency = 'all';
>>> >
>>> > cfg.avgovertime = 'no';
>>> >
>>> > cfg.avgoverchan = 'no';
>>> >
>>> > cfg.parameter = 'cohspctrm';
>>> >
>>> > cfg.method = 'montecarlo';
>>> >
>>> > cfg.statistic = 'depsamplesT';
>>> >
>>> > cfg.correctm = 'cluster';
>>> >
>>> > cfg.tail = 0;
>>> >
>>> > % cfg.clustertail = 0;
>>> >
>>> > cfg.alpha = 0.05/8; % to correct for multiple comparisons across 8
>>> > frequency
>>> > bands.
>>> >
>>> > cfg.numrandomization = 10000;
>>> >
>>> > cfg.ivar = 2;
>>> >
>>> > cfg.uvar = 1;
>>> >
>>> >
>>> >
>>> > % design matrices
>>> >
>>> > clear design;
>>> >
>>> > design(1,:) = [1:5, 1:5];
>>> >
>>> > design(2,:) = [ones(1,5), ones(1,5) * 2];
>>> >
>>> > cfg.design = design;
>>> >
>>> > % for theta band
>>> >
>>> > cfg.avgoverfreq = 'yes';
>>> >
>>> > cfg.frequency = [4 8]; % I also performed the statistics for delta
>>> > (2-4),
>>> > alpha (8-10.5), alpha (10.5-13), beta (13-20), beta (20-30), gamma
>>> > (30-40),
>>> > and gamma (40-100).
>>> >
>>> > [diffc200_theta_stat] = ft_freqstatistics(cfg,
>>> > sub_HLF_post_c200coh{:},
>>> > sub_HLF_pre_c200coh{:});
>>> >
>>> >
>>> >
>>> > When I tried to plot the results, I used this code:
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.layout = 'lay';
>>> >
>>> > cfg.zlim = [-1 1];
>>> >
>>> > cfg.alpha = 0.05;
>>> >
>>> > cfg.refchannel = 'all';
>>> >
>>> > ft_clusterplot(cfg, diffc200_theta_stat);
>>> >
>>> > However, I was not sure how I could plot the results. I get an error
>>> > message
>>> > from Fieldtrip when using ft_clusterplot:
>>> >
>>> > Error using topoplot_common (line 366)
>>> >
>>> > no reference channel is specified
>>> >
>>> > Error in ft_topoplotTFR (line 192)
>>> >
>>> > [cfg] = topoplot_common(cfg, varargin{:});
>>> >
>>> > Error in ft_clusterplot (line 372)
>>> >
>>> > ft_topoplotTFR(cfgtopo, stat);
>>> >
>>> >
>>> >
>>> > According to your paper in 2007, the topoplot of the results were
>>> > masked by
>>> > the spatio-spectral pattern of the significant clusters. I don't
>>> > know how to
>>> > do this, and I would really appreciate if you can show me how to
>>> > make such a
>>> > plot.
>>> >
>>> > Thank you very much.
>>> >
>>> > Kind regards,
>>> >
>>> > Hweeling
>>> >
>>> >
>>> >
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140908/98b85
>> 280/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 2
>>> > Date: Mon, 8 Sep 2014 21:38:01 +0200
>>> > From: KatrinH Heimann <katrinheimann at gmail.com>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] Problem with Geodesic 129 layout!!
>>> > Message-ID:
>>> > <CACnHcBeqEoQMirfZ-hCKK8rSmbfcNYzxFQH1mmSaeGCuKMN-uA at mail.gmail.com>
>>> > Content-Type: text/plain; charset="utf-8"
>>> >
>>> > Dear Joseph, thanks so much, I really appreciate your help. I was
>>> > also
>>> > wandering, if maybe there is another bug in my code.
>>> > Our nets are 128 channels, Hydrocel, but as a colleague of me
>>> > adviced me to
>>> > do so, I also tried the 129 layout.
>>> > My code you find below (without selection of bad channels etc.)
>>> > If you need also the data of two subjects to have a look, let me
>>> > know!!!
>>> > Best and thanks really!
>>> > Katrin
>>> >
>>> >
>>> > subject=input('Which subject do you want to analyse? ','s');
>>> >
>>> > name = strcat(subject,'.raw');
>>> >
>>> > subjectnumber=input('Which is the subjectnumber?', 's');
>>> >
>>> > sb=subjectnumber
>>> >
>>> > %subjectnumber = strcat(subjectnumber, '.txt')
>>> >
>>> > %%
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.dataset = name;
>>> >
>>> > cfg.trialfun = 'ft_trialfun_general'; % this is the default
>>> >
>>> > cfg.trialdef.eventtype = 'trigger';
>>> >
>>> > cfg.trialdef.eventvalue = 'stim'; % the value of the stimulus
>>> > trigger
>>> >
>>> > cfg.trialdef.prestim = 0.234; % in seconds
>>> >
>>> > cfg.trialdef.poststim = 7.266; % in seconds (whole time of video
>>> > observation, but maybe we need less)
>>> >
>>> > cfg = ft_definetrial(cfg);
>>> >
>>> >
>>> > cfg.trl([1:7],:) = [];
>>> >
>>> >
>>> > %change timeline according to constant offset of 16 ms = 8 samples
>>> > (because
>>> > recorded with 500 hz)in
>>> >
>>> > %structure trial
>>> >
>>> > cfg.trl(:,3)=cfg.trl(:,3)-8
>>> >
>>> >
>>> > %change timeline to make the cut the zeropoint
>>> >
>>> >
>>> > cfg.trl(:,3)=cfg.trl(:,3)- 1000;
>>> >
>>> >
>>> >
>>> > %% preprocess data
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.preproc.detrend = 'yes';
>>> >
>>> > cfg.preproc.demean = 'yes';
>>> >
>>> > cfg.preproc.baselinewindow = [-2.1 -2.0]
>>> >
>>> > %cfg.preproc.bpfilter = 'yes'; - the data here has to be already
>>> > filtered
>>> >
>>> > %(0.1-45) and bad channels have to be replaced!!!!
>>> >
>>> > %cfg.preproc.bpfreq = [6 32];
>>> >
>>> > %
>>> >
>>> > %
>>> >
>>> > obs_data = ft_preprocessing(cfg);
>>> >
>>> > %
>>> >
>>> > save (strcat(sb,'obs_data') , 'obs_data')
>>> >
>>> >
>>> > %% determining channel neighbours (necessary for Artifact detection)
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.channel = obs_data.label;
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.feedback = 'yes';
>>> >
>>> > lay = ft_prepare_layout(cfg);
>>> >
>>> >
>>> >
>>> > cfg_neighb = [];
>>> >
>>> > cfg_neighb.feedback = 'yes';
>>> >
>>> >
>>> > cfg_neighb.method = 'triangulation';
>>> >
>>> > cfg_neighb.layout = 'GSN128.sfp';
>>> >
>>> > neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >
>>> >
>>> > obs_data.elec = ft_read_sens('GSN128.sfp');
>>> >
>>> >
>>> > %% Artifacts - to detect bad channels - is not saved!!!
>>> >
>>> >
>>> >
>>> > cfg.method = 'summary';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >
>>> > obs_data_try = ft_rejectvisual(cfg, obs_data);
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs_data);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs_data_try = ft_rejectartifact (cfg,obs_data);
>>> >
>>> >
>>> >
>>> > %% Preparing neighbours for channel repair - but bad channel info
>>> > in!!!
>>> >
>>> >
>>> > % cfg_neighb = [];
>>> >
>>> > % cfg_neighb.feedback = 'yes';
>>> >
>>> > % cfg_neighb.method = 'triangulation';
>>> >
>>> > % cfg_neighb.layout = 'GSN-HydroCel-128.sfp';
>>> >
>>> > % neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >
>>> >
>>> > % Interpolate and put into new data structure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.badchannel = {};
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.method = 'nearest';
>>> >
>>> > cfg.neighbours = neighbours;
>>> >
>>> > obs_data_channelrepaired = ft_channelrepair(cfg,obs_data)
>>> >
>>> >
>>> > % Check reconstruction
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs_data_channelrepaired);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs_data_clean1 = ft_rejectartifact (cfg,obs_data_channelrepaired);
>>> >
>>> >
>>> > % dat1=obs_data;
>>> >
>>> > % dat2=obs_data_channelrepaired;
>>> >
>>> > %
>>> >
>>> > % x=dat1.trial{1}(62,:); % 68 is channel index of E68
>>> >
>>> > % y=dat2.trial{1}(62,:);
>>> >
>>> > % plot(x);hold on;plot(y,'r');
>>> >
>>> > %
>>> >
>>> > % x=dat1.trial{1}(72,:);
>>> >
>>> > % y=dat2.trial{1}(75,:);
>>> >
>>> > % figure;
>>> >
>>> > % plot(x);hold on;plot(y,'r')
>>> >
>>> > %
>>> >
>>> > % x=dat1.trial{1}(75,:);
>>> >
>>> > % y=dat2.trial{1}(75,:);
>>> >
>>> > % figure;
>>> >
>>> > % plot(x);hold on;plot(y,'r')
>>> >
>>> > %% artifact rejection/trial inspection - throw out electrode jumps
>>> > etc.
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs_data_channelrepaired);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs_data_clean1 = ft_rejectartifact (cfg,obs_data_channelrepaired);
>>> >
>>> >
>>> > %% ICA - Anzahl der Komponenten anpassen!- adapt numcomponent
>>> > according to
>>> > channels interpolated %% 128-number of interp. channels)
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.channel = {'all'};
>>> >
>>> > cfg.numcomponent = 128
>>> >
>>> > comp = ft_componentanalysis(cfg,obs_data_clean1);
>>> >
>>> > save (strcat(sb,'comp_all') , 'comp')
>>> >
>>> >
>>> > %%
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'component';
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='some';
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > ft_databrowser(cfg,comp);
>>> >
>>> >
>>> > %% poweranalysis components
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.output = 'pow';
>>> >
>>> > cfg.channel = 'all';%compute the power spectrum in all ICs
>>> >
>>> > cfg.method = 'mtmfft';
>>> >
>>> > cfg.taper = 'hanning';
>>> >
>>> > cfg.foi = 0:0.2:50;
>>> >
>>> > obs_freq = ft_freqanalysis(cfg, comp);
>>> >
>>> >
>>> > %And you can plot the spectra:
>>> >
>>> >
>>> > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>> >
>>> > nsubplots = 16;
>>> >
>>> > nbyn = sqrt(nsubplots);% sqrt(nsubplots) should not contain
>>> > decimals, type
>>> > doc subplot
>>> >
>>> >
>>> > Nfigs = ceil(size(comp.topo,1)/nsubplots);
>>> >
>>> > tot = Nfigs*nsubplots;
>>> >
>>> >
>>> > rptvect = 1:size(comp.topo,1);
>>> >
>>> > rptvect = padarray(rptvect, [0 tot-size(comp.topo,1)], 0,'post');
>>> >
>>> > rptvect = reshape(rptvect,nsubplots,Nfigs)';
>>> >
>>> >
>>> > for r=1:size(rptvect,1);
>>> >
>>> > figure;set(gcf,'units','normalized','outerposition',[0 0 1
>>> > 1]);%full
>>> > screen
>>> >
>>> > k=0;
>>> >
>>> > for j=1:size(rptvect,2);
>>> >
>>> > if~(rptvect(r,j)==0);
>>> >
>>> > k=k+1;
>>> >
>>> > cfg=[];
>>> >
>>> > cfg.channel = rptvect(r,j);
>>> >
>>> > cfg.ylim =[0 500]
>>> >
>>> > cfg.xlim =[0 50]
>>> >
>>> > subplot(nbyn,nbyn,k);ft_singleplotER(cfg,obs_freq);
>>> >
>>> > end
>>> >
>>> > end
>>> >
>>> > end
>>> >
>>> >
>>> > %For the IC topos you'll follow the same logic as above but with:
>>> >
>>> >
>>> > figure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [1:20]; % specify the component(s) that should be
>>> > plotted
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.comment = 'no';
>>> >
>>> > ft_topoplotIC(cfg, comp)
>>> >
>>> >
>>> > figure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [21:40]; % specify the component(s) that should be
>>> > plotted
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.comment = 'no';
>>> >
>>> > ft_topoplotIC(cfg, comp)
>>> >
>>> >
>>> > figure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [41:60]; % specify the component(s) that should be
>>> > plotted
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.comment = 'no';
>>> >
>>> > ft_topoplotIC(cfg, comp)
>>> >
>>> >
>>> > figure
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [61:80]; % specify the component(s) that should be
>>> > plotted
>>> >
>>> > cfg.layout = 'GSN128.sfp';
>>> >
>>> > cfg.comment = 'no';
>>> >
>>> > ft_topoplotIC(cfg, comp)
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > %% Seperate observation conditions
>>> >
>>> >
>>> > name1= strcat(num2str(sb),'_90.xls');
>>> >
>>> > list1=xlsread (name1)
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > name2= strcat(num2str(sb),'_180.xls');
>>> >
>>> > list2=xlsread (name2)
>>> >
>>> >
>>> >
>>> > %
>>> >
>>> >
>>> > cfg = []
>>> >
>>> > cfg.trials = [list1]
>>> >
>>> > obs90_data = ft_redefinetrial(cfg,obs_data_channelrepaired)
>>> >
>>> >
>>> > cfg = []
>>> >
>>> > cfg.trials = [list2]
>>> >
>>> > obs180_data = ft_redefinetrial(cfg,obs_data_channelrepaired)
>>> >
>>> >
>>> > %%PIPELINE FOR obs90
>>> >
>>> >
>>> > %% Decompose original data according to the components found before
>>> >
>>> > load (strcat(sb,'comp_all'))
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.numcomponent = 128;
>>> >
>>> > cfg.unmixing = comp.unmixing;
>>> >
>>> > cfg.topolabel = comp.topolabel;
>>> >
>>> >
>>> > comp_1 = ft_componentanalysis(cfg, obs90_data);
>>> >
>>> >
>>> >
>>> > %% Reject component
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [];
>>> >
>>> > obs90_data_ica_cleaned = ft_rejectcomponent(cfg, comp_1,
>>> > obs90_data);
>>> >
>>> >
>>> >
>>> >
>>> > save (strcat(sb,'obs90_ica_cleaned') , 'obs90_data_ica_cleaned')
>>> >
>>> >
>>> >
>>> >
>>> > %% Artifacts - final detection
>>> >
>>> >
>>> >
>>> > cfg.method = 'summary';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >
>>> > obs90_data_clean3 = ft_rejectvisual(cfg, obs90_data_ica_cleaned);
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs90_data_clean3);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs90_data_clean2 = ft_rejectartifact (cfg,obs90_data_clean3);
>>> >
>>> >
>>> >
>>> > % Save clean data
>>> >
>>> >
>>> > save (strcat(subject,'obs90_clean') , 'obs90_data_clean2')
>>> >
>>> >
>>> >
>>> > %% Rereferencing data
>>> >
>>> > cfg = [];
>>> >
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.preproc.reref = 'yes';
>>> >
>>> > cfg.preproc.refchannel = 'all';
>>> >
>>> > obs90_data_ref= ft_preprocessing(cfg,obs90_data_clean2)
>>> >
>>> >
>>> > save (strcat(subject,'obs90_ref') , 'obs90_data_ref')
>>> >
>>> > %% Snap out smaller pieces (the third second)
>>> >
>>> >
>>> > cfg = []
>>> >
>>> > cfg.toilim = [0 1]
>>> >
>>> >
>>> > obs90_data_small = ft_redefinetrial(cfg,obs90_data_ref)
>>> >
>>> >
>>> > %% TIMELOCK ERP
>>> >
>>> > obs90_data_ERP = ft_timelockanalysis(cfg, obs90_data_small);
>>> >
>>> >
>>> > save (strcat(subject,'obs90_ERP') , 'obs90_data_ERP')
>>> >
>>> >
>>> > %% plot it
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay ;
>>> >
>>> > cfg.interactive = 'yes';
>>> >
>>> > ft_multiplotER(cfg, obs90_data_ERP)
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > %% PIPELINE FOR obs180
>>> >
>>> >
>>> >
>>> > %% Decompose original data according to the components found before
>>> >
>>> > load (strcat(sb,'comp_all'))
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.numcomponent = 128
>>> >
>>> > cfg.unmixing = comp.unmixing;
>>> >
>>> > cfg.topolabel = comp.topolabel;
>>> >
>>> > comp_2 = ft_componentanalysis(cfg, obs180_data);
>>> >
>>> >
>>> >
>>> > %% Reject component
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.component = [];
>>> >
>>> > obs180_data_ica_cleaned = ft_rejectcomponent(cfg, comp_2,
>>> > obs180_data);
>>> >
>>> >
>>> >
>>> >
>>> > save (strcat(sb,'obs180_ica_cleaned') , 'obs180_data_ica_cleaned')
>>> >
>>> >
>>> >
>>> >
>>> > %% Artifacts final 180
>>> >
>>> >
>>> >
>>> > cfg.method = 'summary';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >
>>> > obs180_data_clean3 = ft_rejectvisual(cfg, obs180_data_ica_cleaned);
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.viewmode = 'vertical';
>>> >
>>> > cfg.latency=[0 1];
>>> >
>>> > cfg.continuous = 'no';
>>> >
>>> > cfg.plotlabels='yes'
>>> >
>>> > cfg = ft_databrowser(cfg,obs180_data_clean3);
>>> >
>>> > %cfg.artfctdef.reject = 'complete';
>>> >
>>> > obs180_data_clean2 = ft_rejectartifact (cfg,obs180_data_clean3);
>>> >
>>> >
>>> >
>>> > % Save clean data
>>> >
>>> >
>>> > save (strcat(subject,'obs180_clean') , 'obs180_data_clean2')
>>> >
>>> >
>>> >
>>> > %% Rereferencing data
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.channel = 'all';
>>> >
>>> > cfg.preproc.reref = 'yes';
>>> >
>>> > cfg.preproc.refchannel = 'all';
>>> >
>>> > obs180_data_ref= ft_preprocessing(cfg,obs180_data_clean2)
>>> >
>>> >
>>> > save (strcat(subject,'obs180_ref') , 'obs180_data_ref')
>>> >
>>> > %% Snap out smaller pieces (the third second)
>>> >
>>> >
>>> > cfg = []
>>> >
>>> > cfg.toilim = [0 1]
>>> >
>>> >
>>> > obs180_data_small = ft_redefinetrial(cfg,obs180_data_ref)
>>> >
>>> >
>>> > %% TIMELOCK ERP
>>> >
>>> > obs180_data_ERP = ft_timelockanalysis(cfg, obs180_data_small);
>>> >
>>> >
>>> > save (strcat(subject,'obs180_ERP') , 'obs180_data_ERP')
>>> >
>>> >
>>> > %% plot 180 ERP
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay ;
>>> >
>>> > cfg.interactive = 'yes';
>>> >
>>> > ft_multiplotER(cfg, obs180_data_ERP)
>>> >
>>> >
>>> > %% plot both ERPs
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay ;
>>> >
>>> > cfg.interactive = 'yes';
>>> >
>>> > cfg.showlabels = 'yes';
>>> >
>>> > ft_multiplotER(cfg, obs90_data_ERP, obs180_data_ERP)
>>> >
>>> >
>>> > %% plot difference wave
>>> >
>>> >
>>> > difference = obs180_data_ERP; % copy one of the
>>> > structures
>>> >
>>> > difference.avg = obs180_data_ERP.avg - obs90_data_ERP.avg; % compute
>>> > the
>>> > difference ERP
>>> >
>>> >
>>> >
>>> > cfg = [];
>>> >
>>> > cfg.layout = lay;
>>> >
>>> > cfg.interactive = 'yes';
>>> >
>>> > ft_multiplotER(cfg, difference)
>>> >
>>> > 2014-09-07 7:53 GMT+02:00 Joseph Dien <jdien07 at mac.com>:
>>> >
>>> >> Hi,
>>> >> I?m one of the main Fieldtrip contributors working on supporting
>>> >> EGI
>>> >> data. A couple things. First of all, exactly which net do you use?
>>> >> If
>>> >> they are 129-channel, there is still the question of whether they
>>> >> are the
>>> >> Hydrocel or the older geodesic nets. Regardless, that shouldn't
>>> >> cause an
>>> >> error like this. Could you send me the file you are trying to
>>> >> process and
>>> >> the script you are using and I?ll try troubleshooting it.
>>> >>
>>> >> Joe
>>> >>
>>> >>
>>> >> On Aug 26, 2014, at 12:53 AM, Ana Laura Diez Martini <
>>> >> diezmartini at gmail.com> wrote:
>>> >>
>>> >> Which nets do you use? I use EGI. I tried both the ones you mention
>>> >> and
>>> >> they didn't work. It was hard to find that exact one online but it
>>> >> was the
>>> >> only file that actually worked.
>>> >>
>>> >>
>>> >> On Mon, Aug 25, 2014 at 7:52 AM, KatrinH Heimann
>>> >> <katrinheimann at gmail.com>
>>> >> wrote:
>>> >>
>>> >>> Dear Ana, dear all,
>>> >>> the layout you used does not correspond to our nets. I tried the
>>> >>> GSN-HydroCel-128.sfp and the GSN-HydroCel-129.sfp. Both don't
>>> >>> work.
>>> >>> Please can anybody help?
>>> >>> Cheers
>>> >>> Katrin
>>> >>>
>>> >>>
>>> >>> 2014-08-24 5:40 GMT+02:00 Ana Laura Diez Martini
>>> >>> <diezmartini at gmail.com>:
>>> >>>
>>> >>> Try this one
>>> >>> <https://www.dropbox.com/s/58zv658rtdant2c/GSN129.sfp?dl=0>
>>> >>>> I use
>>> >>>>
>>> >>>>
>>> >>>> On Sun, Aug 24, 2014 at 4:08 AM, KatrinH Heimann <
>>> >>>> katrinheimann at gmail.com> wrote:
>>> >>>>
>>> >>>>> Dear all, my problems seem neverending. This time however i
>>> >>>>> really need
>>> >>>>> help.
>>> >>>>> I implemented a pipeline for ERPs. All works now,
>>> >>>>> trialdefinition,
>>> >>>>> preprocessing, channelreplacement, ica, componentrejection,
>>> >>>>> final
>>> >>>>> artifactdetection, timelock of the single subject data. However,
>>> >>>>> when I
>>> >>>>> wanna compute the grandaverage of the single subjects I get the
>>> >>>>> following
>>> >>>>> error message:
>>> >>>>>
>>> >>>>> computing average of avg over 19 subjects
>>> >>>>> Warning: discarding electrode information because it cannot be
>>> >>>>> averaged
>>> >>>>> > In ft_timelockgrandaverage at 249
>>> >>>>> the call to "ft_timelockgrandaverage" took 0 seconds and
>>> >>>>> required the
>>> >>>>> additional allocation of an estimated 3 MB
>>> >>>>> computing average of avg over 2 subjects
>>> >>>>> Warning: discarding electrode information because it cannot be
>>> >>>>> averaged
>>> >>>>> > In ft_timelockgrandaverage at 249
>>> >>>>> the call to "ft_timelockgrandaverage" took 0 seconds and
>>> >>>>> required the
>>> >>>>> additional allocation of an estimated 0 MB
>>> >>>>> the call to "ft_prepare_layout" took 0 seconds and required the
>>> >>>>> additional allocation of an estimated 0 MB
>>> >>>>> the call to "ft_topoplotER" took 0 seconds and required the
>>> >>>>> additional
>>> >>>>> allocation of an estimated 0 MB
>>> >>>>>
>>> >>>>> Furthermore in the plot of the significant clusters, the
>>> >>>>> channelnames
>>> >>>>> are mixed up (do not correspond to my net)
>>> >>>>>
>>> >>>>>
>>> >>>>> I guess that there is a problem with the layout I use.
>>> >>>>> Here the code that I use
>>> >>>>>
>>> >>>>> %For generating the layout (also in the single subjects):
>>> >>>>>
>>> >>>>> cfg = [];
>>> >>>>>
>>> >>>>> cfg.channel = obs_data.label;
>>> >>>>>
>>> >>>>> cfg.layout = 'GSN-HydroCel-129.sfp';
>>> >>>>>
>>> >>>>> cfg.feedback = 'yes';
>>> >>>>>
>>> >>>>> lay = ft_prepare_layout(cfg);
>>> >>>>>
>>> >>>>>
>>> >>>>> cfg_neighb = [];
>>> >>>>>
>>> >>>>> cfg_neighb.feedback = 'yes';
>>> >>>>>
>>> >>>>> cfg_neighb.method = 'triangulation';
>>> >>>>>
>>> >>>>> cfg_neighb.layout = lay;
>>> >>>>>
>>> >>>>> neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >>>>>
>>> >>>>>
>>> >>>>> obs_data.elec = ft_read_sens('GSN-HydroCel-129.sfp');
>>> >>>>>
>>> >>>>>
>>> >>>>> %For computing the grand average
>>> >>>>>
>>> >>>>> cfg = [];
>>> >>>>>
>>> >>>>> cfg.channel = 'all';
>>> >>>>>
>>> >>>>> cfg.latency = 'all';
>>> >>>>>
>>> >>>>> cfg.parameter = 'avg';
>>> >>>>>
>>> >>>>> cfg.keepindividual = 'no'
>>> >>>>>
>>> >>>>> GA_90 = ft_timelockgrandaverage(cfg,all90{:});
>>> >>>>>
>>> >>>>> GA_180 = ft_timelockgrandaverage(cfg,all180{:});
>>> >>>>>
>>> >>>>> % "{:}" means to use data from all elements of the variable
>>> >>>>>
>>> >>>>>
>>> >>>>> For plotting the significant clusters
>>> >>>>>
>>> >>>>> cfg = [];
>>> >>>>>
>>> >>>>> cfg.style = 'blank';
>>> >>>>>
>>> >>>>> cfg.layout = lay;
>>> >>>>>
>>> >>>>> cfg.channellabels = 'yes';
>>> >>>>>
>>> >>>>> cfg.highlight = 'labels';
>>> >>>>>
>>> >>>>> cfg.highlightchannel = find(stat.mask);
>>> >>>>>
>>> >>>>> cfg.comment = 'no';
>>> >>>>>
>>> >>>>> figure; ft_topoplotER(cfg, GA_90)
>>> >>>>>
>>> >>>>> title('Nonparametric: significant with cluster multiple
>>> >>>>> comparison
>>> >>>>> correction')
>>> >>>>>
>>> >>>>>
>>> >>>>> Do you have ANY idea to this? I am really completely
>>> >>>>> helpless....
>>> >>>>>
>>> >>>>> thanks and best
>>> >>>>>
>>> >>>>> Katrin
>>> >>>>>
>>> >>>>> _______________________________________________
>>> >>>>> fieldtrip mailing list
>>> >>>>> fieldtrip at donders.ru.nl
>>> >>>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>>>
>>> >>>>
>>> >>>>
>>> >>>> _______________________________________________
>>> >>>> fieldtrip mailing list
>>> >>>> fieldtrip at donders.ru.nl
>>> >>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>>
>>> >>>
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> >>
>>> >>
>>> >>
>> ----------------------------------------------------------------------------
>> ----
>>> >>
>>> >> Joseph Dien, PhD
>>> >> Research Associate
>>> >> Cognitive Neurology
>>> >> The Johns Hopkins University School of Medicine
>>> >>
>>> >> Lab E-mail: jdien1 at jhmi.edu
>>> >> Private E-mail: jdien07 at mac.com
>>> >> Office Phone: 410-614-3115
>>> >> Cell Phone: 202-297-8117
>>> >> Fax: 410-955-0188
>>> >> http://joedien.com
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140908/e8846
>> b61/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 3
>>> > Date: Mon, 08 Sep 2014 21:55:44 -0400
>>> > From: Joseph Dien <jdien07 at mac.com>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] Problem with Geodesic 129 layout!!
>>> > Message-ID: <148A801A-8CEA-4F88-A7D0-130637BDAC03 at mac.com>
>>> > Content-Type: text/plain; charset="windows-1252"
>>> >
>>> > yes, please do send me the data.
>>> >
>>> > Thanks!
>>> >
>>> > Joe
>>> >
>>> > On Sep 8, 2014, at 3:38 PM, KatrinH Heimann
>>> > <katrinheimann at gmail.com> wrote:
>>> >
>>> >> Dear Joseph, thanks so much, I really appreciate your help. I was
>>> >> also wandering, if maybe there is another bug in my code.
>>> >> Our nets are 128 channels, Hydrocel, but as a colleague of me
>>> >> adviced me to do so, I also tried the 129 layout.
>>> >> My code you find below (without selection of bad channels etc.)
>>> >> If you need also the data of two subjects to have a look, let me
>>> >> know!!!
>>> >> Best and thanks really!
>>> >> Katrin
>>> >>
>>> >>
>>> >>
>>> >> subject=input('Which subject do you want to analyse? ','s');
>>> >>
>>> >> name = strcat(subject,'.raw');
>>> >>
>>> >> subjectnumber=input('Which is the subjectnumber?', 's');
>>> >>
>>> >> sb=subjectnumber
>>> >>
>>> >> %subjectnumber = strcat(subjectnumber, '.txt')
>>> >>
>>> >> %%
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.dataset = name;
>>> >>
>>> >> cfg.trialfun = 'ft_trialfun_general'; % this is the default
>>> >>
>>> >> cfg.trialdef.eventtype = 'trigger';
>>> >>
>>> >> cfg.trialdef.eventvalue = 'stim'; % the value of the stimulus
>>> >> trigger
>>> >>
>>> >> cfg.trialdef.prestim = 0.234; % in seconds
>>> >>
>>> >> cfg.trialdef.poststim = 7.266; % in seconds (whole time of video
>>> >> observation, but maybe we need less)
>>> >>
>>> >> cfg = ft_definetrial(cfg);
>>> >>
>>> >>
>>> >>
>>> >> cfg.trl([1:7],:) = [];
>>> >>
>>> >>
>>> >>
>>> >> %change timeline according to constant offset of 16 ms = 8 samples
>>> >> (because recorded with 500 hz)in
>>> >>
>>> >> %structure trial
>>> >>
>>> >> cfg.trl(:,3)=cfg.trl(:,3)-8
>>> >>
>>> >>
>>> >>
>>> >> %change timeline to make the cut the zeropoint
>>> >>
>>> >>
>>> >>
>>> >> cfg.trl(:,3)=cfg.trl(:,3)- 1000;
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% preprocess data
>>> >>
>>> >> cfg.channel = 'all';
>>> >>
>>> >> cfg.preproc.detrend = 'yes';
>>> >>
>>> >> cfg.preproc.demean = 'yes';
>>> >>
>>> >> cfg.preproc.baselinewindow = [-2.1 -2.0]
>>> >>
>>> >> %cfg.preproc.bpfilter = 'yes'; - the data here has to be already
>>> >> filtered
>>> >>
>>> >> %(0.1-45) and bad channels have to be replaced!!!!
>>> >>
>>> >> %cfg.preproc.bpfreq = [6 32];
>>> >>
>>> >> %
>>> >>
>>> >> %
>>> >>
>>> >> obs_data = ft_preprocessing(cfg);
>>> >>
>>> >> %
>>> >>
>>> >> save (strcat(sb,'obs_data') , 'obs_data')
>>> >>
>>> >>
>>> >>
>>> >> %% determining channel neighbours (necessary for Artifact
>>> >> detection)
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.channel = obs_data.label;
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.feedback = 'yes';
>>> >>
>>> >> lay = ft_prepare_layout(cfg);
>>> >>
>>> >>
>>> >> cfg_neighb = [];
>>> >>
>>> >> cfg_neighb.feedback = 'yes';
>>> >>
>>> >>
>>> >>
>>> >> cfg_neighb.method = 'triangulation';
>>> >>
>>> >> cfg_neighb.layout = 'GSN128.sfp';
>>> >>
>>> >> neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >>
>>> >>
>>> >>
>>> >> obs_data.elec = ft_read_sens('GSN128.sfp');
>>> >>
>>> >>
>>> >>
>>> >> %% Artifacts - to detect bad channels - is not saved!!!
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> cfg.method = 'summary';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >>
>>> >> obs_data_try = ft_rejectvisual(cfg, obs_data);
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs_data);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs_data_try = ft_rejectartifact (cfg,obs_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Preparing neighbours for channel repair - but bad channel info
>>> >> in!!!
>>> >>
>>> >>
>>> >>
>>> >> % cfg_neighb = [];
>>> >>
>>> >> % cfg_neighb.feedback = 'yes';
>>> >>
>>> >> % cfg_neighb.method = 'triangulation';
>>> >>
>>> >> % cfg_neighb.layout = 'GSN-HydroCel-128.sfp';
>>> >>
>>> >> % neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >>
>>> >>
>>> >>
>>> >> % Interpolate and put into new data structure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.badchannel = {};
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.method = 'nearest';
>>> >>
>>> >> cfg.neighbours = neighbours;
>>> >>
>>> >> obs_data_channelrepaired = ft_channelrepair(cfg,obs_data)
>>> >>
>>> >>
>>> >>
>>> >> % Check reconstruction
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs_data_channelrepaired);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs_data_clean1 = ft_rejectartifact (cfg,obs_data_channelrepaired);
>>> >>
>>> >>
>>> >>
>>> >> % dat1=obs_data;
>>> >>
>>> >> % dat2=obs_data_channelrepaired;
>>> >>
>>> >> %
>>> >>
>>> >> % x=dat1.trial{1}(62,:); % 68 is channel index of E68
>>> >>
>>> >> % y=dat2.trial{1}(62,:);
>>> >>
>>> >> % plot(x);hold on;plot(y,'r');
>>> >>
>>> >> %
>>> >>
>>> >> % x=dat1.trial{1}(72,:);
>>> >>
>>> >> % y=dat2.trial{1}(75,:);
>>> >>
>>> >> % figure;
>>> >>
>>> >> % plot(x);hold on;plot(y,'r')
>>> >>
>>> >> %
>>> >>
>>> >> % x=dat1.trial{1}(75,:);
>>> >>
>>> >> % y=dat2.trial{1}(75,:);
>>> >>
>>> >> % figure;
>>> >>
>>> >> % plot(x);hold on;plot(y,'r')
>>> >>
>>> >> %% artifact rejection/trial inspection - throw out electrode jumps
>>> >> etc.
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs_data_channelrepaired);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs_data_clean1 = ft_rejectartifact (cfg,obs_data_channelrepaired);
>>> >>
>>> >>
>>> >>
>>> >> %% ICA - Anzahl der Komponenten anpassen!- adapt numcomponent
>>> >> according to channels interpolated %% 128-number of interp.
>>> >> channels)
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.channel = {'all'};
>>> >>
>>> >> cfg.numcomponent = 128
>>> >>
>>> >> comp = ft_componentanalysis(cfg,obs_data_clean1);
>>> >>
>>> >> save (strcat(sb,'comp_all') , 'comp')
>>> >>
>>> >>
>>> >>
>>> >> %%
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'component';
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='some';
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> ft_databrowser(cfg,comp);
>>> >>
>>> >>
>>> >>
>>> >> %% poweranalysis components
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.output = 'pow';
>>> >>
>>> >> cfg.channel = 'all';%compute the power spectrum in all ICs
>>> >>
>>> >> cfg.method = 'mtmfft';
>>> >>
>>> >> cfg.taper = 'hanning';
>>> >>
>>> >> cfg.foi = 0:0.2:50;
>>> >>
>>> >> obs_freq = ft_freqanalysis(cfg, comp);
>>> >>
>>> >>
>>> >>
>>> >> %And you can plot the spectra:
>>> >>
>>> >>
>>> >>
>>> >> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>> >>
>>> >> nsubplots = 16;
>>> >>
>>> >> nbyn = sqrt(nsubplots);% sqrt(nsubplots) should not contain
>>> >> decimals, type doc subplot
>>> >>
>>> >>
>>> >>
>>> >> Nfigs = ceil(size(comp.topo,1)/nsubplots);
>>> >>
>>> >> tot = Nfigs*nsubplots;
>>> >>
>>> >>
>>> >>
>>> >> rptvect = 1:size(comp.topo,1);
>>> >>
>>> >> rptvect = padarray(rptvect, [0 tot-size(comp.topo,1)], 0,'post');
>>> >>
>>> >> rptvect = reshape(rptvect,nsubplots,Nfigs)';
>>> >>
>>> >>
>>> >>
>>> >> for r=1:size(rptvect,1);
>>> >>
>>> >> figure;set(gcf,'units','normalized','outerposition',[0 0 1
>>> >> 1]);%full screen
>>> >>
>>> >> k=0;
>>> >>
>>> >> for j=1:size(rptvect,2);
>>> >>
>>> >> if~(rptvect(r,j)==0);
>>> >>
>>> >> k=k+1;
>>> >>
>>> >> cfg=[];
>>> >>
>>> >> cfg.channel = rptvect(r,j);
>>> >>
>>> >> cfg.ylim =[0 500]
>>> >>
>>> >> cfg.xlim =[0 50]
>>> >>
>>> >> subplot(nbyn,nbyn,k);ft_singleplotER(cfg,obs_freq);
>>> >>
>>> >> end
>>> >>
>>> >> end
>>> >>
>>> >> end
>>> >>
>>> >>
>>> >>
>>> >> %For the IC topos you'll follow the same logic as above but with:
>>> >>
>>> >>
>>> >>
>>> >> figure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [1:20]; % specify the component(s) that
>>> >> should be plotted
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.comment = 'no';
>>> >>
>>> >> ft_topoplotIC(cfg, comp)
>>> >>
>>> >>
>>> >>
>>> >> figure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [21:40]; % specify the component(s) that
>>> >> should be plotted
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.comment = 'no';
>>> >>
>>> >> ft_topoplotIC(cfg, comp)
>>> >>
>>> >>
>>> >>
>>> >> figure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [41:60]; % specify the component(s) that
>>> >> should be plotted
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.comment = 'no';
>>> >>
>>> >> ft_topoplotIC(cfg, comp)
>>> >>
>>> >>
>>> >>
>>> >> figure
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [61:80]; % specify the component(s) that
>>> >> should be plotted
>>> >>
>>> >> cfg.layout = 'GSN128.sfp';
>>> >>
>>> >> cfg.comment = 'no';
>>> >>
>>> >> ft_topoplotIC(cfg, comp)
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Seperate observation conditions
>>> >>
>>> >>
>>> >>
>>> >> name1= strcat(num2str(sb),'_90.xls');
>>> >>
>>> >> list1=xlsread (name1)
>>> >>
>>> >>
>>> >>
>>> >> name2= strcat(num2str(sb),'_180.xls');
>>> >>
>>> >> list2=xlsread (name2)
>>> >>
>>> >>
>>> >> %
>>> >>
>>> >>
>>> >>
>>> >> cfg = []
>>> >>
>>> >> cfg.trials = [list1]
>>> >>
>>> >> obs90_data = ft_redefinetrial(cfg,obs_data_channelrepaired)
>>> >>
>>> >>
>>> >>
>>> >> cfg = []
>>> >>
>>> >> cfg.trials = [list2]
>>> >>
>>> >> obs180_data = ft_redefinetrial(cfg,obs_data_channelrepaired)
>>> >>
>>> >>
>>> >>
>>> >> %%PIPELINE FOR obs90
>>> >>
>>> >>
>>> >>
>>> >> %% Decompose original data according to the components found before
>>> >>
>>> >> load (strcat(sb,'comp_all'))
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.numcomponent = 128;
>>> >>
>>> >> cfg.unmixing = comp.unmixing;
>>> >>
>>> >> cfg.topolabel = comp.topolabel;
>>> >>
>>> >>
>>> >>
>>> >> comp_1 = ft_componentanalysis(cfg, obs90_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Reject component
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [];
>>> >>
>>> >> obs90_data_ica_cleaned = ft_rejectcomponent(cfg, comp_1,
>>> >> obs90_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(sb,'obs90_ica_cleaned') , 'obs90_data_ica_cleaned')
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Artifacts - final detection
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> cfg.method = 'summary';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >>
>>> >> obs90_data_clean3 = ft_rejectvisual(cfg, obs90_data_ica_cleaned);
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs90_data_clean3);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs90_data_clean2 = ft_rejectartifact (cfg,obs90_data_clean3);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> % Save clean data
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs90_clean') , 'obs90_data_clean2')
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Rereferencing data
>>> >>
>>> >> cfg = [];
>>> >>
>>> >>
>>> >>
>>> >> cfg.channel = 'all';
>>> >>
>>> >> cfg.preproc.reref = 'yes';
>>> >>
>>> >> cfg.preproc.refchannel = 'all';
>>> >>
>>> >> obs90_data_ref= ft_preprocessing(cfg,obs90_data_clean2)
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs90_ref') , 'obs90_data_ref')
>>> >>
>>> >> %% Snap out smaller pieces (the third second)
>>> >>
>>> >>
>>> >>
>>> >> cfg = []
>>> >>
>>> >> cfg.toilim = [0 1]
>>> >>
>>> >>
>>> >>
>>> >> obs90_data_small = ft_redefinetrial(cfg,obs90_data_ref)
>>> >>
>>> >>
>>> >>
>>> >> %% TIMELOCK ERP
>>> >>
>>> >> obs90_data_ERP = ft_timelockanalysis(cfg, obs90_data_small);
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs90_ERP') , 'obs90_data_ERP')
>>> >>
>>> >>
>>> >>
>>> >> %% plot it
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.layout = lay ;
>>> >>
>>> >> cfg.interactive = 'yes';
>>> >>
>>> >> ft_multiplotER(cfg, obs90_data_ERP)
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% PIPELINE FOR obs180
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Decompose original data according to the components found before
>>> >>
>>> >> load (strcat(sb,'comp_all'))
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.numcomponent = 128
>>> >>
>>> >> cfg.unmixing = comp.unmixing;
>>> >>
>>> >> cfg.topolabel = comp.topolabel;
>>> >>
>>> >> comp_2 = ft_componentanalysis(cfg, obs180_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Reject component
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.component = [];
>>> >>
>>> >> obs180_data_ica_cleaned = ft_rejectcomponent(cfg, comp_2,
>>> >> obs180_data);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(sb,'obs180_ica_cleaned') , 'obs180_data_ica_cleaned')
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Artifacts final 180
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> cfg.method = 'summary';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.layout = 'GSN128.sfp'; % this allows for plotting
>>> >>
>>> >> obs180_data_clean3 = ft_rejectvisual(cfg, obs180_data_ica_cleaned);
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.viewmode = 'vertical';
>>> >>
>>> >> cfg.latency=[0 1];
>>> >>
>>> >> cfg.continuous = 'no';
>>> >>
>>> >> cfg.plotlabels='yes'
>>> >>
>>> >> cfg = ft_databrowser(cfg,obs180_data_clean3);
>>> >>
>>> >> %cfg.artfctdef.reject = 'complete';
>>> >>
>>> >> obs180_data_clean2 = ft_rejectartifact (cfg,obs180_data_clean3);
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> % Save clean data
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs180_clean') , 'obs180_data_clean2')
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> %% Rereferencing data
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.channel = 'all';
>>> >>
>>> >> cfg.preproc.reref = 'yes';
>>> >>
>>> >> cfg.preproc.refchannel = 'all';
>>> >>
>>> >> obs180_data_ref= ft_preprocessing(cfg,obs180_data_clean2)
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs180_ref') , 'obs180_data_ref')
>>> >>
>>> >> %% Snap out smaller pieces (the third second)
>>> >>
>>> >>
>>> >>
>>> >> cfg = []
>>> >>
>>> >> cfg.toilim = [0 1]
>>> >>
>>> >>
>>> >>
>>> >> obs180_data_small = ft_redefinetrial(cfg,obs180_data_ref)
>>> >>
>>> >>
>>> >>
>>> >> %% TIMELOCK ERP
>>> >>
>>> >> obs180_data_ERP = ft_timelockanalysis(cfg, obs180_data_small);
>>> >>
>>> >>
>>> >>
>>> >> save (strcat(subject,'obs180_ERP') , 'obs180_data_ERP')
>>> >>
>>> >>
>>> >>
>>> >> %% plot 180 ERP
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.layout = lay ;
>>> >>
>>> >> cfg.interactive = 'yes';
>>> >>
>>> >> ft_multiplotER(cfg, obs180_data_ERP)
>>> >>
>>> >>
>>> >>
>>> >> %% plot both ERPs
>>> >>
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.layout = lay ;
>>> >>
>>> >> cfg.interactive = 'yes';
>>> >>
>>> >> cfg.showlabels = 'yes';
>>> >>
>>> >> ft_multiplotER(cfg, obs90_data_ERP, obs180_data_ERP)
>>> >>
>>> >>
>>> >>
>>> >> %% plot difference wave
>>> >>
>>> >>
>>> >>
>>> >> difference = obs180_data_ERP; % copy one of
>>> >> the structures
>>> >>
>>> >> difference.avg = obs180_data_ERP.avg - obs90_data_ERP.avg; %
>>> >> compute the difference ERP
>>> >>
>>> >>
>>> >> cfg = [];
>>> >>
>>> >> cfg.layout = lay;
>>> >>
>>> >> cfg.interactive = 'yes';
>>> >>
>>> >> ft_multiplotER(cfg, difference)
>>> >>
>>> >>
>>> >> 2014-09-07 7:53 GMT+02:00 Joseph Dien <jdien07 at mac.com>:
>>> >> Hi,
>>> >> I?m one of the main Fieldtrip contributors working on supporting
>>> >> EGI data. A couple things. First of all, exactly which net do
>>> >> you use? If they are 129-channel, there is still the question of
>>> >> whether they are the Hydrocel or the older geodesic nets.
>>> >> Regardless, that shouldn't cause an error like this. Could you
>>> >> send me the file you are trying to process and the script you are
>>> >> using and I?ll try troubleshooting it.
>>> >>
>>> >> Joe
>>> >>
>>> >>
>>> >> On Aug 26, 2014, at 12:53 AM, Ana Laura Diez Martini
>>> >> <diezmartini at gmail.com> wrote:
>>> >>
>>> >>> Which nets do you use? I use EGI. I tried both the ones you
>>> >>> mention and they didn't work. It was hard to find that exact one
>>> >>> online but it was the only file that actually worked.
>>> >>>
>>> >>>
>>> >>> On Mon, Aug 25, 2014 at 7:52 AM, KatrinH Heimann
>>> >>> <katrinheimann at gmail.com> wrote:
>>> >>> Dear Ana, dear all,
>>> >>> the layout you used does not correspond to our nets. I tried the
>>> >>> GSN-HydroCel-128.sfp and the GSN-HydroCel-129.sfp. Both don't
>>> >>> work. Please can anybody help?
>>> >>> Cheers
>>> >>> Katrin
>>> >>>
>>> >>>
>>> >>> 2014-08-24 5:40 GMT+02:00 Ana Laura Diez Martini
>>> >>> <diezmartini at gmail.com>:
>>> >>>
>>> >>> Try this one I use
>>> >>>
>>> >>>
>>> >>> On Sun, Aug 24, 2014 at 4:08 AM, KatrinH Heimann
>>> >>> <katrinheimann at gmail.com> wrote:
>>> >>> Dear all, my problems seem neverending. This time however i really
>>> >>> need help.
>>> >>> I implemented a pipeline for ERPs. All works now, trialdefinition,
>>> >>> preprocessing, channelreplacement, ica, componentrejection, final
>>> >>> artifactdetection, timelock of the single subject data. However,
>>> >>> when I wanna compute the grandaverage of the single subjects I get
>>> >>> the following error message:
>>> >>>
>>> >>> computing average of avg over 19 subjects
>>> >>> Warning: discarding electrode information because it cannot be
>>> >>> averaged
>>> >>> > In ft_timelockgrandaverage at 249
>>> >>> the call to "ft_timelockgrandaverage" took 0 seconds and required
>>> >>> the additional allocation of an estimated 3 MB
>>> >>> computing average of avg over 2 subjects
>>> >>> Warning: discarding electrode information because it cannot be
>>> >>> averaged
>>> >>> > In ft_timelockgrandaverage at 249
>>> >>> the call to "ft_timelockgrandaverage" took 0 seconds and required
>>> >>> the additional allocation of an estimated 0 MB
>>> >>> the call to "ft_prepare_layout" took 0 seconds and required the
>>> >>> additional allocation of an estimated 0 MB
>>> >>> the call to "ft_topoplotER" took 0 seconds and required the
>>> >>> additional allocation of an estimated 0 MB
>>> >>>
>>> >>> Furthermore in the plot of the significant clusters, the
>>> >>> channelnames are mixed up (do not correspond to my net)
>>> >>>
>>> >>>
>>> >>> I guess that there is a problem with the layout I use.
>>> >>> Here the code that I use
>>> >>>
>>> >>> %For generating the layout (also in the single subjects):
>>> >>> cfg = [];
>>> >>>
>>> >>> cfg.channel = obs_data.label;
>>> >>>
>>> >>> cfg.layout = 'GSN-HydroCel-129.sfp';
>>> >>>
>>> >>> cfg.feedback = 'yes';
>>> >>>
>>> >>> lay = ft_prepare_layout(cfg);
>>> >>>
>>> >>>
>>> >>> cfg_neighb = [];
>>> >>>
>>> >>> cfg_neighb.feedback = 'yes';
>>> >>>
>>> >>> cfg_neighb.method = 'triangulation';
>>> >>>
>>> >>> cfg_neighb.layout = lay;
>>> >>>
>>> >>> neighbours = ft_prepare_neighbours(cfg_neighb, obs_data);
>>> >>>
>>> >>>
>>> >>> obs_data.elec = ft_read_sens('GSN-HydroCel-129.sfp');
>>> >>>
>>> >>>
>>> >>>
>>> >>> %For computing the grand average
>>> >>>
>>> >>> cfg = [];
>>> >>>
>>> >>> cfg.channel = 'all';
>>> >>>
>>> >>> cfg.latency = 'all';
>>> >>>
>>> >>> cfg.parameter = 'avg';
>>> >>>
>>> >>> cfg.keepindividual = 'no'
>>> >>>
>>> >>> GA_90 = ft_timelockgrandaverage(cfg,all90{:});
>>> >>>
>>> >>> GA_180 = ft_timelockgrandaverage(cfg,all180{:});
>>> >>>
>>> >>> % "{:}" means to use data from all elements of the variable
>>> >>>
>>> >>>
>>> >>> For plotting the significant clusters
>>> >>>
>>> >>> cfg = [];
>>> >>>
>>> >>> cfg.style = 'blank';
>>> >>>
>>> >>> cfg.layout = lay;
>>> >>>
>>> >>> cfg.channellabels = 'yes';
>>> >>>
>>> >>> cfg.highlight = 'labels';
>>> >>>
>>> >>> cfg.highlightchannel = find(stat.mask);
>>> >>>
>>> >>> cfg.comment = 'no';
>>> >>>
>>> >>> figure; ft_topoplotER(cfg, GA_90)
>>> >>>
>>> >>> title('Nonparametric: significant with cluster multiple comparison
>>> >>> correction')
>>> >>>
>>> >>>
>>> >>>
>>> >>> Do you have ANY idea to this? I am really completely helpless....
>>> >>>
>>> >>> thanks and best
>>> >>>
>>> >>> Katrin
>>> >>>
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>>
>>> >>> _______________________________________________
>>> >>> fieldtrip mailing list
>>> >>> fieldtrip at donders.ru.nl
>>> >>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> >>
>> ----------------------------------------------------------------------------
>> ----
>>> >>
>>> >> Joseph Dien, PhD
>>> >> Research Associate
>>> >> Cognitive Neurology
>>> >> The Johns Hopkins University School of Medicine
>>> >>
>>> >> Lab E-mail: jdien1 at jhmi.edu
>>> >> Private E-mail: jdien07 at mac.com
>>> >> Office Phone: 410-614-3115
>>> >> Cell Phone: 202-297-8117
>>> >> Fax: 410-955-0188
>>> >> http://joedien.com
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >
>>> >
>> ----------------------------------------------------------------------------
>> ----
>>> >
>>> > Joseph Dien, PhD
>>> > Research Associate
>>> > Cognitive Neurology
>>> > The Johns Hopkins University School of Medicine
>>> >
>>> > Lab E-mail: jdien1 at jhmi.edu
>>> > Private E-mail: jdien07 at mac.com
>>> > Office Phone: 410-614-3115
>>> > Cell Phone: 202-297-8117
>>> > Fax: 410-955-0188
>>> > http://joedien.com
>>> >
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140908/81922
>> ad2/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 4
>>> > Date: Tue, 9 Sep 2014 06:37:13 +0000
>>> > From: "Caspar, Emilie" <e.caspar at ucl.ac.uk>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] ft_rejectvisual: removing trials marked as
>>> > bad
>>> > Message-ID: <3C365782-4B07-4EFE-A921-99489BDD5DA6 at live.ucl.ac.uk>
>>> > Content-Type: text/plain; charset="iso-8859-1"
>>> >
>>> > Hi Ashley,
>>> >
>>> > Maybe the mistake is you did not integrate in your script the
>>> > command to save the rejection. Normally, with the following command,
>>> > you will see in the Matlab Window that artifacts are correctly
>>> > rejected after the "quit" button.
>>> >
>>> > clean_data = ft_rejectvisual(cfg, interpoldata);
>>> > cfg.artfctdef.reject = 'complete';
>>> > cfg.artfctdef.feedback = 'yes';
>>> > cleandata = ft_rejectartifact(cfg,clean_data);
>>> >
>>> > Emilie
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > Le 3 sept. 2014 ? 11:58, Ashley Greene
>>> > <agreene24 at gmail.com<mailto:agreene24 at gmail.com>> a ?crit :
>>> >
>>> > Hello,
>>> >
>>> > I have used the rejectvisual function in attempt to remove bad
>>> > trials, but after marking them and pressing the quit button,
>>> > although the command window states that the selected trials have
>>> > been removed, there is no obvious change in the data; all of the
>>> > trials are still intact. Have I overlooked something?
>>> >
>>> > Thanks,
>>> >
>>> > Ashley
>>> > _______________________________________________
>>> > fieldtrip mailing list
>>> > fieldtrip at donders.ru.nl<mailto:fieldtrip at donders.ru.nl>
>>> > http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140909/4c2d0
>> 985/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 5
>>> > Date: Tue, 09 Sep 2014 14:16:20 +0200
>>> > From: Patricia Wollstadt <Patricia.Wollstadt at gmx.de>
>>> > To: fieldtrip at science.ru.nl
>>> > Subject: Re: [FieldTrip] TRENTOOL pipeline help
>>> > Message-ID: <540EEF94.9080601 at gmx.de>
>>> > Content-Type: text/plain; charset="windows-1252"
>>> >
>>> > Hello Max,
>>> >
>>> > I added a few comments to the questions regarding individual
>>> > parameters
>>> > below. To address the general problem of TRENTOOL telling you, that
>>> > there are not enough sample points in your data: From what I can see
>>> > in
>>> > your script, you probably don't have enough data points in each time
>>> > series to robustly estimate TE. You analyze 800 ms of data sampled
>>> > at
>>> > 300 Hz, which gives you 240 samples per time series. Can you maybe
>>> > avoid
>>> > downsampling to 300 Hz and downsample to 600 Hz instead? Or could
>>> > you
>>> > analyze a longer time window of interest?
>>> > Note that you also 'lose' data to embedding and the interaction
>>> > delay:
>>> > The first point that can be used for TE estimation is at max.
>>> > embedding
>>> > length + max. interaction delay in samples. For example: max.
>>> > embedding
>>> > length = dim * tau_factor * ACT = 10 * 0.4 * 5 = 20 samples plus the
>>> > max
>>> > interaction delay of 30 ms = 9 samples. In this example, you would
>>> > be
>>> > left with 240 - 29 samples for TE estimation per trial. There is
>>> > also
>>> > the possibility to estimate time resolved TE/TE for shorter time
>>> > windows
>>> > of interest (see section 4.4 in the manual); however, this method
>>> > requires the use of a GPU for TE estimation.
>>> >
>>> > I would further recommend to use the new pipeline for group
>>> > statistics
>>> > described in the manual in section 4.5 (the function
>>> > 'TEgroup_calculate'
>>> > is deprecated). The new pipeline allows you to reconstruct the
>>> > interaction delay and uses the following functions (see also
>>> > comments in
>>> > the script):
>>> >
>>> > TEgroup_prepare -> prepares all data sets (all subjects/all
>>> > conditions) for group analysis (this means finding common embedding
>>> > parameters such that estimates are not biased between groups)
>>> > InteractionDelayReconstruction_calculate -> estimates TE for
>>> > individual data sets and all assumed interaction delays u
>>> > InteractionDelayReconstruction_analyze -> reconstructs the
>>> > interaction delay by selecting the u that maximizes TE for each
>>> > channel
>>> > TEgroup_stats -> calculate group statistics using a permutation test
>>> >
>>> > I can send you an example script for group TE analysis using this
>>> > pipeline to get you started. I hope this helps you to get the group
>>> > analysis running. Just write again if you're having trouble setting
>>> > up
>>> > the pipeline or something is not clear about the parameters/my
>>> > comments.
>>> >
>>> > Best,
>>> > Patricia
>>> >
>>> >
>>> >
>>> >
>>> > On 09/04/2014 08:30 PM, Max Cantor wrote:
>>> >> Hi fieldtrippers,
>>> >>
>>> >> I know trentool is not produced by the Donders Institute, so I'm
>>> >> not
>>> >> 100% sure if it is appropriate to ask questions about it here, but
>>> >> to
>>> >> the best of my knowledge they do not have a mailing list and I saw
>>> >> a
>>> >> few trentool questions in the archives, so I'm going to assume it's
>>> >> ok...
>>> >>
>>> >> In any case, below is my current pipeline (slightly modified for
>>> >> comprehensibility):
>>> >>
>>> >> (notes in bold are comments/questions made in this email, not
>>> >> present
>>> >> in the pipeline. Sorry in advance for the long post! Any help would
>>> >> be
>>> >> greatly appreciated as I'm a bit over my head on this but I think
>>> >> I'm
>>> >> close!)
>>> >>
>>> >> *****
>>> >>
>>> >> % Prepare group TE data
>>> >>
>>> >> cfgP = [];
>>> >> cfgP.Path2TSTOOL = *TSTOOLPATH*
>>> >> cfgP.TEcalctype = 'VW_ds';
>>> >> cfgP.channel = {'ctfdip_LAC' 'ctfdip_RAC'};
>>> >>
>>> >> *I'm trying to find the transfer entropy between the left and right
>>> >> auditory cortices in my experiment. The input is virtual sensor
>>> >> data
>>> >> that was produced using SAM in fieldtrip on real MEG data. *
>>> >>
>>> >> % specify u to be scanned
>>> >>
>>> >> cfgP.predicttime_u = 30;
>>> >> cfgP.toi = [-0.4 0.4];
>>> >>
>>> >> *For clarification, the predicttime_u is in seconds but the toi is
>>> >> in
>>> >> milliseconds. If I understand correctly, the predicttime_u must fit
>>> >> within the toi, but beyond that are there any benefits to it being
>>> >> earlier or later?* PW: The predictiontime_u is in milliseconds and
>>> >> the
>>> >> toi is in seconds. The prediction time is the assumed interaction
>>> >> delay between your two sources and should fit within your toi. In
>>> >> general it is preferable to use the method for interaction delay
>>> >> reconstruction for TE estimation, because it allows you to
>>> >> reconstruct
>>> >> the actual delay between your source and target times series. A
>>> >> non-optimal u/interaction delay may cause an underestimation of TE,
>>> >> so
>>> >> it is recommended to use the pipeline for interaction delay
>>> >> reconstruction whenever estimating TE for unknown delays.
>>> >> If you use the methods for interaction delay reconstruction
>>> >> 'predicttime_u' is replaced by
>>> >> cfgTEP.predicttimemin_u % minimum u to be scanned
>>> >> cfgTEP.predicttimemax_u % maximum u to be scanned
>>> >> cfgTEP.predicttimestepsize % time steps between u to be scanned
>>> >> A large range for u values to be scanned increases computing time a
>>> >> lot, so it is best to limit the u range to values that are
>>> >> physiologically plausible.
>>> >>
>>> >> % ACT (Autocorrelation Time) estimation and constraints
>>> >>
>>> >> cfgP.maxlag = 150;
>>> >> cfgP.actthrvalue = 7.5;
>>> >> cfgP.minnrtrials = 5;
>>> >>
>>> >> *My understanding is maxlag should be 1/2 the sampling rate, so
>>> >> since
>>> >> the data are downsampled to 300hz, it should be 150. I know that
>>> >> the
>>> >> sample rate and filters are used to determine the actthrvalue, but
>>> >> I
>>> >> don't actually know the calculation. 7.5 was a rough guess just to
>>> >> test the pipeline. I'm also uncertain of what minnrtrials should
>>> >> be.*
>>> >> PW: You can set the actthrvalue based on the filtering you did
>>> >> prior
>>> >> to TE analysis. If you for example highpass filtered at 10 Hz, you
>>> >> shouldn't find an ACT higher than 30 samples, because you filtered
>>> >> out
>>> >> any components of the signal slower than 10 Hz/30 samples (given
>>> >> your
>>> >> sampling frequency of 300 Hz). So in this scenario the actthrvalue
>>> >> would be 30.
>>> >> A good value for cfgP.minnrtrials is 12 (a minimum number of trials
>>> >> is
>>> >> needed to realize the permutation test for estimated TE values).
>>> >>
>>> >> % Optimization
>>> >>
>>> >> cfgP.optimizemethod = 'ragwitz';
>>> >> cfgP.ragdim = 4:8;
>>> >> cfgP.ragtaurange = [0.2 0.4];
>>> >> cfgP.ragtausteps = 15;
>>> >> cfgP.repPred = 100;
>>> >> *
>>> >> *
>>> >> *I am completely at a loss for this. I've done some reading into
>>> >> transfer entropy, mutual information, etc., cited in trentool, but
>>> >> I'm
>>> >> yet to understand how exactly this optimization works and what the
>>> >> configuration should be, given my data and experimental
>>> >> intentions.*
>>> >> PW: The Ragwitz criterion tries to find optimal embedding
>>> >> parameters
>>> >> dim and tau for the data. To do that, the method iteratively takes
>>> >> all
>>> >> possible combinations of dim and tau values that are provided in
>>> >> cfgP.ragdim and cfgP.ragtaurange/.ragtausteps and tests how well
>>> >> these
>>> >> combinations embed the data. To test an embedding, the method
>>> >> builds
>>> >> the embedding vectors from the data; it then tests for each point
>>> >> how
>>> >> well the next point in time can be predicted from the reference
>>> >> point's nearest neighbours. So for each embedded point, the method
>>> >> searches for the nearest neighbours and calculates the average of
>>> >> those nearest neighbours. The difference between the
>>> >> averaged/predicted point and the actual next point is the error of
>>> >> the
>>> >> local predictor. The Ragwitz criterion will then return the
>>> >> parameter
>>> >> combination for which this error over all points is minimal.
>>> >> The parameters set the following: 'ragdim' are dimensions to be
>>> >> tested
>>> >> by the method (I would reccomend to start with 2:10), 'ragtaurange'
>>> >> together with 'ragtausteps' specifies the tau values to be tested
>>> >> (TRENTOOL will build a vector from 0.2 to 0.4 in 15 steps). Note,
>>> >> that
>>> >> the values here are factors that are later multiplied with the ACT
>>> >> to
>>> >> obtain the actual tau. 'repPred' is the number of points that will
>>> >> be
>>> >> used for the local prediction, i.e. the Ragwitz criterion will test
>>> >> the local prediction and calculate the error for the first 100
>>> >> points
>>> >> in your time series. The two parameters 'flagNei' ans 'sizeNei'
>>> >> below
>>> >> specify the type of neighbour search conducted by the Ragwitz
>>> >> criterion: 'flagNei' tells the method to either conduct a kNN or
>>> >> range
>>> >> search; 'sizeNei' specifies the number of neighbours or the radius
>>> >> to
>>> >> be searched by a range search.
>>> >>
>>> >>
>>> >> % Kernel-based TE estimation
>>> >>
>>> >> cfgP.flagNei = 'Mass';
>>> >> cfgP.sizeNei = 4; % Default
>>> >>
>>> >> cfgP.ensemblemethod = 'no';
>>> >> cfgP.outputpath = *OUTPUT PATH*;
>>> >>
>>> >> if ~exist(*Path for TEprepare data object*)
>>> >> load VSdat;
>>> >> TE_Wrd = {};
>>> >> for i = 1:nConds
>>> >> for j = 1:Nsub
>>> >> TE_Wrd{i}{j} = TEprepare(cfgP, VSdat{i}{j});
>>> >> end
>>> >> end
>>> >> clear VSdat;
>>> >> save('TE_Wrd', 'TE_Wrd');
>>> >> end
>>> >> *
>>> >> *
>>> >> *The configuration and virtual sensor data, organized in a 3 x 15
>>> >> cell
>>> >> of structures (condition by subject) are the input. The TEprepare
>>> >> substructure is added to each individual condition x subject .mat
>>> >> files' data structure which are stored on disk independently.*
>>> >>
>>> >> % Use object_to_mat_conversion.m to replace individual condition x
>>> >> subject virtual sensor data
>>> >> % .mat files with their TE_Wrd equivalent
>>> >> *
>>> >> *
>>> >> *I'm using a separate script to make some manipulations to the
>>> >> objects
>>> >> from disk; this will all eventually be integrated into the main
>>> >> pipeline*.*TRENTOOL seems to handle data output very differently
>>> >> from
>>> >> fieldtrip and I've had trouble thinking through the most logical
>>> >> way
>>> >> to handle the data so it's a bit haphazard right now.*
>>> >>
>>> >> load cond080sub01.mat
>>> >>
>>> >> cfgG = [];
>>> >> cfgG.dim = cond080sub01.TEprepare.optdim;
>>> >> cfgG.tau = cond080sub01.TEprepare.opttau;
>>> >>
>>> >> if isfield(cond080sub01, 'TEprepare')
>>> >> TEgroup_prepare(cfgG, fileCell);
>>> >> else
>>> >> error('Need to run TEprepare before TEgroup_prepare');
>>> >> end
>>> >> *
>>> >> *
>>> >> *For clarification, fileCell is a cell with the name of each
>>> >> condition
>>> >> x subject .mat file, which as I said before is collectively the
>>> >> same
>>> >> as the 3 x 15 VSdat structure (condition x subject).*
>>> >>
>>> >> % Replace .mat files with '_for_TEgroup_calculate' version in
>>> >> % object_to_mat_conversion.m
>>> >>
>>> >> % TE Group Calculate
>>> >>
>>> >> load cond080sub01.mat
>>> >> if isfield(cond080sub01, 'TEgroupprepare')
>>> >> for i = 1:length(fileCell)
>>> >> TEgroup_calculate(fileCell{i});
>>> >> end
>>> >> else
>>> >> error('Need to run TEgroup_prepare before TEgroup_calculate');
>>> >> end
>>> >> *
>>> >> *
>>> >> *At this step I get the following error:
>>> >>
>>> >> Error using transferentropy (line 337)
>>> >> \nTRENTOOL ERROR: not enough data points left after embedding
>>> >>
>>> >> Error in TEgroup_calculate (line 133)
>>> >> [TEresult] = transferentropy(cfg,data);*
>>> >>
>>> >> % TE Group Stats
>>> >>
>>> >> cfgGSTAT = [];
>>> >> cfgGSTAT.design(1,1:2*Nsub) = [ones(1,Nsub) 2*ones(1,Nsub)];
>>> >> cfgGSTAT.design(2,1:2*Nsub) = [1:Nsub 1:Nsub];
>>> >>
>>> >> cfgGSTAT.uvar = 1;
>>> >> cfgGSTAT.ivar = 2;
>>> >> cfgGSTAT.fileidout = 'test_groupstats';
>>> >>
>>> >> TEgroup_stats(cfgGSTAT, fileCell);
>>> >>
>>> >> *Given the error above, I am yet to get to this step, but it does
>>> >> not
>>> >> seem fundamentally different from normal fieldtrip stats.*
>>> >>
>>> >> *****
>>> >>
>>> >> In case my notes were not clear or you skipped to the bottom, *my
>>> >> primary concern is whether the error I'm getting in
>>> >> TEgroup_calculate
>>> >> is a pipeline issue* (I noticed the example pipeline in trentool,
>>> >> the
>>> >> manual, and published methods articles all seem to have slightly or
>>> >> significantly different pipeline compositions), *or if the error
>>> >> is*
>>> >> due to ACT, ragwitz optimization, or some other faulty
>>> >> parameterization *on my part due to a lack of understanding of how
>>> >> transfer entropy works on a more theoretical/mathematical level*.
>>> >> If
>>> >> the latter is the case, is there any relatively straightforward way
>>> >> to
>>> >> conceptualize this, or is this something where I'm just going to
>>> >> have
>>> >> to keep reading and rereading until it eventually makes sense? I've
>>> >> already done quite a bit of that and it hasn't pierced my thick
>>> >> skull
>>> >> yet but I'm sure it will eventually!
>>> >>
>>> >> Thank you so much,
>>> >>
>>> >> Max Cantor
>>> >>
>>> >>
>>> >> --
>>> >> Max Cantor
>>> >> Lab Manager
>>> >> Computational Neurolinguistics Lab
>>> >> University of Michigan
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >
>>> > --
>>> > ------------------------------------------------------------
>>> >
>>> > Patricia Wollstadt, PhD Student
>>> >
>>> > MEG Unit, Brain Imaging Center
>>> >
>>> > Goethe University, Frankfurt, Germany
>>> >
>>> > Heinrich Hoffmann Strasse 10, Haus 93 B
>>> >
>>> > D - 60528 Frankfurt am Main
>>> >
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140909/ce6b2
>> 97f/attachment-0001.html>
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 6
>>> > Date: Tue, 9 Sep 2014 15:21:20 +0200
>>> > From: Holger Krause <Holger.Krause at med.uni-duesseldorf.de>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: [FieldTrip] Latest FT version on ftp-server is from three
>>> > days ago
>>> > Message-ID:
>>> > <201409091521.22589.Holger.Krause at med.uni-duesseldorf.de>
>>> > Content-Type: text/plain; charset="us-ascii"
>>> >
>>> > Dear developers,
>>> >
>>> > Could you please check the process for creation/publication of
>>> > zip-files on
>>> > the FTP server? The latest file I can find there is
>>> > fieldtrip-20140906.zip.
>>> >
>>> > Thanks in advance,
>>> >
>>> > Holger
>>> >
>>> >
>>> > ------------------------------
>>> >
>>> > Message: 7
>>> > Date: Tue, 9 Sep 2014 09:19:55 -0400
>>> > From: Max Cantor <mcantor at umich.edu>
>>> > To: FieldTrip discussion list <fieldtrip at science.ru.nl>
>>> > Subject: Re: [FieldTrip] TRENTOOL pipeline help
>>> > Message-ID:
>>> > <CAFTjRaUXzwca7rR3sm8iPLLyUxqHO9kkm++=zAU4LUW=r7NRBw at mail.gmail.com>
>>> > Content-Type: text/plain; charset="utf-8"
>>> >
>>> > This is immensely helpful, thank you. I was very confused about why
>>> > some
>>> > versions of the pipeline I saw were using group calculate and others
>>> > were
>>> > using interaction delay reconstruction and what that meant, and I
>>> > think I
>>> > have a more clear idea of what the different steps of the pipeline
>>> > are
>>> > doing. There are still a few things I'm a bit confused about though
>>> > in
>>> > terms of the pipeline. For instance, whether or not I need to do
>>> > TEprepare
>>> > before group prepare, and if I need to do graph analysis (which I'm
>>> > not
>>> > sure I fully understand but also haven't looked deeply into) before
>>> > group
>>> > stats.
>>> >
>>> > If you don't mind me taking you up on your offer, I think seeing
>>> > your
>>> > example script might help clarify some of these issues.
>>> >
>>> > Thank you!
>>> >
>>> > On Tue, Sep 9, 2014 at 8:16 AM, Patricia Wollstadt <
>>> > Patricia.Wollstadt at gmx.de> wrote:
>>> >
>>> >> Hello Max,
>>> >>
>>> >> I added a few comments to the questions regarding individual
>>> >> parameters
>>> >> below. To address the general problem of TRENTOOL telling you, that
>>> >> there
>>> >> are not enough sample points in your data: From what I can see in
>>> >> your
>>> >> script, you probably don't have enough data points in each time
>>> >> series to
>>> >> robustly estimate TE. You analyze 800 ms of data sampled at 300 Hz,
>>> >> which
>>> >> gives you 240 samples per time series. Can you maybe avoid
>>> >> downsampling to
>>> >> 300 Hz and downsample to 600 Hz instead? Or could you analyze a
>>> >> longer time
>>> >> window of interest?
>>> >> Note that you also 'lose' data to embedding and the interaction
>>> >> delay: The
>>> >> first point that can be used for TE estimation is at max. embedding
>>> >> length
>>> >> + max. interaction delay in samples. For example: max. embedding
>>> >> length =
>>> >> dim * tau_factor * ACT = 10 * 0.4 * 5 = 20 samples plus the max
>>> >> interaction
>>> >> delay of 30 ms = 9 samples. In this example, you would be left with
>>> >> 240 -
>>> >> 29 samples for TE estimation per trial. There is also the
>>> >> possibility to
>>> >> estimate time resolved TE/TE for shorter time windows of interest
>>> >> (see
>>> >> section 4.4 in the manual); however, this method requires the use
>>> >> of a GPU
>>> >> for TE estimation.
>>> >>
>>> >> I would further recommend to use the new pipeline for group
>>> >> statistics
>>> >> described in the manual in section 4.5 (the function
>>> >> 'TEgroup_calculate' is
>>> >> deprecated). The new pipeline allows you to reconstruct the
>>> >> interaction
>>> >> delay and uses the following functions (see also comments in the
>>> >> script):
>>> >>
>>> >> TEgroup_prepare -> prepares all data sets (all subjects/all
>>> >> conditions)
>>> >> for group analysis (this means finding common embedding parameters
>>> >> such
>>> >> that estimates are not biased between groups)
>>> >> InteractionDelayReconstruction_calculate -> estimates TE for
>>> >> individual data sets and all assumed interaction delays u
>>> >> InteractionDelayReconstruction_analyze -> reconstructs the
>>> >> interaction delay by selecting the u that maximizes TE for each
>>> >> channel
>>> >> TEgroup_stats -> calculate group statistics using a permutation
>>> >> test
>>> >>
>>> >> I can send you an example script for group TE analysis using this
>>> >> pipeline
>>> >> to get you started. I hope this helps you to get the group analysis
>>> >> running. Just write again if you're having trouble setting up the
>>> >> pipeline
>>> >> or something is not clear about the parameters/my comments.
>>> >>
>>> >> Best,
>>> >> Patricia
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> On 09/04/2014 08:30 PM, Max Cantor wrote:
>>> >>
>>> >> Hi fieldtrippers,
>>> >>
>>> >> I know trentool is not produced by the Donders Institute, so I'm
>>> >> not 100%
>>> >> sure if it is appropriate to ask questions about it here, but to
>>> >> the best
>>> >> of my knowledge they do not have a mailing list and I saw a few
>>> >> trentool
>>> >> questions in the archives, so I'm going to assume it's ok...
>>> >>
>>> >> In any case, below is my current pipeline (slightly modified for
>>> >> comprehensibility):
>>> >>
>>> >> (notes in bold are comments/questions made in this email, not
>>> >> present in
>>> >> the pipeline. Sorry in advance for the long post! Any help would be
>>> >> greatly
>>> >> appreciated as I'm a bit over my head on this but I think I'm
>>> >> close!)
>>> >>
>>> >> *****
>>> >>
>>> >> % Prepare group TE data
>>> >>
>>> >> cfgP = [];
>>> >> cfgP.Path2TSTOOL = *TSTOOLPATH*
>>> >> cfgP.TEcalctype = 'VW_ds';
>>> >> cfgP.channel = {'ctfdip_LAC' 'ctfdip_RAC'};
>>> >>
>>> >> *I'm trying to find the transfer entropy between the left and right
>>> >> auditory cortices in my experiment. The input is virtual sensor
>>> >> data that
>>> >> was produced using SAM in fieldtrip on real MEG data. *
>>> >>
>>> >> % specify u to be scanned
>>> >>
>>> >> cfgP.predicttime_u = 30;
>>> >> cfgP.toi = [-0.4 0.4];
>>> >>
>>> >> *For clarification, the predicttime_u is in seconds but the toi
>>> >> is in
>>> >> milliseconds. If I understand correctly, the predicttime_u must fit
>>> >> within
>>> >> the toi, but beyond that are there any benefits to it being earlier
>>> >> or
>>> >> later?* PW: The predictiontime_u is in milliseconds and the toi is
>>> >> in
>>> >> seconds. The prediction time is the assumed interaction delay
>>> >> between your
>>> >> two sources and should fit within your toi. In general it is
>>> >> preferable to
>>> >> use the method for interaction delay reconstruction for TE
>>> >> estimation,
>>> >> because it allows you to reconstruct the actual delay between your
>>> >> source
>>> >> and target times series. A non-optimal u/interaction delay may
>>> >> cause an
>>> >> underestimation of TE, so it is recommended to use the pipeline for
>>> >> interaction delay reconstruction whenever estimating TE for unknown
>>> >> delays.
>>> >> If you use the methods for interaction delay reconstruction
>>> >> 'predicttime_u' is replaced by
>>> >> cfgTEP.predicttimemin_u % minimum u to be scanned
>>> >> cfgTEP.predicttimemax_u % maximum u to be scanned
>>> >> cfgTEP.predicttimestepsize % time steps between u to be scanned
>>> >> A large range for u values to be scanned increases computing time a
>>> >> lot,
>>> >> so it is best to limit the u range to values that are
>>> >> physiologically
>>> >> plausible.
>>> >>
>>> >>
>>> >> % ACT (Autocorrelation Time) estimation and constraints
>>> >>
>>> >> cfgP.maxlag = 150;
>>> >> cfgP.actthrvalue = 7.5;
>>> >> cfgP.minnrtrials = 5;
>>> >>
>>> >> *My understanding is maxlag should be 1/2 the sampling rate, so
>>> >> since
>>> >> the data are downsampled to 300hz, it should be 150. I know that
>>> >> the sample
>>> >> rate and filters are used to determine the actthrvalue, but I don't
>>> >> actually know the calculation. 7.5 was a rough guess just to test
>>> >> the
>>> >> pipeline. I'm also uncertain of what minnrtrials should be.* PW:
>>> >> You can
>>> >> set the actthrvalue based on the filtering you did prior to TE
>>> >> analysis. If
>>> >> you for example highpass filtered at 10 Hz, you shouldn't find an
>>> >> ACT
>>> >> higher than 30 samples, because you filtered out any components of
>>> >> the
>>> >> signal slower than 10 Hz/30 samples (given your sampling frequency
>>> >> of 300
>>> >> Hz). So in this scenario the actthrvalue would be 30.
>>> >> A good value for cfgP.minnrtrials is 12 (a minimum number of trials
>>> >> is
>>> >> needed to realize the permutation test for estimated TE values).
>>> >>
>>> >>
>>> >> % Optimization
>>> >>
>>> >> cfgP.optimizemethod = 'ragwitz';
>>> >> cfgP.ragdim = 4:8;
>>> >> cfgP.ragtaurange = [0.2 0.4];
>>> >> cfgP.ragtausteps = 15;
>>> >> cfgP.repPred = 100;
>>> >>
>>> >> *I am completely at a loss for this. I've done some reading into
>>> >> transfer entropy, mutual information, etc., cited in trentool, but
>>> >> I'm yet
>>> >> to understand how exactly this optimization works and what the
>>> >> configuration should be, given my data and experimental
>>> >> intentions.* PW:
>>> >> The Ragwitz criterion tries to find optimal embedding parameters
>>> >> dim and
>>> >> tau for the data. To do that, the method iteratively takes all
>>> >> possible
>>> >> combinations of dim and tau values that are provided in cfgP.ragdim
>>> >> and
>>> >> cfgP.ragtaurange/.ragtausteps and tests how well these combinations
>>> >> embed
>>> >> the data. To test an embedding, the method builds the embedding
>>> >> vectors
>>> >> from the data; it then tests for each point how well the next point
>>> >> in time
>>> >> can be predicted from the reference point's nearest neighbours. So
>>> >> for each
>>> >> embedded point, the method searches for the nearest neighbours and
>>> >> calculates the average of those nearest neighbours. The difference
>>> >> between
>>> >> the averaged/predicted point and the actual next point is the error
>>> >> of the
>>> >> local predictor. The Ragwitz criterion will then return the
>>> >> parameter
>>> >> combination for which this error over all points is minimal.
>>> >> The parameters set the following: 'ragdim' are dimensions to be
>>> >> tested by
>>> >> the method (I would reccomend to start with 2:10), 'ragtaurange'
>>> >> together
>>> >> with 'ragtausteps' specifies the tau values to be tested (TRENTOOL
>>> >> will
>>> >> build a vector from 0.2 to 0.4 in 15 steps). Note, that the values
>>> >> here are
>>> >> factors that are later multiplied with the ACT to obtain the actual
>>> >> tau.
>>> >> 'repPred' is the number of points that will be used for the local
>>> >> prediction, i.e. the Ragwitz criterion will test the local
>>> >> prediction and
>>> >> calculate the error for the first 100 points in your time series.
>>> >> The two
>>> >> parameters 'flagNei' ans 'sizeNei' below specify the type of
>>> >> neighbour
>>> >> search conducted by the Ragwitz criterion: 'flagNei' tells the
>>> >> method to
>>> >> either conduct a kNN or range search; 'sizeNei' specifies the
>>> >> number of
>>> >> neighbours or the radius to be searched by a range search.
>>> >>
>>> >>
>>> >> % Kernel-based TE estimation
>>> >>
>>> >> cfgP.flagNei = 'Mass';
>>> >> cfgP.sizeNei = 4; % Default
>>> >>
>>> >> cfgP.ensemblemethod = 'no';
>>> >> cfgP.outputpath = *OUTPUT PATH*;
>>> >>
>>> >> if ~exist(*Path for TEprepare data object*)
>>> >> load VSdat;
>>> >> TE_Wrd = {};
>>> >> for i = 1:nConds
>>> >> for j = 1:Nsub
>>> >> TE_Wrd{i}{j} = TEprepare(cfgP, VSdat{i}{j});
>>> >> end
>>> >> end
>>> >> clear VSdat;
>>> >> save('TE_Wrd', 'TE_Wrd');
>>> >> end
>>> >>
>>> >> *The configuration and virtual sensor data, organized in a 3 x 15
>>> >> cell
>>> >> of structures (condition by subject) are the input. The TEprepare
>>> >> substructure is added to each individual condition x subject .mat
>>> >> files'
>>> >> data structure which are stored on disk independently.*
>>> >>
>>> >> % Use object_to_mat_conversion.m to replace individual condition x
>>> >> subject
>>> >> virtual sensor data
>>> >> % .mat files with their TE_Wrd equivalent
>>> >>
>>> >> *I'm using a separate script to make some manipulations to the
>>> >> objects
>>> >> from disk; this will all eventually be integrated into the main
>>> >> pipeline*.*
>>> >> TRENTOOL seems to handle data output very differently from
>>> >> fieldtrip and
>>> >> I've had trouble thinking through the most logical way to handle
>>> >> the data
>>> >> so it's a bit haphazard right now.*
>>> >>
>>> >> load cond080sub01.mat
>>> >>
>>> >> cfgG = [];
>>> >> cfgG.dim = cond080sub01.TEprepare.optdim;
>>> >> cfgG.tau = cond080sub01.TEprepare.opttau;
>>> >>
>>> >> if isfield(cond080sub01, 'TEprepare')
>>> >> TEgroup_prepare(cfgG, fileCell);
>>> >> else
>>> >> error('Need to run TEprepare before TEgroup_prepare');
>>> >> end
>>> >>
>>> >> *For clarification, fileCell is a cell with the name of each
>>> >> condition x
>>> >> subject .mat file, which as I said before is collectively the same
>>> >> as the 3
>>> >> x 15 VSdat structure (condition x subject).*
>>> >>
>>> >> % Replace .mat files with '_for_TEgroup_calculate' version in
>>> >> % object_to_mat_conversion.m
>>> >>
>>> >> % TE Group Calculate
>>> >>
>>> >> load cond080sub01.mat
>>> >> if isfield(cond080sub01, 'TEgroupprepare')
>>> >> for i = 1:length(fileCell)
>>> >> TEgroup_calculate(fileCell{i});
>>> >> end
>>> >> else
>>> >> error('Need to run TEgroup_prepare before TEgroup_calculate');
>>> >> end
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> *At this step I get the following error: Error using
>>> >> transferentropy (line
>>> >> 337) \nTRENTOOL ERROR: not enough data points left after embedding
>>> >> Error in
>>> >> TEgroup_calculate (line 133) [TEresult] =
>>> >> transferentropy(cfg,data);*
>>> >>
>>> >> % TE Group Stats
>>> >>
>>> >> cfgGSTAT = [];
>>> >> cfgGSTAT.design(1,1:2*Nsub) = [ones(1,Nsub) 2*ones(1,Nsub)];
>>> >> cfgGSTAT.design(2,1:2*Nsub) = [1:Nsub 1:Nsub];
>>> >>
>>> >> cfgGSTAT.uvar = 1;
>>> >> cfgGSTAT.ivar = 2;
>>> >> cfgGSTAT.fileidout = 'test_groupstats';
>>> >>
>>> >> TEgroup_stats(cfgGSTAT, fileCell);
>>> >>
>>> >> *Given the error above, I am yet to get to this step, but it does
>>> >> not
>>> >> seem fundamentally different from normal fieldtrip stats.*
>>> >>
>>> >> *****
>>> >>
>>> >> In case my notes were not clear or you skipped to the bottom, *my
>>> >> primary concern is whether the error I'm getting in
>>> >> TEgroup_calculate is a
>>> >> pipeline issue* (I noticed the example pipeline in trentool, the
>>> >> manual,
>>> >> and published methods articles all seem to have slightly or
>>> >> significantly
>>> >> different pipeline compositions), *or if the error is* due to ACT,
>>> >> ragwitz optimization, or some other faulty parameterization *on my
>>> >> part
>>> >> due to a lack of understanding of how transfer entropy works on a
>>> >> more
>>> >> theoretical/mathematical level*. If the latter is the case, is
>>> >> there any
>>> >> relatively straightforward way to conceptualize this, or is this
>>> >> something
>>> >> where I'm just going to have to keep reading and rereading until it
>>> >> eventually makes sense? I've already done quite a bit of that and
>>> >> it hasn't
>>> >> pierced my thick skull yet but I'm sure it will eventually!
>>> >>
>>> >> Thank you so much,
>>> >>
>>> >> Max Cantor
>>> >>
>>> >>
>>> >> --
>>> >> Max Cantor
>>> >> Lab Manager
>>> >> Computational Neurolinguistics Lab
>>> >> University of Michigan
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing
>>> >>
>> listfieldtrip at donders.ru.nlhttp://mailman.science.ru.nl/mailman/listinfo/fie
>> ldtrip
>>> >>
>>> >>
>>> >> --
>>> >> ------------------------------------------------------------
>>> >>
>>> >> Patricia Wollstadt, PhD Student
>>> >>
>>> >> MEG Unit, Brain Imaging Center Goethe University, Frankfurt,
>>> >> Germany
>>> >>
>>> >> Heinrich Hoffmann Strasse 10, Haus 93 B D - 60528 Frankfurt am
>>> >> Main
>>> >>
>>> >> _______________________________________________
>>> >> fieldtrip mailing list
>>> >> fieldtrip at donders.ru.nl
>>> >> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >>
>>> >
>>> >
>>> >
>>> > --
>>> > Max Cantor
>>> > Lab Manager
>>> > Computational Neurolinguistics Lab
>>> > University of Michigan
>>> > -------------- next part --------------
>>> > An HTML attachment was scrubbed...
>>> > URL:
>>> >
>> <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140909/29e18
>> 024/attachment.html>
>>> >
>>> > ------------------------------
>>> >
>>> > _______________________________________________
>>> > fieldtrip mailing list
>>> > fieldtrip at donders.ru.nl
>>> > http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>> >
>>> > End of fieldtrip Digest, Vol 46, Issue 3
>>> > ****************************************
>>> >
>>>
>>>
>>>
>>> Barbara Schorr, MSc
>>> Clinical and Biological Psychology
>>> University of Ulm
>>> Albert-Einstein-Allee 47
>>> 89069 Ulm
>>>
>>>
>>>
>>> _______________________________________________
>>> fieldtrip mailing list
>>> fieldtrip at donders.ru.nl
>>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>
>> --
>> Jim Herring, MSc.
>> Neuronal Oscillations Group
>> Centre for Cognitive Neuroimaging
>> Donders Institute for Brain, Cognition and Behaviour
>> Radboud University Nijmegen
>> _______________________________________________
>> fieldtrip mailing list
>> fieldtrip at donders.ru.nl
>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>
>>
>>
>> ------------------------------
>>
>> _______________________________________________
>> fieldtrip mailing list
>> fieldtrip at donders.ru.nl
>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>
>> End of fieldtrip Digest, Vol 46, Issue 5
>> ****************************************
>>
>
>
>
> Barbara Schorr, MSc
> Clinical and Biological Psychology
> University of Ulm
> Albert-Einstein-Allee 47
> 89069 Ulm
>
>
>
>
>
> ------------------------------
>
> _______________________________________________
> fieldtrip mailing list
> fieldtrip at donders.ru.nl
> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>
> End of fieldtrip Digest, Vol 46, Issue 6
> ****************************************
>
Barbara Schorr, MSc
Clinical and Biological Psychology
University of Ulm
Albert-Einstein-Allee 47
89069 Ulm
More information about the fieldtrip
mailing list