[FieldTrip] trial error

Evelyne Fraats e.fraats at kpnmail.nl
Fri Jun 23 17:09:39 CEST 2023


Dear all,

 

This was indeed the case!

Within the tapas_physio_read_physlogfiles_brainproducts.m function, I could indeed define the event value.

 

Goodluck to you all.

 

Best,

Evelyne

 

Van: fieldtrip <fieldtrip-bounces at science.ru.nl> Namens Schoffelen, J.M. (Jan Mathijs) via fieldtrip
Verzonden: zaterdag 10 juni 2023 11:31
Aan: FieldTrip discussion list <fieldtrip at science.ru.nl>
CC: Schoffelen, J.M. (Jan Mathijs) <janmathijs.schoffelen at donders.ru.nl>
Onderwerp: Re: [FieldTrip] trial error

 

Dear Evelyne, 

 

Hmmm, I think that your question is a bit out of scope for the fieldtrip discussion list, because your problem seems constrained to the a problem with the  PhysIO toolbox (which uses SPM, which uses Fieldtrip). It’s great that you already have identified that calling ft_definetrial directly works fine, which makes it unlikely that there’s a bug in the fieldtrip codebase.

 

I have never worked with this PhysIO toolbox myself, and the combination with the matlabbatch functionality of SPM does not make the detective work straightforward. 

 

My first hunch would be that the (possibly hardcoded) definition of the eventtype/eventvalue is incorrect for your data. I checked the TAPAS code on github, and found the following function: https://urldefense.com/v3/__https://github.com/translationalneuromodeling/tapas/blob/master/PhysIO/code/readin/tapas_physio_read_physlogfiles_brainproducts.m__;!!HJOPV4FYYWzcc1jazlU!65cMoGmD91tFeJcdTZy2Itp4CXx1PaExrrhVzOP3df3NwkoRpyakwdsrZ_pN1YNlisx_YHltsb1Pan3447jnr5jG$  <https://urldefense.com/v3/__https:/github.com/translationalneuromodeling/tapas/blob/master/PhysIO/code/readin/tapas_physio_read_physlogfiles_brainproducts.m__;!!HJOPV4FYYWzcc1jazlU!5H90oiOLBBCjs7OHHJjplyfnTinW865-Zaby40nl4EbZ9Bda9wsf7NqLgE9m8mYrIAP9JANXm36nW5J0LyH6YNuL50-nLh9h6Ob8-w$>  , which looks as if this is the one where things might go wrong. Specifically, starting from line 54 in said function, the eventvalue that defines the ’trials’ within PhysIO is defined hardcoded as ‘R128’, which does not seem to be present in your data.

 

Could this be what is causing your issue? Given that the eventvalue is hardcoded (i.e. non configurable as an option in your matlabbatch) you can not get it to run without making a change to your version of the code. I would assume that - if this is indeed the cause of the problem - the change of ‘R128’ into ‘R  1’ would be sufficient, and that this will work for all of your recorded subjects. A more principled solution would be to liaise with the PhysIO developers (or to submit a Pull Request) to discuss the possibility of making the eventvalue for the brainproducts data configurable.

 

If things are unclear, or on the off chance that my suggestions don’t address the problem, please feel free to drop by at the office (01.158) with some data, code and versnaperingen, so that we can have a look at it together.

 

Best wishes,

Jan-Mathijs

 

 

 





On 9 Jun 2023, at 15:03, Evelyne Fraats via fieldtrip <fieldtrip at science.ru.nl <mailto:fieldtrip at science.ru.nl> > wrote:

 

Dear all,

 

My name is Evelyne and I am just started to explore fieldtrip.

I use fieldtrip to define trials in physiological recordings to estimate physiological regressors for MRI preprocessing. 

However, when using the physio toolbox, no trials are detected within my data.

When I run the separate ft_definetrial function, I get trials, but I seem to fail to include this in my matlabbatch.

This is my output with error message:

 

evaluating trial function 'ft_trialfun_general'

reading the header from '/home/affneu/evefra/Spinalcord/data/Physio/subx19_new_threat_SPINAL.vhdr'

reading the events from '/home/affneu/evefra/Spinalcord/data/Physio/subx19_new_threat_SPINAL.vhdr'

found 169 events

created 20 trials

the call to "ft_definetrial" took 0 seconds and required the additional allocation of an estimated 0 MB

