[Eeglablist] EEGlab function to trim datasets

James Jones-Rounds jj324 at cornell.edu
Thu Feb 13 13:37:24 PST 2014


Here is some code I have used to trim data away from datasets that are
substantially longer than the actual periods of interest. The code
basically looks for inter-trial intervals longer than a few seconds (you
can adjust that of course), and then takes those time points at either end
of a long "event-less" spell as the time-points to feed into pop_select for
eliminating.

%%% Here we will identify all the segments of the recording
%%% that are in between event blocks, and we'll delete those segments from
the
%%% continuous dataset.
            indices_in_datapoints_to_delete = [];
            time_thresh_between_events_in_sec = 5;
            time_thresh_between_events_in_pts =
time_thresh_between_events_in_sec * EEG.srate;

            for event_index =  1:length(EEG.event)

                prev_event_latency_in_pts = [];
                this_event_latency_in_pts = [];
                next_event_latency_in_pts = [];

                if event_index == 1

                    prev_event_latency_in_pts =
EEG.event(event_index).latency;
                    this_event_latency_in_pts =
EEG.event(event_index).latency;
                    next_event_latency_in_pts =
EEG.event(event_index+1).latency;

                    indices_in_datapoints_to_delete =
                                      [indices_in_datapoints_to_delete;
1

((EEG.event(event_index).latency)-(2*EEG.srate))];

                elseif event_index == length(EEG.event)


                    this_event_latency_in_pts =
EEG.event(event_index).latency;

                    indices_in_datapoints_to_delete =
                         [indices_in_datapoints_to_delete;
this_event_latency_in_pts
                         (EEG.xmax*EEG.srate)];

                else

                    prev_event_latency_in_pts = EEG.event(event_index -
1).latency;
                    this_event_latency_in_pts =
EEG.event(event_index).latency;
                    next_event_latency_in_pts =
EEG.event(event_index+1).latency;

                end

                prev_inter_trial_latency = this_event_latency_in_pts -
                                         prev_event_latency_in_pts;

                next_inter_trial_latency = next_event_latency_in_pts -
                                          this_event_latency_in_pts;

                if next_inter_trial_latency >
time_thresh_between_events_in_pts

                    indices_in_datapoints_to_delete =
                             [indices_in_datapoints_to_delete;
(this_event_latency_in_pts
                          + (2*EEG.srate)) (next_event_latency_in_pts -
(2*EEG.srate))];


                elseif  prev_inter_trial_latency >
time_thresh_between_events_in_pts

                    indices_in_datapoints_to_delete =
                          [indices_in_datapoints_to_delete;
(prev_event_latency_in_pts
                          + (2*EEG.srate)) (this_event_latency_in_pts -
2*EEG.srate)];

                end

            end %%% END for event_index loop

            EEG = pop_select(EEG, 'nopoint',
indices_in_datapoints_to_delete);

            EEG.comments = pop_comments(EEG.comments, '', 'Identified the
periods of time in between runs (i.e. blocks of trials) and deleted
those.', 1);

Hope that helps. Also "Out of Memory" errors can sometimes be solved by
increasing your MATLAB Java Heap Memory in the MATLAB > Preferences >
General section.

Good luck,

James

On Thu, Feb 13, 2014 at 12:25 PM, <eeglablist-request at sccn.ucsd.edu> wrote:

> Send eeglablist mailing list submissions to
>         eeglablist at sccn.ucsd.edu
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         http://sccn.ucsd.edu/mailman/listinfo/eeglablist
> or, via email, send a message with subject or body 'help' to
>         eeglablist-request at sccn.ucsd.edu
>
> You can reach the person managing the list at
>         eeglablist-owner at sccn.ucsd.edu
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of eeglablist digest..."
>
> Today's Topics:
>
>    1. EEGlab function to trim datasets (Brent A. Field)
>    2. UK EEGLAB workshop September 2015 (Elizabeth Milne)
>    3. Re: EEGlab function to trim datasets (Tarik S Bel-Bahar)
>    4. Why does GUI not update the "filename" field after I      save a
>       new dataset? (James Jones-Rounds)
>    5. Re: How to "difference plot" of coherences from two different
>       datasets or conditions in SIFT and/or EEGLAB (James Jones-Rounds)
>
>
> ---------- Forwarded message ----------
> From: "Brent A. Field" <bfield at princeton.edu>
> To: "eeglablist at sccn.ucsd.edu" <eeglablist at sccn.ucsd.edu>
> Cc:
> Date: Wed, 12 Feb 2014 22:26:10 +0000
> Subject: [Eeglablist] EEGlab function to trim datasets
>
> I running a computationally intensive analysis on a high-end cluster, but
> have been confounded because I periodically hit a Matlab Out of Memory
> error. The input data has a high sampling rate, has a lot of channels, and
> is collected over a long period. These can be simplified at later stages,
> but the first step requires inputting roughly a 4 GB continuous data file,
> with memory requirement far beyond that to actually run the analysis. I
> won't go into it, but there is a reason why the data needs processed as one
> block.
>
>
>
> There are other tricks I can try, but one obviously one is just to slim
> down the input. And fortunately there is some fat I can trim out of input
> datasets. But it seems that EEGlab deals with this by offering the option
> to mark data in continuous files as irrelevant, not by making a new copy of
> the dataset which just contains the data of interest. Is this correct?
>
>
>
> Obviously I can write my own function to remove irrelevant sections from
> the dataset, but I just wanted to check that there wasn't already some
> function out there first that chopped data out of EEG datasets.
>
>
>
> Thanks for any thoughts on this matter!
>
>
>
> Brent Field
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://sccn.ucsd.edu/pipermail/eeglablist/attachments/20140213/7d2328c6/attachment.html 


More information about the eeglablist mailing list