[FieldTrip] Issue plotting Brainnetome aligned EEG source data

Schoffelen, J.M. (Jan Mathijs) janmathijs.schoffelen at donders.ru.nl
Mon Jul 5 16:10:59 CEST 2021


Hi Jack,

> Thank you for the pointers. I've been practicing your suggestions and just had two follow-up questions regarding ft_virtualchannels.
> 
> As mentioned, I am applying this to source-level EEG data to calculate virtual channel data for the Brainnetome atlas ROIs (so there should ultimately be 246 virtual channels/ROIs). The original data has 30 scalp channels. I am currently using eLORETA for source reconstruction.
> 
> How I apply the function:
> cfg = [];
> cfg.parcellation = 'tissue';
> vcdata = ft_virtualchannel(cfg, cln_data, source, atlas_grid);
> 
> My questions:
> Q1) Is this function currently only setup for MEG data? When I ran the ft_virtualchannel function I received this error:
> ...
> applying the montage to the elec structure
> ...
> Reference to non-existent field 'grad'.
> ...
> Error in ft_virtualchannel (line 381)
> data_vc.(sensfields{k}) = ft_apply_montage(data.grad, montage, 'feedback', 'none', 'keepunused', 'yes', 'balancename', bname);


Well, yes indeed that was a bug. I think that the most recent releases have this fixed.

> 
> (Q1) continued... 
> ft_virtualchannel does run without error if I change "data.grad" so that it is also "data.(sensfields{k})" in line 381. This is so the code it isn't forced to look for the 'data.grad' field, and it can instead use 'data.elec' for EEG, but I am not sure if the output is sensible after my change as I don't have anything to compare. I have put the output structures for vcdata and vcdata.elec below if you, or others, don't mind having a look.

Don’t worry, the function should not care about whether the input data is obtained from EEG or MEG data. One important note of caution is of course that - with 30 channels - the quality of the source reconstruction is limited in terms of spatial resolution, so mapping the 30 channels worth of EEG onto 246 is stretching it quite a bit.

> 
> Q2) My source-level EEG trial amplitudes using ft_virtualchannel can be much larger than the scalp-level amplitudes. Is this expected? It makes me wonder whether the units have changed or if this variance is a typical product of the svd method in virtualchannel function (or simply a lack of averaging the mom across many dipoles).

The source level data is expressed in different units, units of dipole moment, expressed in (n)Am versus (micro)Volts in the EEG signal.

Best wishes,
Jan-Mathijs

> 
> For example, using the virtualchannel function the standard deviation for Virtual Channel (ROI) 1 amplitudes, in trial 1, is 221.96; whereas, if I calculate the mean across dipole mom in the same Virtual Channel and trial, using my previous code that you have seen (which is far far slower), the standard deviation in amplitude is ~9.49. In the original scalp level data the standard deviation in trial 1 is ~9.55 per channel. Does something seem amiss here?
> 
> Here is my output virtual channel data for one subject with 66 EEG trials. Trials are 2 seconds each, recorded at 500 Hz srate.
> 
> vcdata = struct with fields:
> 
> fsample: 500
> elec: [1×1 struct]
> hdr: [1×1 struct]
> sampleinfo: [66×2 double]
> trial: {1×66 cell}
> time: {1×66 cell}
> label: {246×1 cell}
> cfg: [1×1 struct]
> brainordinate: [1×1 struct]
> 
> vcdata.elec = struct with fields:
> 
> cfg: [1×1 struct]
> chanpos: [246×3 double]
> elecpos: [30×3 double]
> homogeneous: [4×4 double]
> label: {246×1 cell}
> tra: [246×30 double]
> type: 'eeg1010'
> unit: 'mm'
> chanposold: [30×3 double]
> labelold: {30×1 cell}
> 
> Any insight on these will be much appreciated. 
> 
> Thanks,
> Jack
> 
> _______________________________________________
> fieldtrip mailing list
> https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
> https://urldefense.com/v3/__https://doi.org/10.1371/journal.pcbi.1002202__;!!HJOPV4FYYWzcc1jazlU!t20PrAkKNW-kckE-37KSjvXOpMrP338Ml2-2_LjKmAZTpD2DbaUvmgt5jtZUHvxKLmajUihurDbk6W8$ 




More information about the fieldtrip mailing list