Item model: No field(s) named

event

 

 

------------------------------------------------------------------------

09-Jun-2023 15:02:40 - Running job #41

------------------------------------------------------------------------

09-Jun-2023 15:02:40 - Running 'TAPAS PhysIO Toolbox'

Warning: cfg.trialdef.eventtype='?' is deprecated, please specify cfg.trialfun='ft_trialfun_show' 

evaluating trial function 'ft_trialfun_show'

reading the events from '/home/affneu/evefra/Spinalcord/data/Physio/subx19_new_threat_SPINAL.vhdr'

the following events were found in the data

event type: 'New Segment' 

with event values: 

 

event type: 'Response' 

with event values: 'R  1' 

 

event type: 'Stimulus' 

with event values: 'S  1' 'S 97' 

 

no trials have been defined yet, see FT_DEFINETRIAL for further help

found 169 events

the call to "ft_definetrial" took 0 seconds and required the additional allocation of an estimated 0 MB

evaluating trial function 'ft_trialfun_general'

reading the header from '/home/affneu/evefra/Spinalcord/data/Physio/subx19_new_threat_SPINAL.vhdr'

reading the events from '/home/affneu/evefra/Spinalcord/data/Physio/subx19_new_threat_SPINAL.vhdr'

09-Jun-2023 15:02:41 - Failed  'TAPAS PhysIO Toolbox'

Error using ft_definetrial

no trials were defined, see FT_DEFINETRIAL for help

 

The following modules did not run:

Failed: TAPAS PhysIO Toolbox

 

Error using MATLABbatch system

