Skip to content

bnicenboim/eeguana

Repository files navigation

R build status Codecov test coverage DOI lifecycle Project Status: WIP – Initial development is in progress, but there has not yet been a stable, usable release suitable for the public.

eeguana

Overview

A package for flexible manipulation of EEG data. eeguana provides a data.table powered framework through tidytable for manipulating EEG data with dplyr-like functions (e.g., eeg_mutate, eeg_filter, eeg_summarize) extended to a new class eeg_lst, other EEG-specialized functions, and ggplot wrapper functions. The new class is inspired by tidyverse principles but it’s not really “tidy” (due to space considerations), it’s a list of (i) a wide data table (signal_tbl) that contains the signal amplitudes at every sample point of the EEG, (ii) an events data table with information about markers (or triggers), blinks and other exported information, and (iii) a long table with experimental information, such as participant number (.recording), conditions, etc.

eeguana can do only basic pre-processing for now, more complete packages exist for Matlab (FieldTrip and EEGLAB) and python (MNE).

See Reference for more information about the functions of eeguana.

NOTE: Changes in dependencies that broke the package are now fixed!

Installation

There is still no released version of eeguana. The package is in the early stages of development, and it will be subject to a lot of changes. To install the latest version from github use:

devtools::install_github("bnicenboim/eeguana")

Example

Here, I exemplify the use of eeguana with (pre-processed) EEG data from BrainVision 2.0. The data belong to a simple experiment where a participant was presented 100 faces and 100 assorted images in random order. The task of the experiment was to mentally count the number of faces.

First we download the data:

# Run the following or just download the files from brain_vision folder in https://osf.io/tbwvz/
library(httr)
GET("https://osf.io/q6b7x//?action=download",
  write_disk("./faces.vhdr", overwrite = TRUE),
  progress()
)
GET("https://osf.io/ft5ge//?action=download",
  write_disk("./faces.vmrk", overwrite = TRUE),
  progress()
)
GET("https://osf.io/85dgj//?action=download",
  write_disk("./faces.dat", overwrite = TRUE),
  progress()
)

BrainVision 2.0 exports three files: faces.vhdr, faces.vmrk, and faces.dat. The file faces.vhdr contains the metadata and links to the other two files, faces.vmrk contains the triggers and other events in the samples, and faces.dat contains the signals at every sample for every channel recorded.

library(eeguana)

We first need to read the data:

faces <- read_vhdr("faces.vhdr")
#> # Reading file faces.vhdr...
#> # Data from ./faces.dat was read.
#> # Data from 1 segment(s) and 34 channels was loaded.
#> # Object size in memory 140.5 Mb

The function read_vhdr() creates a list with data frames for the signal, events, segments information, and incorporates in its attributes generic EEG information.

