Print

Print


Dear Jakob,

You can put the attached file in /external/fileio/private to remove
that warning and slightly improve the handling of your dataset. The
warning has to do with the fact that your EEGLAB dataset does not
contain fiducials which SPM needs to do proper coregistration. It is
possible to use electrode locations as fiducials if you can find the
corresponding points at the structural scan. That's what the attached
code will do. However, if the electrode locations you had in EEGLAB
are just standard locations, you should just assign default sensor
locations using the 'Prepare' interface. That will make things
somewhat more straightforward. Also if you have individually measured
electrode locations you can load them to SPM using for instance .sfp
format (see the manual).

Best,

Vladimir


On Thu, Jul 2, 2009 at 11:07 AM, Jakob Scherer<[log in to unmask]> wrote:
> Dear Vladimir,
> the conversion runs successfully on my workstation too, now.
> btw i still get the following warnings. but i think it's a minor
> issue, i'll get back to it later
> -----------------------------------------------------------------------
> Running job #1
> -----------------------------------------------------------------------
> Running 'M/EEG Conversion'
>
> SPM8: spm_eeg_channelselection (v2866)             12:01:28 - 02/07/2009
> ========================================================================
> Warning: Could not obtain fiducials automatically.
>> In spm_eeg_convert at 410
>  In spm_cfg_eeg_convert>eeg_convert at 231
>  In matlabbatch\private\cfg_run_cm at 29
>  In cfg_util>local_runcj at 1363
>  In cfg_util at 699
>  In cfg_ui>MenuFileRun_Callback at 1139
>  In gui_mainfcn at 96
>  In cfg_ui at 53
> checkmeeg: no channel type, assigning default
> checkmeeg: no units, assigning default
> checkmeeg: transform type missing, assigning default
> checkmeeg: data scale missing, assigning default
> checkmeeg: data type is missing or incorrect, assigning default
> creating layout from cfg.elec
> creating layout for ext1020 system
> Done    'M/EEG Conversion'
> Done
>
>
> thanks a lot,
> jakob
>
> On Wed, Jul 1, 2009 at 6:06 PM, Vladimir
> Litvak<[log in to unmask]> wrote:
>> Dear Jakob,
>>
>> I could reproduce the error. It comes down to Arno's bug in
>> read_eeglabheader. I fixed the bug and the conversions completes
>> successfully. Put the attached file in /external/fileio/private. Let
>> me know if you have any additional problems.
>>
>> Best,
>>
>> Vladimir
>>
>> On Wed, Jul 1, 2009 at 4:32 PM, Jakob Scherer<[log in to unmask]> wrote:
>>> sorry, i messed it up, it should read (read_eeglabdata.m, line 75ff)
>>>
>>> try
>>>    pathstr = fileparts(filename);
>>>    % assuming the .dat and .set files are located in the same directory
>>>    fid = fopen([ pathstr filesep header.orig.data]);
>>> catch
>>>    fid = fopen([ header.orig.filepath filesep header.orig.data ]);
>>> end
>>>
>>> Then the next error encountered is:
>>> -----------------------------------------------------------------------
>>> Running job #1
>>> -----------------------------------------------------------------------
>>> Running 'M/EEG Conversion'
>>>
>>> SPM8: spm_eeg_channelselection (v2866)             17:28:17 - 01/07/2009
>>> ========================================================================
>>> Warning: Could not obtain fiducials automatically.
>>>> In spm_eeg_convert at 410
>>>  In spm_cfg_eeg_convert>eeg_convert at 231
>>>  In matlabbatch\private\cfg_run_cm at 29
>>>  In cfg_util>local_runcj at 1363
>>>  In cfg_util at 699
>>>  In cfg_ui>MenuFileRun_Callback at 1139
>>>  In gui_mainfcn at 96
>>>  In cfg_ui at 53
>>> checkmeeg: no channel type, assigning default
>>> checkmeeg: no units, assigning default
>>> checkmeeg: transform type missing, assigning default
>>> checkmeeg: data scale missing, assigning default
>>> checkmeeg: data type is missing or incorrect, assigning default
>>> creating layout from cfg.elec
>>> creating layout for ext1020 system
>>> Failed  'M/EEG Conversion'
>>> Index exceeds matrix dimensions.
>>> In file "P:\Science\Matlab\spm8\external\fieldtrip\private\prepare_layout.m"
>>> (???), function "prepare_layout" at line 608.
>>> In file "P:\Science\Matlab\spm8\external\fieldtrip\ft_prepare_layout.m"
>>> (???), function "ft_prepare_layout" at line 11.
>>> In file "P:\Science\Matlab\spm8\spm_eeg_project3D.m" (v3005), function
>>> "spm_eeg_project3D" at line 22.
>>> In file "P:\Science\Matlab\spm8\spm_eeg_prep.m" (v3005), function
>>> "spm_eeg_prep" at line 94.
>>> In file "P:\Science\Matlab\spm8\spm_eeg_convert.m" (v3088), function
>>> "spm_eeg_convert" at line 461.
>>> In file "P:\Science\Matlab\spm8\config\spm_cfg_eeg_convert.m" (v3059),
>>> function "eeg_convert" at line 231.
>>>
>>> The following modules did not run:
>>> Failed: M/EEG Conversion
>>> =======================================================================================
>>>
>>> i'll load up the dataset to reproduce the error
>>> thanks,
>>> jakob
>>>
>>>
>>> On Wed, Jul 1, 2009 at 5:13 PM, Jakob Scherer<[log in to unmask]> wrote:
>>>> dear vladimir,
>>>>
>>>> in read_eeglabdata.m, line 75:
>>>>
>>>> fid = fopen(header.orig.data);
>>>>
>>>> assumes that the files to be read in are located in the current matlab
>>>> directory.
>>>> one could change this into
>>>>
>>>> pathstr = fileparts(filename); % assuming the .dat and .set files are
>>>> located in the same directory
>>>> try
>>>>  fid = fopen([ pathstr filesep header.orig.data]);
>>>> catch
>>>>  fid = fopen([ header.orig.filepath filesep header.orig.data ]); %
>>>> which i personally find less intuitive, but more consistent with
>>>> eeglab
>>>> end
>>>>
>>>> to avoid this.
>>>>
>>>>
>>>> On Fri, Jun 26, 2009 at 7:08 PM, Vladimir
>>>> Litvak<[log in to unmask]> wrote:
>>>>> Dear Jakob,
>>>>>
>>>>> Could you send me the error message and the problematic dataset? You
>>>>> can use yousendit.com if it's too large.
>>>>>
>>>>> Best,
>>>>>
>>>>> Vladimir
>>>>>
>>>>> On Fri, Jun 19, 2009 at 3:08 PM, Jakob Scherer<[log in to unmask]> wrote:
>>>>>> hi,
>>>>>>
>>>>>> it seems to me that in
>>>>>>
>>>>>> spm_cfg_eeg_convert.m, line 37 should read:
>>>>>> usetrials.val = {1};  % instead of usetrials.val = {0},
>>>>>>
>>>>>> to match the default value defined in spm_eeg_convert.m
>>>>>> (from the help text:
>>>>>> % S.usetrials      - 1 - take the trials as defined in the data [default]
>>>>>> %                    0 - use trial definition file even though the data is
>>>>>> %                        already epoched)
>>>>>>
>>>>>>
>>>>>> Then, having corrected that, i get the following error:
>>>>>>
>>>>>> SPM8: spm_eeg_channelselection (v2866)             15:22:55 - 19/06/2009
>>>>>> ========================================================================
>>>>>> Failed  'M/EEG Conversion'
>>>>>> Invalid MEX-file
>>>>>> 'P:\Science\Matlab\spm8\@file_array\private\mat2file.mexw64': Invalid
>>>>>> access to memory location.
>>>>>>
>>>>>> .
>>>>>> In file "P:\Science\Matlab\spm8\@file_array\subsasgn.m" (v1355),
>>>>>> function "subfun" at line 132.
>>>>>> In file "P:\Science\Matlab\spm8\@file_array\subsasgn.m" (v1355),
>>>>>> function "subsasgn" at line 73.
>>>>>> In file "P:\Science\Matlab\spm8\spm_eeg_convert.m" (v3088), function
>>>>>> "spm_eeg_convert" at line 346.
>>>>>> In file "P:\Science\Matlab\spm8\config\spm_cfg_eeg_convert.m" (v3059),
>>>>>> function "eeg_convert" at line 231.
>>>>>>
>>>>>> The following modules did not run:
>>>>>> Failed: M/EEG Conversion
>>>>>>
>>>>>>
>>>>>> Thanks for any help,
>>>>>> regards, jakob
>>>>>>
>>>>>
>>>>
>>>
>>
>