[FieldTrip] Unsupported data format

Nakyung Lee rleese12 at berkeley.edu
Fri Jul 15 19:33:35 CEST 2016


Hi Arjen,

Yes, that is exactly the structure of 'signal_raw' I'm using.
I tried your code (without running 'ft_definetrial' beforehand) and here's
the log:

>> cfg = [];
>> cfg.demean = 'yes';
>> data = signal_raw

data =

      label: {176x1 cell}
       time: {[1x721186 double]}
      trial: {[176x721186 double]}
    fsample: 1000

>> data2 = ft_preprocessing(cfg, data);
Warning: the data does not contain a trial definition
> In ft_warning (line 184)
  In fixsampleinfo (line 66)
  In ft_datatype_raw (line 175)
  In ft_checkdata (line 219)
  In ft_preprocessing (line 274)
Warning: reconstructing sampleinfo by assuming that the trials are
consecutive segments of a continuous recording
> In ft_warning (line 184)
  In fixsampleinfo (line 79)
  In ft_datatype_raw (line 175)
  In ft_checkdata (line 219)
  In ft_preprocessing (line 274)
Error using cell/ismember (line 34)
Input A of class cell and input B of class cell must be cell arrays of
strings, unless one is a string.

Error in ft_senstype (line 303)
    if     (mean(ismember(ft_senslabel('ant128'),         sens.label)) >
0.8)

Error in ft_channelselection (line 83)
  senstype = ft_senstype(datachannel);

Error in ft_selectdata>getselection_chan (line 649)
  selchannel = ft_channelselection(cfg.channel, varargin{k}.label);

Error in ft_selectdata (line 279)
if haschan,    [selchan,    cfg] = getselection_chan   (cfg, varargin{:},
cfg.select); end

Error in ft_preprocessing (line 317)
  data   = ft_selectdata(tmpcfg, data);

This data is not segmented yet so there's only one trial (and hence
time: {[1x721186
double]} and trial: {[176x721186 double]}) with 'Ntime' equal to '721186'.
There were warning signs but seems like those are ignore-able ones.
Again, let me know if you need more information and thank you.

Best,
Rachel

On Fri, Jul 15, 2016 at 10:01 AM, Arjen Stolk <a.stolk8 at gmail.com> wrote:

