[FieldTrip] Reading data and trigger events from Neuromag fif dataset splitted into 2 files

Peter Goodin pgoodin at swin.edu.au
Sat Nov 2 07:15:27 CET 2013


Hi Neils,

I use the ft_preprocessing function to load  both of my fif files into memory, then use the horzcat command to concatenate the matrices together. From there I create my trialdefs and use ft_redefinetrial to create the condition epochs.

I haven't had a problem with dropped triggers / incorrect trial lengths etc.

Please find the code I use below (and excuse any clunkiness):

As for your second question re: cfg.detectflank = 'up', the ft_read_event function is the one you want to look at. If your system is anything like a typical neuromag, an event can be characterised by both the up and down edges of your digital trigger channel. By specifying cfg.detectflank = 'up' in the read_even function, it will search for jumps in the channel where samples change from 0 to > 0 and classify that as an event, ignoring the down edge.

Hope the above (and below) helps and happy MEGing,

Peter.


%%
%Read data into matlab

cfg = [];
cfg.dataset = megdata1; %first fif file
cfg.channel = 'MEG';
d1 = ft_preprocessing(cfg);

cfg = [];
cfg.dataset = megdata2; %second fif file
cfg.channel = 'MEG';
d2 = ft_preprocessing(cfg);

%%
%concatenate data

dfull = d1;
dfull.trial{1,1} = zeros(306,length(d1.trial{1,1}) + length(d2.trial{1,1})); NOTE: The 306 refers to channels (MEG only). If you have more channels (eg. EOG, ECG) change accordingly.
dfull.trial{1,1} = horzcat(d1.trial{1,1}, d2.trial{1,1});
dfull.sampleinfo = [1 length(dfull.trial{1,1})];

for i = 2:length(dfull.time{1,1}); NOTE: Loop assumes data has yet to be downsampled and is at the base SR of 1000Hz.
dfull.time{1,1}(1,i) = (i - 1)*.001; %Change .001 to match SR.
i = i + 1;
end

__________________________
Peter Goodin,
BSc (Hons), Ph.D Candidate.

Brain and Psychological Sciences Research Centre (BPsych)
Swinburne University,
Hawthorn, Vic, 3122

Monash Alfred Psychiatry Research Centre (MAPrc)
Level 4, 607 St Kilda Road,
Melbourne 3004
________________________________
From: fieldtrip-bounces at science.ru.nl [fieldtrip-bounces at science.ru.nl] on behalf of Niels Trusbak Haumann [aestnth at hum.au.dk]
Sent: Friday, 1 November 2013 3:16 AM
To: fieldtrip at science.ru.nl
Subject: [FieldTrip] Reading data and trigger events from Neuromag fif dataset splitted into 2 files

Dear FieldTrip community.

Is it possible to read the data and trial events from a single continuous Neuromag fif dataset, which was automatically split into two separate fif files during recording, because it exceeeded the standard 2 GB file size limitation?

The second of the two splitted fif files contains relevant information showing that the second file continues at the time in seconds at which the first file ended. However, if the two fif files are read separately into Field Trip format this information seems to be lost.
FieldTrip seems to support reading in CTF datasets, which have been split into more files due to the 2 GB file size limitation, but I don't know whether there is a method for handling this problem with Neuromag fif data.
( http://fieldtrip.fcdonders.nl/getting_started/ctf?s[]=ctf )

I presume that it is a general problem that Neuromag fif datasets with 306 channel data sampled at 1 kHz 32 bit floats are splitted into more files, since only ca. 16-18 minutes raw data can be recorded before it is automatically splitted into two files.
The large file size is not a problem after applying MaxFilter procedures to remove high frequency cHPI signals..., etc., and thereafter downsampling e.g. to 16 bit integers sampled at 250 Hz. I see from a previous discussion in another forum that it is not possible to merge (or append) the splitted files with the MaxFilter software.

When reading triggers from splitted fif files there is usually one trial, which starts in the end of the first file and ends in the start of the second file, which cannot be correctly recognized, if the files are treated separately. This is however just a minor problem of loosing a single trial.

I have a few wrong detections, probably because a few trials are both defined by up-going signals and down-going signals. Would ft_preprocessing (and the sub-routines that it calls) take this into consideration, if you e.g. specificy cfg.detectflank = 'up' ?

I'm looking forward to hear any comments, suggestions or solutions.

Greetings
Niels.

Niels Trusbak Haumann
M.A. / PhD student
Department of Aesthetic Studies / Center of Functionally Integrative Neuroscience
Aarhus University / Aarhus University Hospital
Denmark
E-mail: aestnth at hum.au.dk<mailto:aestnth at hum.au.dk>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20131102/b4f20cf6/attachment-0001.html>


More information about the fieldtrip mailing list