faces
#> # EEG data:
#> 
#> # Signal table:
#> Key: <.id, .sample>
#>           .id      .sample           Fp1           Fpz           Fp2
#>         <int> <sample_int> <channel_dbl> <channel_dbl> <channel_dbl>
#>      1:     1            1     -4.270188    -12.496757     -8.512611
#>      2:     1            2     -5.986778    -11.261559     -8.302858
#>      3:     1            3     -6.580773     -9.333183     -7.679757
#>      4:     1            4     -5.896090     -6.184696     -6.079263
#>      5:     1            5     -5.349657     -2.581047     -3.960115
#>     ---                                                             
#> 525203:     1       525203    -19.180754    -14.482754    -11.880928
#> 525204:     1       525204    -14.669420    -10.800195     -7.822333
#> 525205:     1       525205    -10.086312     -7.376223     -4.007497
#> 525206:     1       525206     -5.963717     -6.318047     -2.550068
#> 525207:     1       525207     -2.811746     -9.569276     -5.257495
#>                    F7            F3            Fz            F4            F8
#>         <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl>
#>      1:     5.8104863     0.7987084    -3.7944875     -7.004565    -9.5905457
#>      2:     4.4670320    -0.4558482    -3.9204431     -7.312232   -10.1968956
#>      3:     3.7081127    -1.8434987    -3.6854007     -7.325179   -10.5801353
#>      4:     3.9488502    -2.6274934    -2.2696950     -6.544898   -10.5005941
#>      5:     4.6228004    -2.9634132    -0.1724038     -5.449733   -10.2940083
#>     ---                                                                      
#> 525203:    -3.0353870    -3.5060143    -5.1268702     -3.885933     1.3387113
#> 525204:    -0.2864416    -2.9062314    -4.6610451     -3.474034     0.5267539
#> 525205:     2.3745189    -2.2934551    -3.9615459     -2.554780    -0.1948199
#> 525206:     4.0785899    -2.8591332    -4.5113835     -2.396278    -0.8776174
#> 525207:     3.9431772    -4.7773180    -7.2133980     -4.015337    -1.6118808
#>                   FC5           FC1           FC2           FC6            M1
#>         <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl>
#>      1:    -5.5008502     -1.040939     -5.750594     -9.455340     3.2116241
#>      2:    -8.2559958     -1.625572     -6.205832     -9.701509     1.5566816
#>      3:    -8.9441166     -2.496611     -6.225702     -9.615817     0.4754019
#>      4:    -5.3551817     -3.275798     -5.792281     -8.781445    -0.3485098
#>      5:    -0.5347631     -3.816769     -5.539208     -7.758235    -1.6416440
#>     ---                                                                      
#> 525203:    -6.0354300     -3.429955     -1.821500     -1.574225    -3.9028225
#> 525204:    -5.6796050     -3.269526     -1.967095     -2.711437    -1.4479842
#> 525205:    -5.2791243     -2.709156     -1.333362     -3.477794     0.6584158
#> 525206:    -5.5155010     -2.732390     -1.006990     -4.265026     2.0143995
#> 525207:    -7.1379128     -3.719297     -1.199275     -6.290535     3.4945364
#>                    T7            C3            Cz            C4            T8
#>         <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl>
#>      1:    -2.5749669     -3.198639     -7.162738    -6.0244598     -4.771918
#>      2:    -2.1688442     -3.223826     -7.327467    -4.7359419     -3.939853
#>      3:    -1.5235398     -4.196370     -7.618096    -3.2705278     -3.285263
#>      4:    -0.1197605     -6.155464     -7.683692    -1.2953618     -2.399213
#>      5:     1.5852079     -8.072474     -7.589663     0.9121451     -1.056782
#>     ---                                                                      
#> 525203:    -9.0984344     -2.281207     -1.244156    -2.6202018     -3.093663
#> 525204:    -8.1386690     -1.984105     -1.888554    -3.1423230     -2.935883
#> 525205:    -7.0688133     -1.378137     -2.078016    -2.8522072     -3.875237
#> 525206:    -6.4578338     -1.488095     -2.738976    -3.3436871     -4.052106
#> 525207:    -7.3460751     -2.911523     -4.274473    -5.8495107     -4.504183
#>                    M2           CP5           CP1           CP2           CP6
#>         <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl>
#>      1:    -3.2116241     -6.062939     -4.813977    -5.0018249    -8.6002913
#>      2:    -1.5566816     -5.505422     -4.283286    -3.9824409    -6.4684544
#>      3:    -0.4754019     -5.300730     -4.089828    -2.8778281    -4.4623995
#>      4:     0.3485098     -5.378413     -4.206456    -1.4029371    -2.4144411
#>      5:     1.6416440     -5.488734     -4.434868     0.3268354    -0.1063155
#>     ---                                                                      
#> 525203:     3.9028225     -8.155416     -3.549603    -3.7856157    -1.9837997
#> 525204:     1.4479842     -6.898589     -3.393985    -4.0930557    -3.5452051
#> 525205:    -0.6584158     -5.362293     -2.832092    -3.8660426    -4.0679202
#> 525206:    -2.0143995     -4.340692     -2.890889    -4.3359194    -4.9113569
#> 525207:    -3.4945364     -4.906254     -4.134459    -6.3578181    -7.4022784
#>                    P7            P3            Pz            P4            P8
#>         <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl>
#>      1:   -6.72501945     -7.823194     -9.713374    -10.933434    -4.1939182
#>      2:   -4.19162369     -6.248482     -8.652735     -8.811299    -2.4914169
#>      3:   -1.97165060     -4.997821     -7.685406     -6.668526    -1.0310369
#>      4:   -0.09873655     -3.947244     -6.593503     -4.320339     0.6503686
#>      5:    1.68736827     -2.843956     -5.372189     -1.687156     2.8481901
#>     ---                                                                      
#> 525203:  -17.43293571     -7.778884     -3.405085     -1.660518    -4.3979721
#> 525204:  -14.93541336     -6.817270     -4.063128     -2.827326    -5.3324118
#> 525205:  -12.36065578     -5.574656     -4.185033     -3.481713    -6.1155925
#> 525206:  -10.60478783     -5.109689     -4.693735     -4.598518    -7.1271410
#> 525207:  -11.30642700     -6.548401     -6.205623     -6.893994    -9.2952871
#>                   POz            O1            Oz            O2          EOGV
#>         <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl>
#>      1:    -13.021215     -7.650791    -8.6958437     -8.901768    36.3205566
#>      2:    -10.943350     -3.840688    -5.8336391     -6.211349    39.7541809
#>      3:     -8.963390     -0.550869    -3.2353799     -3.810405    42.1534882
#>      4:     -6.857091      2.178792    -0.7047617     -1.321697    44.8317413
#>      5:     -4.618455      4.996092     2.2072635      1.650699    49.1988983
#>     ---                                                                      
#> 525203:     -7.370723    -17.387997   -13.6087084    -10.443031     0.8650103
#> 525204:     -7.889754    -15.422725   -14.4835081    -12.536522    -0.9290609
#> 525205:     -7.927995    -13.746743   -15.2129507    -14.059873    -1.9016356
#> 525206:     -8.352034    -13.172369   -16.1580162    -15.562737    -3.9798355
#> 525207:     -9.975165    -14.335607   -17.8692055    -17.643250    -9.1380615
#>                  EOGH
#>         <channel_dbl>
#>      1:      20.61859
#>      2:      25.55089
#>      3:      29.02995
#>      4:      30.14127
#>      5:      29.85255
#>     ---              
#> 525203:     -12.82597
#> 525204:     -14.95488
#> 525205:     -14.81808
#> 525206:     -12.73059
#> 525207:     -12.55048
#> 
#> # Events table:
#>         .id        .type .description     .initial       .final .channel
#>       <int>       <char>       <char> <sample_int> <sample_int>   <char>
#>    1:     1  New Segment                         1            1     <NA>
#>    2:     1 Bad Interval  Bad Min-Max         2158         2895      Fp1
#>    3:     1 Bad Interval  Bad Min-Max         2161         2891      Fp2
#>    4:     1 Bad Interval  Bad Min-Max         2162         2890      Fpz
#>    5:     1 Bad Interval  Bad Min-Max         2173         2861       F8
#>   ---                                                                   
#> 4272:     1 Bad Interval  Bad Min-Max       524692       524895       P8
#> 4273:     1 Bad Interval  Bad Min-Max       524725       524992      FC5
#> 4274:     1 Bad Interval  Bad Min-Max       524777       525122       P7
#> 4275:     1 Bad Interval  Bad Min-Max       524983       525155       Cz
#> 4276:     1 Bad Interval  Bad Min-Max       525073       525207       O2
#> 
#> # Segments table:
#> Key: <.id>
#>      .id .recording segment
#>    <int>     <char>   <int>
#> 1:     1 faces.vhdr       1

