[FieldTrip] Where to add a trialfun?

Ana Laura Diez Martini diezmartini at gmail.com
Tue Sep 30 22:27:25 CEST 2014


For a more simple check, when I try to read the events without the trialfun
( so it uses  ft_trialfun_general  by default) I get the original event
values:

 >> cfg = [];
>> cfg.dataset = '27CW1.RAW';
>> cfg.trialdef.eventtype  = '?';
>> cfg=ft_definetrial(cfg);

Warning: no trialfun was specified, using ft_trialfun_general
> In ft_definetrial at 135
evaluating trialfunction 'ft_trialfun_general'
reading the events from '27CW1.RAW'
the following events were found in the datafile
event type: 'trigger' with event values: 'DIN1' 'DIN2' 'DIN4' 'DIN8'
no trials have been defined yet, see FT_DEFINETRIAL for further help
found 750 events
created 0 trials
the call to "ft_definetrial" took 4 seconds

Then I try to use the trialfun, I get the same error

>> cfg = [];
>> cfg.dataset = '27CW1.RAW';
>> cfg.trialfun   = 'trialfun_bit2dec';
>> cfg.trialdef.eventtype  = '?';
>> cfg=ft_definetrial(cfg);
evaluating trialfunction 'trialfun_bit2dec'

Attempted to access trl(:,1); index out of bounds because size(trl)=[0,0].

Error in trialfun_bit2dec (line 66)
idx = any(diff(trl(:,1),1,1),2);

Error in ft_definetrial (line 169)
    trl   = feval(cfg.trialfun, cfg);

So there is something the trialfun_bit2dec does that events cannot be read
anymore.


On Mon, Sep 29, 2014 at 9:01 PM, Arjen Stolk <a.stolk8 at gmail.com> wrote:

> Hi Ana Laura,
>
> Your 'trl' is empty, which it shouldn't be. So anytime you try to index an
> element in it, it will throw an error.
>
> Can you check what 'event.values' you find in your dataset? And compare
> those with any of the ones falling under the switch case statement? One way
> to do this, is to put a debug marker (red dot) at the 'end' of the first
> for-loop (judging from the wiki). Then check the value of event(i).value,
> and click the continue button to move on to the next. An alternative way is
> to put a debug marker after event = ft_read_event and to instantly check
> all values of event with "[event(:).value]".
>
> Goodluck,
> Arjen
>
> 2014-09-30 6:20 GMT+02:00 Ana Laura Diez Martini <diezmartini at gmail.com>:
>
>> This is my attempt of adapting the code for the new Fieldtrip
>>
>>  % TRIAL DEFINITION
>>
>>     cfg=[];
>>     cfg.dataset = 'myfile';
>>
>>     hdr = ft_read_header( 'myfile');
>>     dat = ft_read_data('myfile');
>>     cfg.trialfun                = 'trialfun_bit2dec';
>>     cfg.trialdef.eventtype    = 'STATUS';
>>     cfg.trialdef.eventvalue   = cgrmrk; % stimulus triggers
>>     cfg.trialdef.prestim      = 0.2;
>>     cfg.trialdef.poststim     = 1;
>>
>>     cfg.reref         = 'yes';
>>     cfg.refchannel    = ['all'];
>>     cfg = ft_definetrial(cfg);
>>
>> again the error is:
>>
>> Attempted to access trl(:,1); index out of bounds because size(trl)=[0,0].
>>
>> Error in trialfun_bit2dec (line 66)
>> idx = any(diff(trl(:,1),1,1),2);
>>
>> Error in ft_definetrial (line 169)
>>     trl   = feval(cfg.trialfun, cfg);
>>
>> Error in process_ERP_1_fieldtrip (line 106)
>>     cfg = ft_definetrial(cfg);
>>
>>
>>
>> On Mon, Sep 29, 2014 at 12:11 PM, Ana Laura Diez Martini <
>> diezmartini at gmail.com> wrote:
>>
>>> Dear Arjen and Nietzsche,
>>>
>>> I tried debugging with dbstop if error and cfg.debug = 'saveonerror'
>>> and matlab points to:
>>>
>>> % discard the repeated values
>>> idx = any(diff(trl(:,1),1,1),2);
>>> trl = trl(idx,:);
>>>
>>> It does seem it is not reading the events. When I read them with the raw
>>> data, they seem to be there, with the DIN prefix. Any idea?
>>>
>>> On Mon, Sep 29, 2014 at 8:57 AM, Arjen Stolk <a.stolk8 at gmail.com> wrote:
>>>
>>>> Hey Ana Laura,
>>>>
>>>> Seems from the error message you're getting
>>>>
>>>> "Attempted to access trl(:,1); index out of bounds because
>>>> size(trl)=[0,0]."
>>>>
>>>> that none of the triggers were found in your event data. You might
>>>> wanna check why this is happening, by debugging 'trialfun_bit2dec' on your
>>>> input.
>>>>
>>>> Best,
>>>> Arjen
>>>>
>>>>
>>>>
>>>> 2014-09-29 19:00 GMT+02:00 Ana Laura Diez Martini <
>>>> diezmartini at gmail.com>:
>>>>
>>>>> Thank you again Nietzsche!!
>>>>>
>>>>> Yes, I was referring to trialfun_bit2dec. I followed your advice and I
>>>>> changed definetrial to ft_definetrial and I confirm the function was added
>>>>> to my paths. After doing this, the error I get is:
>>>>>
>>>>> Attempted to access trl(:,1); index out of bounds because
>>>>> size(trl)=[0,0].
>>>>>
>>>>> Error in trialfun_bit2dec (line 66)
>>>>> idx = any(diff(trl(:,1),1,1),2);
>>>>>
>>>>> Error in ft_definetrial (line 169)
>>>>>     trl   = feval(cfg.trialfun, cfg);
>>>>>
>>>>> Error in process_ERP_1_fieldtrip (line 95)
>>>>>     cfg = ft_definetrial(cfg);
>>>>>
>>>>> This is again the trial definition part in which I think I added what
>>>>> I think are useless lines but I was just trying to make it run it.
>>>>>
>>>>>   % TRIAL DEFINITION
>>>>>     cfg=[];
>>>>>     cfg.filename = ['myfolders/subject.RAW'];
>>>>>     cfg.headerfile = ['myfolders/subject.RAW'];
>>>>>     cfg.dataset = ['myfolders/subject.RAW'];
>>>>>     cfg.trialfun   = 'trialfun_bit2dec';  %% trialfun definition
>>>>>     cfg.trialdef.eventtype    = 'STATUS';
>>>>>     cfg.trialdef.eventvalue   = cgrmrk; % stimulus triggers
>>>>>     cfg.trialdef.prestim      = 0.2; % latency in seconds
>>>>>     cfg.trialdef.poststim     = 1;   % latency in seconds
>>>>>     cfg = ft_definetrial(cfg);
>>>>>
>>>>>     trl = cfg.trl;
>>>>>     cfg=[];
>>>>>     cfg.dataset = ['myfolders/subject.RAW'];
>>>>>     cfg.trl           = trl;
>>>>>     cfg.reref         = 'yes';
>>>>>     cfg.refchannel    = ['all'];
>>>>>
>>>>> Unfortunately using this function is crucial to my analysis because I
>>>>> would like to use only Fieldtrip to analyse all my data. Thank you for
>>>>> taking all this time.
>>>>>
>>>>> On Sun, Sep 28, 2014 at 10:53 PM, Lam, Nietzsche <
>>>>> n.lam at fcdonders.ru.nl> wrote:
>>>>>
>>>>>> Hi again Ana Laura,
>>>>>>
>>>>>> One other thing that I thought of was to make sure that the function
>>>>>> "trialfun_bit2dec" is added to your paths in matlab, so that ft_definetrial
>>>>>> can find this function.
>>>>>>
>>>>>> By updating your fieldtrip to the most recent version
>>>>>> "trialfun_bit2dec" is *not* included. So you'll need to store that as a
>>>>>> separate .m file in a location that can be accessed by the paths set in
>>>>>> matlab.
>>>>>>
>>>>>> Nietzsche
>>>>>>
>>>>>> ----- Original Message -----
>>>>>> > From: "Ana Laura Diez Martini" <diezmartini at gmail.com>
>>>>>> > To: "FieldTrip discussion list" <fieldtrip at science.ru.nl>
>>>>>> > Sent: Saturday, 27 September, 2014 7:18:25 PM
>>>>>> > Subject: Re: [FieldTrip] Where to add a trialfun?
>>>>>> > Thank you Nietzsche!
>>>>>> >
>>>>>> >
>>>>>> > I added it where you suggested and now this is the error I get:
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> > Error using feval
>>>>>> > Invalid function name 'trialfun_bit2dec(cfg)'.
>>>>>> >
>>>>>> >
>>>>>> > Error in definetrial (line 105)
>>>>>> > trl = feval(cfg.trialfun, cfg);
>>>>>> >
>>>>>> >
>>>>>> > Error in process_ERP_1_fieldtrip (line 97)
>>>>>> > cfg = definetrial(cfg);
>>>>>> >
>>>>>> >
>>>>>> > Something I was worried about is that I use an old version of
>>>>>> > Fieldtrip for my scripts because I wrote them long ago and this
>>>>>> > trialfun uses the new format (with 'ft_s',etc.). Could this affect
>>>>>> it
>>>>>> > in any way?
>>>>>> >
>>>>>> >
>>>>>> > Thanks again!
>>>>>> >
>>>>>> >
>>>>>> > On Fri, Sep 26, 2014 at 11:05 PM, Lam, Nietzsche <
>>>>>> > n.lam at fcdonders.ru.nl > wrote:
>>>>>> >
>>>>>> >
>>>>>> > Hi Ana Laura,
>>>>>> >
>>>>>> > In general, you need to determine which trial function (Trialfun) to
>>>>>> > use when using definetrial (see this tutorial:
>>>>>> > http://fieldtrip.fcdonders.nl/tutorial/preprocessing under "do the
>>>>>> > trial definition for the fully incongruent (FIC) condition).
>>>>>> >
>>>>>> > Please try adding this: "cfg.trialfun = 'trialfun_bit2dec(cfg)". to
>>>>>> > your code before calling definetrial (see below).
>>>>>> >
>>>>>> > % TRIAL DEFINITION
>>>>>> > cfg=[];
>>>>>> > cfg.filename = ['my/folders/', subject, '.RAW'];
>>>>>> > cfg.headerfile = ['my/folders/', subject, '.RAW'];
>>>>>> >
>>>>>> > cfg.trialdef.eventtype = 'STATUS';
>>>>>> > cfg.trialdef.eventvalue = cgrmrk;
>>>>>> > cfg.trialdef.prestim = 0.2;
>>>>>> > cfg.trialdef.poststim = 1;
>>>>>> > cfg.trialdef.eventtype=?;
>>>>>> > cfg.trialfun = 'trialfun_bit2dec(cfg) %% trialfun definition
>>>>>> > cfg = definetrial(cfg);
>>>>>> >
>>>>>> >
>>>>>> > As an addition note: based on your error message, it seemed that the
>>>>>> > problem was in the function trialfun_bit2dec. However, from the code
>>>>>> > you showed us, you haven't referenced/called this function. I was
>>>>>> > wondering if the code you provide corresponded to the code that
>>>>>> > created your error message? I'm guessing you ran [trl]
>>>>>> > =trialfun_bit2dec(cfg) directly (i.e. not via definetrial). In which
>>>>>> > case, it was looking for cfg.trialdef.eventtype. You can call
>>>>>> > trialfun_bit2dec as long as you have all the relevant information in
>>>>>> > the cfg (which is in the code you showed us). Hope this helps.
>>>>>> >
>>>>>> > Best,
>>>>>> > Nietzsche
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> > ----- Original Message -----
>>>>>> > > From: "Ana Laura Diez Martini" < diezmartini at gmail.com >
>>>>>> > > To: "FieldTrip discussion list" < fieldtrip at science.ru.nl >
>>>>>> > > Sent: Saturday, 27 September, 2014 2:42:21 AM
>>>>>> > > Subject: [FieldTrip] Where to add a trialfun?
>>>>>> > > Hello all! I'm having a simple problem. I want to add this
>>>>>> trialfun:
>>>>>> > >
>>>>>> > >
>>>>>> http://fieldtrip.fcdonders.nl/faq/how_can_i_transform_trigger_values_from_bits_to_decimal_representation_with_a_trialfun
>>>>>> > >
>>>>>> > >
>>>>>> > >
>>>>>> > > I get this error:
>>>>>> > >
>>>>>> > >
>>>>>> > >
>>>>>> > > Reference to non-existent field 'trialdef'.
>>>>>> > >
>>>>>> > >
>>>>>> > > Error in trialfun_bit2dec (line 52)
>>>>>> > > if strcmp(event(i).type, cfg.trialdef.eventtype)
>>>>>> > >
>>>>>> > >
>>>>>> > > I'm quite sure it's because I'm not writing it in the correct part
>>>>>> > > of
>>>>>> > > my script. This is my trial definition part. Where should I add it
>>>>>> > > and
>>>>>> > > how should I write the line?
>>>>>> > >
>>>>>> > >
>>>>>> > >
>>>>>> > > % TRIAL DEFINITION
>>>>>> > > cfg=[];
>>>>>> > > cfg.filename = ['my/folders/', subject, '.RAW'];
>>>>>> > > cfg.headerfile = ['my/folders/', subject, '.RAW'];
>>>>>> > >
>>>>>> > >
>>>>>> > > cfg.trialdef.eventtype = 'STATUS';
>>>>>> > > cfg.trialdef.eventvalue = cgrmrk;
>>>>>> > > cfg.trialdef.prestim = 0.2;
>>>>>> > > cfg.trialdef.poststim = 1;
>>>>>> > > cfg.trialdef.eventtype=?;
>>>>>> > >
>>>>>> > >
>>>>>> > > cfg = definetrial(cfg);
>>>>>> > >
>>>>>> > >
>>>>>> > > trl = cfg.trl;
>>>>>> > > cfg=[];
>>>>>> > > cfg.dataset = ['my/folders/', subject, '.RAW'];
>>>>>> > > cfg.trl = trl;
>>>>>> > > cfg.reref = 'yes';
>>>>>> > > cfg.refchannel = ['all'];
>>>>>> > >
>>>>>> > >
>>>>>> > > THANKS!
>>>>>> > > _______________________________________________
>>>>>> > > fieldtrip mailing list
>>>>>> > > fieldtrip at donders.ru.nl
>>>>>> > > http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>>>>>> >
>>>>>> > --
>>>>>> > Nietzsche H.L. Lam, MSc
>>>>>> > PhD Candidate
>>>>>> >
>>>>>> > Max Planck Institute for Psycholinguistics
>>>>>> > Wundtlaan 1, 6525 XD Nijmegen, The Netherlands
>>>>>> >
>>>>>> > Donders Institute for Brain, Cognition and Behaviour,
>>>>>> > Centre for Cognitive Neuroimaging,
>>>>>> > Kapittelweg 29, 6525EN Nijmegen, The Netherlands
>>>>>> >
>>>>>> > n.lam at fcdonders.ru.nl
>>>>>> > +31-24-3668219
>>>>>> >
>>>>>> >
>>>>>> > neurobiologyoflanguage.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
>>>>>>
>>>>>> --
>>>>>> Nietzsche H.L. Lam, MSc
>>>>>> PhD Candidate
>>>>>>
>>>>>> Max Planck Institute for Psycholinguistics
>>>>>> Wundtlaan 1, 6525 XD Nijmegen, The Netherlands
>>>>>>
>>>>>> Donders Institute for Brain, Cognition and Behaviour,
>>>>>> Centre for Cognitive Neuroimaging,
>>>>>> Kapittelweg 29, 6525EN Nijmegen, The Netherlands
>>>>>>
>>>>>> n.lam at fcdonders.ru.nl
>>>>>> +31-24-3668219
>>>>>>
>>>>>>
>>>>>> neurobiologyoflanguage.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
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140930/72b5f3d1/attachment-0002.html>


More information about the fieldtrip mailing list