[Mne_analysis] EEGLAB reader
Alexandre Gramfort
alexandre.gramfort at inria.fr
Sun Sep 29 06:26:28 EDT 2019
External Email - Use Caution
hi Christian,
FYI we did this replication effort in:
https://link.springer.com/chapter/10.1007/978-3-319-53547-0_27
https://hal.archives-ouvertes.fr/hal-01451432 (free pdf)
contact me directly if you need some code snippets.
Alex
On Fri, Sep 27, 2019 at 5:31 PM Christian O'Reilly <
christian.oreilly at gmail.com> wrote:
> External Email - Use Caution
>
> Hi all,
>
> I am trying to reproduce in MNE some analyses published in
> https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0030135
> using EEGLAB and I am slowly tracking down sources of differences between
> the results I obtain with these two libraries.
>
> The EEGLAB and the MNE readers for .set files seems to give different
> results. I am using the file km81.set for this example, which can be
> downloaded here: ftp://sccn.ucsd.edu/pub/mica_release.zip
>
> Python/MNE code:
>
> eeg =
> mne.io.read_epochs_eeglab('/home/christian/Documents/mica_release/datasets/km81.set')
> n_epochs, n_chan, n_sample = eeg.get_data().shape
> eeg_data = eeg.get_data().reshape((n_chan, n_sample*n_epochs))
> eeg_data *= 1e6
> print(eeg_data[:5, :5])
> print(eeg_data.shape)
> print(sorted(eeg_data[:, 0]))
> print(np.min(eeg_data, axis=1)[:5])
> print(np.max(eeg_data, axis=1)[:5])
> print(np.min(eeg_data, axis=1).shape)
>
> Python/MNE output:
>
> [[ -30.3018589 -9.46370029 -32.11343384 -80.96838379 -112.64376831]
> [ 17.98744011 13.38890266 8.96499634 8.95211601 10.52659035]
> [ 1.70007288 1.08449709 -1.92835653 -1.52061117 3.14573812]
> [ 22.36253166 19.08609772 14.59503269 14.00534725 16.24861908]
> [ -11.30813694 -12.02319813 -9.68249226 -6.36183262 -6.76167011]]
> (71, 310450)
> [-54.222572326660156, -49.53323745727539, -38.230918884277344,
> -30.919052124023434, -30.30185890197754, -28.795389175415036,
> -26.802810668945312, -23.46408462524414, -19.828861236572266,
> -19.07419776916504, -16.326366424560547, -16.310237884521484,
> -14.442460060119629, -14.286537170410154, -13.221666336059569,
> -11.308136940002441, -10.6834716796875, -10.423746109008789,
> -9.760689735412596, -8.87014102935791, -6.883561611175537,
> -6.867288589477539, -5.7860164642333975, -4.9906535148620605,
> -3.48313570022583, -3.4533519744873047, -3.3310370445251465,
> -2.4730896949768066, -0.9696072936058044, -0.8216205835342406,
> -0.40084442496299744, 0.22790522873401642, 0.28669825196266174,
> 1.3285683393478394, 1.4407401084899902, 1.7000728845596311,
> 1.7271562814712524, 1.8890516757965088, 3.3240826129913326,
> 3.567858934402466, 4.892752170562744, 4.926086902618408, 5.629435539245605,
> 5.7694478034973145, 6.5682663917541495, 7.257050514221191,
> 7.54573392868042, 7.608102798461913, 7.769186019897461, 7.779174804687499,
> 8.121392250061033, 9.502474784851074, 9.762967109680174, 9.94691467285156,
> 10.304577827453613, 10.690375328063965, 11.20960521697998,
> 13.293575286865234, 14.423436164855955, 15.029093742370604,
> 16.452854156494137, 17.035533905029297, 17.987440109252926,
> 18.829505920410156, 22.084123611450195, 22.362531661987305,
> 24.502143859863278, 26.561006546020504, 36.645851135253906,
> 48.55062484741211, 121.60424041748047]
> [-162.69863892 -201.91339111 -130.68704224 -348.22705078 -198.54916382]
> [291.74282837 204.80189514 195.11305237 277.12097168 262.78338623]
> (71,)
>
>
> MATLAB/EEGLAB code:
>
> EEG =
> pop_loadset('/home/christian/Documents/mica_release/datasets/km81.set');
> data = reshape(EEG.data,nchans,EEG.pnts*EEG.trials);
> size(data)
> data(1:5, 1:5)
> sort(data(:, 1))'
> min(data(1:5, :)')
> max(data(1:5, :)')
> size(min(data(:, :)'))
>
> MATLAB/EEGLAB output:
>
> ans =
> 71 310450
> ans =
>
> 5×5 single matrix
>
> -30.3019 -9.4637 -32.1134 -80.9684 -112.6438
> -10.2374 -5.0511 -1.8697 -1.6044 -1.1974
> -20.4854 -9.7555 -1.0124 4.8327 9.6969
> -25.3829 -13.1146 -3.3851 2.5596 7.3826
> -3.8909 2.9585 6.2366 3.6442 0.2817
>
>
> ans =
>
> -30.3019 -26.0869 -25.9951 -25.8994 -25.3829 -24.8852 -24.4983
> -23.8505 -23.5649 -23.0836
> -22.0849 -22.0227 -21.2673 -20.4854 -20.4535 -19.2276 -18.0331
> -17.7991 -17.4316 -17.3945
> -17.2824 -16.0406 -15.9822 -15.1589 -15.0862 -14.9993 -14.7288
> -14.5398 -13.8370 -13.3654
> -13.3466 -13.1214 -12.9615 -11.1150 -10.2374 -9.3882 -8.3259
> -8.2251 -7.8012 -7.5449
> -6.9841 -6.8029 -6.7175 -6.5904 -6.5436 -6.0545 -5.6778
> -5.5130 -5.0071 -4.9592
> -4.3509 -4.3206 -4.0873 -3.8909 -3.4353 -3.3442 -3.1263
> -3.0407 -2.7963 -2.7472
> -2.0239 -1.5894 -1.4584 -1.2007 -1.1818 -0.6294 -0.5136
> -0.1163 1.2653 2.0582
> 2.5924
>
> ans =
> -441.1615 -282.5767 -82.9421 -99.8472 -145.7018
>
> ans =
> 449.5460 152.6343 77.8951 76.6568 343.0334
>
> ans =
> 1 71
>
> As can be seen, the first samples of the first channel have same values
> for the two readers but then it gets different (as seen by the max/min
> values of this channel being different between the two code). The other
> channels also don't have the same values (even for their first samples). It
> is not due to swapped channels, as shown by the fact that the sorted values
> of the first sample of the 71 channels are not the same.
>
> At this point, I am not sure if these differences are due to:
> - me not using the library correctly (although this code seems pretty
> minimal and I made a diligent effort in looking for errors in my code)
> - some under-the-hood assumptions that are different between the two
> readers (e.g., some preprocessing done automatically like re-referencing or
> filtering)
> - a bug in one of the two readers
>
> Any ideas?
>
> Best,
>
> Christian
> _______________________________________________
> Mne_analysis mailing list
> Mne_analysis at nmr.mgh.harvard.edu
> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.nmr.mgh.harvard.edu/pipermail/mne_analysis/attachments/20190929/6768147d/attachment-0001.html
More information about the Mne_analysis
mailing list