Some intervals were marked as “bad” by BrainVision, and so we’ll remove them from the data. We’ll also segment and baseline the data. In this experiment, the trigger “s70” was used for faces and “s71” for no faces. We’ll segment the data using these two triggers.

faces_segs <- faces |>
  eeg_segment(.description %in% c("s70", "s71"),
    .lim = c(-.2, .25)
  ) |>
  eeg_events_to_NA(.type == "Bad Interval") |>
  eeg_baseline()
#> # Total of 200 segments found.
#> # Object size in memory 12.2 Mb after segmentation.

We can also edit the segmentation information and add more descriptive labels. Once the eeg_lst is segmented, the segments table includes the relevant columns from the events table (but without the leading dots).

eeguana has wrappers for many dplyr commands for the EEG data. These commands always return an entire eeg_lst object so that they can be piped using magrittr’s pipe, |>.

## To only see the segments table:
segments_tbl(faces_segs)
#> Key: <.id>
#>        .id .recording segment     type description
#>      <int>     <char>   <int>   <char>      <char>
#>   1:     1 faces.vhdr       1 Stimulus         s70
#>   2:     2 faces.vhdr       2 Stimulus         s71
#>   3:     3 faces.vhdr       3 Stimulus         s71
#>   4:     4 faces.vhdr       4 Stimulus         s71
#>   5:     5 faces.vhdr       5 Stimulus         s70
#>  ---                                              
#> 196:   196 faces.vhdr     196 Stimulus         s71
#> 197:   197 faces.vhdr     197 Stimulus         s70
#> 198:   198 faces.vhdr     198 Stimulus         s70
#> 199:   199 faces.vhdr     199 Stimulus         s70
#> 200:   200 faces.vhdr     200 Stimulus         s70
## We modify the entire object:
faces_segs_some <- faces_segs |>
  eeg_mutate(
    condition =
      ifelse(description == "s70", "faces", "non-faces")
  ) |>
  eeg_select(-type)

