NeuroTechX / moabb

Mother of All BCI Benchmarks
https://neurotechx.github.io/moabb/
BSD 3-Clause "New" or "Revised" License
678 stars 176 forks source link

Rename P300 to ERP #277

Open jsosulski opened 2 years ago

jsosulski commented 2 years ago

Minor annoyance, but currently the default ERP paradigm is called "P300", which may be a well-known ERP component, but is not necessarily the dominant one when it comes to classification between Target / Non-Target, especially in fast visual paradigms.

There are two options to deal with this:

  1. Make P300 and ERP synonymous via aliases etc.
  2. Replace usages of P300 with ERP. This would require advance deprecation warning etc. and could be a larger change in the code base.

I would be okay with either option.

qbarthelemy commented 2 years ago

I do agree, but I suggest to go further, and to create two new paradigms, in order to clarify the level of classification of the ERP-based BCI: ERP detection (current P300 paradigm), or character prediction (to add). Related to #186. @sylvchev

jsosulski commented 2 years ago

Good idea. I am currently also making use of letter-labels for my research. For example the Lee Dataset is relatively straightforward to add Letter Labels to. The same for our visual speller datasets (Huebner). I dont know about the other datasets though.

qbarthelemy commented 2 years ago

Ok, sounds good! For character/letter prediction in BCI, you can have a look to our last paper: https://arxiv.org/abs/2203.07807

sylvchev commented 2 years ago

Could we add a ERP class, and make the P300 a child class? In that case, no need to make alias or deprecation warning?

We could have different paradigm for the P300 speller, that include character information but I'm not sure how to do that as there is two classification levels involved (ERP detection and character prediction).

As a side question: do we have some ERP dataset to add in the near future? I'd love to add ERP CORE or other datasets, but nothing planned right now.

jsosulski commented 2 years ago

I am currently using the AMUSE one from BNCI, I will see if I have to write a moabb wrapper for it.

@qbarthelemy @sylvchev After thinking about this, I think we dont really need a new paradigm. We just need to have the P300/ERP to keep all stimulus related information (e.g. which letter flashed, which row flashed, which word was played, direction of tone, whatever) in the epochs.metadata attribute. This way, all evaluations should still work, as "Target" and "NonTarget" are the only available events. However, we would need a new evaluation type that makes use of the metadata and e.g. tries to infer which letter was played (Ground truth needs to be supplied by the dataset or inferred by the "Target" "NonTarget' labels).

In a similar vein, we could add the meta information of moabb, i.e. run and session, also as epoch.metadata to make handling easier, this would allow, e.g.:

epochs = epochs["session == session_1"]

instead of

epochs = epochs[meta.session == "session_1"]

Maybe minor, but this way you dont need to do all the book-keeping twice, i.e. which subsets of epochs / meta you select.

I suggest making this in addition to the meta variable of moabb, as maybe some people (still) use return_epochs=False.

qbarthelemy commented 2 years ago

Agreed: instead of a new paradigm, a two-level evaluation seems a good idea: ERP level and character level.

But this discussion responds to issue #281, instead of P300 renaming.