Job execution failed. The full log of this run can be found in MATLAB command window, starting with the lines (look for the line showing the

exact #job as displayed in this error message)

------------------

Running job #41

------------------

 

 

This is my code:

 

if physio_regressor == 1

        %cd /home/affneu/evefra/Spinalcord/data/Physio/ 

        %define log input

        data_path_physio = fullfile(data_path, 'Physio');

        data_path_physio_sub = dir(fullfile(data_path_physio, sprintf('subx%d*threat*.eeg', sub))) ; %CHANE FORMAT       

        filenames = {data_path_physio_sub.name};

        filenames = filenames';  

        filefolder = {data_path_physio_sub.folder};

        filefolder = filefolder';

        filename_folder = cellfun(@(folder, name) fullfile(folder, name), filefolder, filenames, 'UniformOutput', false);

 

        %define vhdr

        data_path_physio_sub = dir(fullfile(data_path_physio, sprintf('subx%d*threat*.vhdr', sub))) ; %CHANE FORMAT       

        filenames = {data_path_physio_sub.name};

        filenames = filenames';  

        filefolder = {data_path_physio_sub.folder};

        filefolder = filefolder';

        filename_folder_vhdr = cellfun(@(folder, name) fullfile(folder, name), filefolder, filenames, 'UniformOutput', false);

 

        %define vmkr

        data_path_physio_sub = dir(fullfile(data_path_physio, sprintf('subx%d*threat*.vmrk', sub))) ; %CHANE FORMAT       

        filenames = {data_path_physio_sub.name};

        filenames = filenames';  

        filefolder = {data_path_physio_sub.folder};

        filefolder = filefolder';

        filename_folder_vmrk = cellfun(@(folder, name) fullfile(folder, name), filefolder, filenames, 'UniformOutput', false);

 

        %define trials

        cfg = [];

        cfg.headerfile = char(filename_folder_vhdr);

        cfg.eventfile = char(filename_folder_vmrk);

        cfg.trialdef.eventtype = 'Stimulus';  

        cfg.trialdef.eventvalue = 'S  1';   

        cfg.trialdef.prestim = 0;             

        cfg.trialdef.poststim = 0; 

        %cfg.trialfun = 'ft_trialfun_show';

        trials = ft_definetrial(cfg);

        

 

      

        %run regressor estimation

               

        clear matlabbatch

        matlabbatch{1}.spm.tools.physio.save_dir = {fullfile(data_path_tos_brain,'physio_regressors')};

        matlabbatch{1}.spm.tools.physio.log_files.vendor = 'BrainProducts';

        matlabbatch{1}.spm.tools.physio.log_files.cardiac = filename_folder;

        matlabbatch{1}.spm.tools.physio.log_files.respiration = filename_folder;

        matlabbatch{1}.spm.tools.physio.log_files.scan_timing = {''};

        matlabbatch{1}.spm.tools.physio.log_files.sampling_interval = [];

        matlabbatch{1}.spm.tools.physio.log_files.relative_start_acquisition = 0;

        matlabbatch{1}.spm.tools.physio.log_files.align_scan = 'last';

        matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.Nslices = 44;

        matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.NslicesPerBeat = [];

        matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.TR = 3.39;

        matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.Ndummies = 0;

        matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.Nscans = 147;

        matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.onset_slice = 1;

        matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.time_slice_to_slice = [];

        matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.Nprep = [];

        matlabbatch{1}.spm.tools.physio.scan_timing.sync.nominal = struct([]);

        matlabbatch{1}.spm.tools.physio.preproc.cardiac.modality = 'ECG';

        matlabbatch{1}.spm.tools.physio.preproc.cardiac.filter.no = struct([]);

        matlabbatch{1}.spm.tools.physio.preproc.cardiac.initial_cpulse_select.auto_matched.min = 0.4;

        matlabbatch{1}.spm.tools.physio.preproc.cardiac.initial_cpulse_select.auto_matched.file = 'initial_cpulse_kRpeakfile.mat';

        matlabbatch{1}.spm.tools.physio.preproc.cardiac.initial_cpulse_select.auto_matched.max_heart_rate_bpm = 90;

        matlabbatch{1}.spm.tools.physio.preproc.cardiac.posthoc_cpulse_select.off = struct([]);

        matlabbatch{1}.spm.tools.physio.preproc.respiratory.filter.passband = [0.01 2];

        matlabbatch{1}.spm.tools.physio.preproc.respiratory.despike = false;

        matlabbatch{1}.spm.tools.physio.model.output_multiple_regressors = 'multiple_regressors.txt';

        matlabbatch{1}.spm.tools.physio.model.output_physio = 'physio.mat';

        matlabbatch{1}.spm.tools.physio.model.orthogonalise = 'none';

        matlabbatch{1}.spm.tools.physio.model.censor_unreliable_recording_intervals = false;

        matlabbatch{1}.spm.tools.physio.model.retroicor.yes.order.c = 3;

        matlabbatch{1}.spm.tools.physio.model.retroicor.yes.order.r = 4;

        matlabbatch{1}.spm.tools.physio.model.retroicor.yes.order.cr = 1;

        matlabbatch{1}.spm.tools.physio.model.rvt.no = struct([]);

        matlabbatch{1}.spm.tools.physio.model.hrv.no = struct([]);

        matlabbatch{1}.spm.tools.physio.model.noise_rois.no = struct([]);

        matlabbatch{1}.spm.tools.physio.model.movement.no = struct([]);

        matlabbatch{1}.spm.tools.physio.model.other.no = struct([]);

        matlabbatch{1}.spm.tools.physio.verbose.level = 2;

        matlabbatch{1}.spm.tools.physio.verbose.fig_output_file = '';

        matlabbatch{1}.spm.tools.physio.verbose.use_tabs = false;

        matlabbatch{1}.spm.tools.physio.model.event.trials = trials.trl(:,1);

 

        spm_jobman('run', matlabbatch)

    end

 

 

If anybody has some tips, it would be greatly appreciated.

Best,
Evelyne

_______________________________________________
fieldtrip mailing list
 <https://mailman.science.ru.nl/mailman/listinfo/fieldtrip> https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
 <https://urldefense.com/v3/__https:/doi.org/10.1371/journal.pcbi.1002202__;!!HJOPV4FYYWzcc1jazlU!8K61M79uymMxxdjPKVyfGBtnWB-RCxy2i6Q6ZvuyiceE0VKbY6x6jPj7xtCmtq14ZNS3x6uHwZAy4xvdqZ3o72A8YRrwcTyAUBGzyA$> https://urldefense.com/v3/__https://doi.org/10.1371/journal.pcbi.1002202__;!!HJOPV4FYYWzcc1jazlU!8K61M79uymMxxdjPKVyfGBtnWB-RCxy2i6Q6ZvuyiceE0VKbY6x6jPj7xtCmtq14ZNS3x6uHwZAy4xvdqZ3o72A8YRrwcTyAUBGzyA$

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20230623/7b487187/attachment.htm>


More information about the fieldtrip mailing list