faces_segs_some
#> # EEG data:
#> 
#> # Signal table:
#> Key: <.id, .sample>
#>          .id      .sample           Fp1           Fpz           Fp2
#>        <int> <sample_int> <channel_dbl> <channel_dbl> <channel_dbl>
#>     1:     1          -99      3.000602      3.822540      1.676837
#>     2:     1          -98      4.651500      5.966759      2.899244
#>     3:     1          -97      5.636973      7.734169      3.360790
#>     4:     1          -96      4.887103      7.093736      1.560090
#>     5:     1          -95      1.679875      3.586631     -2.115480
#>    ---                                                             
#> 45196:   200          122            NA            NA            NA
#> 45197:   200          123            NA            NA            NA
#> 45198:   200          124            NA            NA            NA
#> 45199:   200          125            NA            NA            NA
#> 45200:   200          126            NA            NA            NA
#>                   F7            F3            Fz            F4            F8
#>        <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl>
#>     1:      5.345215      8.526904      4.730365      3.188497    -0.1089175
#>     2:      6.229248     11.957867      6.160355      3.994015    -0.8760965
#>     3:      6.146507     12.643122      7.125668      4.267825    -2.2046354
#>     4:      4.679008     10.153717      6.335395      3.259394    -3.9267309
#>     5:      1.817395      6.471601      4.633891      1.394350    -5.1243312
#>    ---                                                                      
#> 45196:     -6.226833     -6.164627     -8.134506     -6.909568    -0.8537389
#> 45197:     -7.609634     -6.624886     -8.577490     -7.793821    -0.9486715
#> 45198:     -8.355278     -7.320350     -8.860150     -8.050289    -0.5816752
#> 45199:     -8.419843     -8.317026     -9.056007     -7.632708     0.1328152
#> 45200:     -8.219583     -9.290400     -9.426888     -7.286663     0.5260323
#>                  FC5           FC1           FC2           FC6            M1
#>        <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl>
#>     1:     -3.644006      7.912477      3.989274      1.272626     0.2677516
#>     2:      1.023301      9.416551      4.667467      3.301379    -0.2832003
#>     3:      7.279726      9.103708      5.293130      3.712586    -0.7368386
#>     4:     10.369022      7.112526      4.947480      1.836436    -0.8240938
#>     5:     10.296667      4.968021      4.046026     -1.199115    -0.6874469
#>    ---                                                                      
#> 45196:     -9.798989     -7.777216     -9.401660     -6.067313    -6.4766435
#> 45197:    -10.705381     -8.119785     -9.315678     -7.353704    -6.6995262
#> 45198:    -11.125468     -8.373542     -9.178003     -8.296130    -6.9813064
#> 45199:    -10.956071     -8.740564     -9.007817     -8.350711    -7.0623969
#> 45200:    -10.897510     -9.636951     -8.939460     -7.994563    -7.0156692
#>                   T7            C3            Cz            C4            T8
#>        <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl>
#>     1:     -3.057617     10.609308      5.917813     0.8313377    -10.315272
#>     2:     -1.562383     12.928541      6.262912     1.0666051    -10.356676
#>     3:      1.504318     11.542353      5.948693     1.9167381    -11.298820
#>     4:      5.022166      7.915255      4.986212     2.8912187    -11.997029
#>     5:      6.427537      4.484360      4.172830     3.3982225    -12.559875
#>    ---                                                                      
#> 45196:     -8.022766     -6.429070    -10.872999    -8.3944751     -3.502227
#> 45197:     -8.829075     -7.358996    -10.609312    -9.2848460     -4.407707
#> 45198:     -9.287003     -8.015747    -10.252135    -9.7955848     -4.839347
#> 45199:     -9.304779     -8.464732     -9.964297    -9.9221298     -4.811365
#> 45200:     -9.483838     -9.494273    -10.028708   -10.5967504     -4.864176
#>                   M2           CP5           CP1           CP2           CP6
#>        <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl>
#>     1:    -0.2677516      1.964691     6.7162759      3.262704     -7.399092
#>     2:     0.2832003      4.404590     7.4449489      3.293858     -5.744716
#>     3:     0.7368386      5.582302     7.1147640      3.475278     -3.493423
#>     4:     0.8240938      5.430152     6.1576960      3.890801     -1.759528
#>     5:     0.6874469      4.314408     5.2338812      4.307086     -1.050894
#>    ---                                                                      
#> 45196:     6.4766435     -1.349851    -0.4762376     -5.722418     -3.533263
#> 45197:     6.6995262     -3.101862    -1.1596463     -6.534246     -4.621159
#> 45198:     6.9813064     -4.486185    -1.7303489     -6.932361     -5.494592
#> 45199:     7.0623969     -5.391058    -2.1837558     -7.031692     -6.007089
#> 45200:     7.0156692     -6.672053    -3.0703575     -7.622055     -6.492426
#>                   P7            P3            Pz            P4            P8
#>        <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl>
#>     1:     -5.496809     2.0440808      4.166571    -0.0616881    -8.3880332
#>     2:     -2.861829     3.2697255      4.204710     0.5590584    -6.7958000
#>     3:      1.280905     4.4449736      4.435450     1.7226454    -4.7219687
#>     4:      5.945641     5.2879867      4.639458     2.7629569    -3.0705338
#>     5:      8.049101     5.4885453      4.919482     3.4599713    -1.9033555
#>    ---                                                                      
#> 45196:      2.242977     0.7155832     -4.610498    -3.9528958     1.4214111
#> 45197:     -0.126445    -0.6689793     -5.037940    -4.7200541     0.7046986
#> 45198:     -2.238547    -1.8152691     -5.363847    -5.5482372    -0.2055778
#> 45199:     -3.761132    -2.4688984     -5.509579    -6.1985716    -1.2616262
#> 45200:     -5.677335    -3.4514109     -5.946858    -6.8952164    -1.9542868
#>                  POz            O1            Oz            O2          EOGV
#>        <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl> <channel_dbl>
#>     1:    -0.3286116    -6.0260374     -5.461096    -4.2778666      6.783448
#>     2:     0.3093608    -2.6993167     -2.760820    -2.2311228      6.625389
#>     3:     1.9620757     1.8627557      1.137758     0.7749981      7.371072
#>     4:     3.7967925     5.8118551      4.439274     3.4188545      9.326947
#>     5:     5.3241937     8.0964449      6.621065     5.8291734     11.692706
#>    ---                                                                      
#> 45196:    -4.3255999    -0.5402464     -4.114951    -0.3463787     -8.905102
#> 45197:    -4.7982240    -0.8443795     -3.887248    -0.4495586     -9.181591
#> 45198:    -5.3792999    -2.0916432     -4.558462    -1.1659049     -8.742321
#> 45199:    -5.9168708    -4.1249534     -6.119560    -2.5120736     -9.108685
#> 45200:    -6.5737116    -6.4350015     -7.568655    -3.5681661    -10.735058
#>                 EOGH
#>        <channel_dbl>
#>     1:      2.078419
#>     2:      4.423636
#>     3:      6.663611
#>     4:      8.364970
#>     5:      9.205865
#>    ---              
#> 45196:     18.196424
#> 45197:     17.637968
#> 45198:     17.773702
#> 45199:     17.002721
#> 45200:     15.214422
#> 
#> # Events table:
#>        .id    .type .description     .initial       .final .channel
#>      <int>   <char>       <char> <sample_int> <sample_int>   <char>
#>   1:     1 Stimulus          s70            1            1     <NA>
#>   2:     2 Stimulus          s71            1            1     <NA>
#>   3:     3 Stimulus          s71            1            1     <NA>
#>   4:     4 Stimulus          s71            1            1     <NA>
#>   5:     5 Stimulus          s70            1            1     <NA>
#>  ---                                                               
#> 196:   196 Stimulus          s71            1            1     <NA>
#> 197:   197 Stimulus          s70            1            1     <NA>
#> 198:   198 Stimulus          s70            1            1     <NA>
#> 199:   199 Stimulus          s70            1            1     <NA>
#> 200:   200 Stimulus          s70            1            1     <NA>
#> 
#> # Segments table:
#> Key: <.id>
#>        .id .recording segment description condition
#>      <int>     <char>   <int>      <char>    <char>
#>   1:     1 faces.vhdr       1         s70     faces
#>   2:     2 faces.vhdr       2         s71 non-faces
#>   3:     3 faces.vhdr       3         s71 non-faces
#>   4:     4 faces.vhdr       4         s71 non-faces
#>   5:     5 faces.vhdr       5         s70     faces
#>  ---                                               
#> 196:   196 faces.vhdr     196         s71 non-faces
#> 197:   197 faces.vhdr     197         s70     faces
#> 198:   198 faces.vhdr     198         s70     faces
#> 199:   199 faces.vhdr     199         s70     faces
#> 200:   200 faces.vhdr     200         s70     faces