> Hi Rachel,
>
> Given that you already have the data imported into matlab and organized
> into trials, try creating a structure 'data' with the following fields
> (i.e. data.label, data.time, data.trial) and the following dimensions:
>
> label: {151x1 cell}      the channel labels (e.g. 'MRC13')
> time: {1x266 cell}      the timeaxis [1*Ntime double] per trial
> trial: {1x266 cell}      the numeric data [151*Ntime double] per trial
>
> Then, for a proof of principle, try:
>
> cfg = [];
> cfg.demean = 'yes';
> data2 = ft_preprocessing(cfg, data);
>
> Let us know if this worked for you.
> Arjen
>
>
> 2016-07-15 9:51 GMT-07:00 Nakyung Lee <rleese12 at berkeley.edu>:
>
>> Hi Jan-Mathijs,
>>
>> Thanks for your advice.
>> Yes, I used 'ft_=definetrial' to segment the data.
>> My data is in the fieldtrip style data format not because it's been
>> segmented and preprocessed through fieldtrip but because our original
>> dataformat is unsupported by fieldtrip (.Tbk, .Tdx, .tev, .tsq to be exact).
>> So my coworker transformed those data into a .mat file and I transformed
>> into a fieldtrip style raw data but it still needs some segmenting and some
>> other preprocessing done on it (for example high-gamma filtering).
>> But if 'ft_preprocessing' is only useable when reading proprietary data
>> from disk, there's just no way we can preprocess the above data using
>> fieldtrip?
>>
>> Thank you,
>> Rachel
>>
>> On Fri, Jul 15, 2016 at 1:10 AM, Schoffelen, J.M. (Jan Mathijs) <
>> jan.schoffelen at donders.ru.nl> wrote:
>>
>>> Hi Rachel,
>>>
>>> Once your data is represented in a fieldtrip-style structure, there’s no
>>> need anymore to call ft_definetrial with a specified named dataset in the
>>> cfg.
>>>
>>> If you want to segment your data, you may still want to call
>>> ft_definetrial to generate a so-called ‘trl’ matrix, and subsequently use
>>> ft_redefinetrial to re-segment, i.e.:
>>>
>>> load(’signal_raw.mat’); % I assume that this files contains the
>>> fieldtrip-style data structure
>>>
>>> cfg = [];
>>> cfg.trl = trl;
>>> data_epoched = ft_redefinetrial(cfg, data);
>>>
>>> So, note that ft_preprocessing shouldn’t be called, this is onlyl
>>> useable when reading proprietary data from disk.
>>>
>>> It seems that you don’t need the cfg.dataset argument to begin with, and
>>> if you manage to titrate your ft_trialfun_test such that it converts the
>>> timestamps you provide it with into the correct trl-matrix, I don’t see a
>>> reason why it shouldn’t work.
>>>
>>> Best,
>>> Jan-Mathijs
>>>
>>>
>>> On 15 Jul 2016, at 08:49, Nakyung Lee <rleese12 at berkeley.edu> wrote:
>>>
>>> Hi Arjen,
>>>
>>> Thank you for your reply.
>>> Your email got forwarded successfully.
>>>
>>> So currently I tried using 'ft_definetrial' and 'ft_preprocessing'.
>>> 'ft_definetrial' returns an error when used with 'ft_trialfun' set to
>>> default.
>>> Below is the code I used (and 'signal_raw.mat' is a fieldtrip raw data
>>> and it has all three fields you mentioned).
>>>
>>> cfg.dataset = 'signal_raw.mat';
>>> cfg.trialdef.event = subj_globals.buttonpress_times;
>>> cfg = ft_definetrial(cfg);
>>>
>>> So I simply call ft_definetrial with minimal configuration and here's
>>> the error I got:
>>>
>>> Error using ft_read_header (line 2194)
>>> unsupported header format "matlab"
>>>
>>> Error in ft_trialfun_general (line 78)
>>> hdr = ft_read_header(cfg.headerfile, 'headerformat', cfg.headerformat);
>>>
>>> Error in ft_definetrial (line 177)
>>>     [trl, event] = feval(cfg.trialfun, cfg);
>>>
>>> Error in trialdef_alsotest (line 12)
>>> cfg = ft_definetrial(cfg);
>>>
>>> I circumvented this issue by using my own trialfun ('ft_trialfun_test'
>>> in the code).
>>> We already have all the necessary timestamps so I could build a very
>>> simple one.
>>> Here's a new code (I ran the code with minimal cfg for
>>> 'ft_preprocessing' to isolate the problem):
>>>
>>> cfg.dataset = 'signal_raw.mat';
>>> cfg.trialfun = 'ft_trialfun_test';
>>> cfg.trialdef.event = subj_globals.buttonpress_times;
>>>
>>> cfg = ft_definetrial(cfg);
>>>
>>> cfg.continuous = 'yes';
>>> buttonpress_hg = ft_preprocessing(cfg);
>>>
>>> And here's the error I got:
>>>
>>> Error using ft_read_header (line 2194)
>>> unsupported header format "matlab"
>>>
>>> Error in ft_preprocessing (line 397)
>>>   hdr = ft_read_header(cfg.headerfile, 'headerformat', cfg.headerformat,
>>> 'coordsys', cfg.coordsys, 'coilaccuracy',
>>>   cfg.coilaccuracy);
>>>
>>> Error in test_trialdef (line 18)
>>> buttonpress_hg = ft_preprocessing(cfg);
>>>
>>> So both error come from 'ft_read_header'.
>>> I've been looking at the code but it seemed quite hard to debug as
>>> 'ft_read_header' uses a lower level function that directly reads from the
>>> file (hence it seemed like a simple fix like passing in a fake header
>>> wouldn't work).
>>> Am I doing something wrong here?
>>>
>>> Again, thank you for your reply and let me know if you need more
>>> information.
>>>
>>> Best,
>>> Rachel
>>>
>>> On Thu, Jul 14, 2016 at 12:10 AM, Arjen Stolk <a.stolk8 at gmail.com>
>>> wrote:
>>>
>>>> Hi Rachel,
>>>>
>>>> What is the error you're receiving, and how are you calling
>>>> ft_preprocessing?
>>>>
>>>> If the data is in raw format (incl a trial, time and label field), it
>>>> should theoretically be possible to use ft_preprocessing on it, eg;
>>>> cfg = []
>>>> cfg ..
>>>> data = ft_preprocessing(cfg, raw)
>>>>
>>>> where raw is your data as described above.
>>>>
>>>> Best,
>>>> Arjen
>>>>
>>>> > On Jul 13, 2016, at 11:50 PM, Nakyung Lee <rleese12 at berkeley.edu>
>>>> wrote:
>>>> >
>>>> > Dear FieldTrip community,
>>>> >
>>>> > My name is Rachel Lee and I'm a research assistant in Prof. Ming
>>>> Hsu's lab in UC Berkeley.
>>>> >
>>>> > We currently have a .Tbk file, a .Tdx file, .tev file, .tsq file to
>>>> preprocess and analyze but it seems like those data formats are not yet
>>>> supported by FieldTrip.
>>>> > So, instead of using those raw data files, we've been trying to find
>>>> a workaround by transforming them into a .mat file (and casting the .mat
>>>> file into a raw datatype in FieldTrip by manually assigning fields to it).
>>>> > This hasn't been so successful; we've been unable to call
>>>> ft_preprocessing because of the lack of a proper header format (which is
>>>> needed in ft_read_header, one of the lower level functions that
>>>> ft_preprocessing calls).
>>>> > I've been looking at the codes but been unable to come up with a
>>>> solution.
>>>> >
>>>> > Does anyone have a similar experience?
>>>> > Is there any way to circumvent this issue?
>>>> > Any type of help would be appreciated.
>>>> >
>>>> > Thank you,
>>>> > Rachel Lee
>>>> > _______________________________________________
>>>> > fieldtrip mailing list
>>>> > fieldtrip at donders.ru.nl
>>>> > https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>>>
>>>> _______________________________________________
>>>> fieldtrip mailing list
>>>> fieldtrip at donders.ru.nl
>>>> https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>>>
>>>
>>> _______________________________________________
>>> fieldtrip mailing list
>>> fieldtrip at donders.ru.nl
>>> https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>>
>>>
>>>
>>> _______________________________________________
>>> fieldtrip mailing list
>>> fieldtrip at donders.ru.nl
>>> https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>>
>>
>>
>> _______________________________________________
>> fieldtrip mailing list
>> fieldtrip at donders.ru.nl
>> https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>
>
>
> _______________________________________________
> fieldtrip mailing list
> fieldtrip at donders.ru.nl
> https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20160715/3b381564/attachment.html>


More information about the fieldtrip mailing list