With some “regular” ggplot skills, we can create customized plots. ggplot() applied to an eeg_lst object will downsample the signals (when needed), and convert them to a long-format data frame that is feed into ggplot. This object can then be customized.

library(ggplot2)
faces_segs_some |>
  eeg_select(O1, O2, P7, P8) |>
  ggplot(aes(x = .time, y = .value)) +
  geom_line(alpha = .1, aes(group = .id, color = condition)) +
  stat_summary(
    fun = "mean", geom = "line", alpha = 1, size = 1.5,
    aes(color = condition)
  ) +
  facet_wrap(~.key) +
  geom_vline(xintercept = 0, linetype = "dashed") +
  geom_vline(xintercept = .17, linetype = "dotted") +
  theme(legend.position = "bottom")
#> Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
#> ℹ Please use `linewidth` instead.
#> This warning is displayed once every 8 hours.
#> Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
#> generated.

Another possibility is to create a topographic plot of the two conditions, by first making segments that include only the interval .1-.2 s after the onset of the stimuli, creating a table with interpolated amplitudes and using the ggplot wrapper plot_topo.

faces_segs_some |>
  eeg_filter(between(as_time(.sample, .unit = "milliseconds"), 100, 200)) |>
  eeg_group_by(condition) |>
  eeg_summarize(across_ch(mean, na.rm = TRUE)) |>
  plot_topo() +
  annotate_head() +
  geom_contour() +
  annotate_electrodes(colour = "black") +
  facet_grid(~condition)

Articles and dissertations using eeguana

Aristei, Sabrina, Christine A Knoop, Oliver Lubrich, Thomas Nehrlich, Alexander Enge, Kirsten Stark, Werner Sommer, and Rasha Abdel Rahman. 2023. “Affect as Anaesthetic: How Emotional Contexts Modulate the Processing of Counterintuitive Concepts.” Language, Cognition and Neuroscience 38 (10): 1514–30.

Corput, Daniël van den. 2020. “Locked in Syndrome Machine Learning Classification Using Sentence Comprehension EEG Data.” arXiv Preprint arXiv:2006.12336.

Nicenboim, Bruno, Shravan Vasishth, and Frank Rösler. 2020. “Are Words Pre-Activated Probabilistically During Sentence Comprehension? Evidence from New Data and a Bayesian Random-Effects Meta-Analysis Using Publicly Available Data.” Neuropsychologia 142: 107427.

Stone, Kate, Naghmeh Khaleghi, and Milena Rabovsky. 2023. “The N400 Is Elicited by Meaning Changes but Not Synonym Substitutions: Evidence from Persian Phrasal Verbs.” Cognitive Science 47 (12): e13394.

Stone, Kate, Bruno Nicenboim, Shravan Vasishth, and Frank Rösler. 2023. “Understanding the Effects of Constraint and Predictability in ERP.” Neurobiology of Language 4 (2): 221–56.

Stone, Kate, Shravan Vasishth, and Titus von der Malsburg. 2022. “Does Entropy Modulate the Prediction of German Long-Distance Verb Particles?” Plos One 17 (8): e0267813.

Szewczyk, Jakub M, and Kara D Federmeier. 2022. “Context-Based Facilitation of Semantic Access Follows Both Logarithmic and Linear Functions of Stimulus Probability.” Journal of Memory and Language 123: 104311.

Vik Espárrago, Erik Martı́n. 2021. “Detección de Perfiles Psicopáticos Mediante El análisis Automático de Señales de Encefalogramas.”

Other R packages for EEG/ERP data:

  • permuco4brain provides functions to compute permutation test in brain imagery data. It is specially designed for M-EEG/ERP data. This a vignette explains how to use it together with eeguana.
  • eegUtils some helper utilities for plotting and processing EEG data in active development by Matt Craddock.
  • erpR analysis of event-related potentials (ERPs) by Giorgio Arcara, Anna Petrova. It hasn’t been updated since 2014.
  • mne-r provides fast acccess to MNE-Python from within R.