{
  "id": 11037,
  "title": "Use of the EOG channel",
  "url": "/competitions/inria-bci-challenge/discussion/11037",
  "author_name": "",
  "post_date": "2014-11-24T22:44:23.870Z",
  "votes": 1,
  "comment_count": 4,
  "views": 2493,
  "content": "<p>Dear competitors,</p>\n<p>We have data from 56 EEG channels, and an additional ElectroOculoGram channel, with information about the noise introduced by blinking. Does anybody know of an efficient method to make use of this information for artifact removal?</p>\n<p>Thanks in advance,</p>",
  "messages": [
    {
      "id": "58824",
      "postDate": "11/24/2014 22:44:23",
      "content": "<p>Dear competitors,</p>\n<p>We have data from 56 EEG channels, and an additional ElectroOculoGram channel, with information about the noise introduced by blinking. Does anybody know of an efficient method to make use of this information for artifact removal?</p>\n<p>Thanks in advance,</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "58830",
      "postDate": "11/24/2014 23:15:58",
      "content": "<p>Hi Jose, I did see one publication where eye artifact was removed through&nbsp;spatial filtering / ICA, although I think it was done by manually dropping channels with strong frontal activation.&nbsp;</p>\n<p>Haven't tried to implement this&nbsp;yet myself, but I'll post the reference here when I find it again.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "63902",
      "postDate": "02/10/2015 09:35:08",
      "content": "<p>There's a paper kicking around that looks pertinent but doesn't look to be publicly accessible - http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=4020017</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "63924",
      "postDate": "02/10/2015 15:03:02",
      "content": "<p>There are a lot of methods for removing ocular artifacts, but the one that has worked best for me over the years is ICA.</p>\n<p>Attached is some code (written in R) that allows you to semi-automatically remove ocular artifacts. I do this semi-automatically because there are very few automatic rejection algorithms that are guaranteed to only throw out ocular artifacts (most are based on looking at some form of activity in frontal channels).&nbsp;&nbsp;</p>\n<p>NOTE: I haven't seen marked improvements in my scores using the ICA cleaned data, but... I've only just started on this competition :)</p>\n<p>The way it works:</p>\n<p>1. Run ICA on data</p>\n<p>2. Perform a gap-derivative on each of the components with some smoothing (i.e., a lagged derivative). Eyeblinks show up as extreme deflections in the signal, so have a large derivative.</p>\n<p>3. Sum all derivatives &gt; 0.2 (you could play with this), and identify components with this sum greater than the threshold*</p>\n<p>4. Display EOG channel along with the identified components, asking you if you want to remove the component. Almost always there will be just 1 component that looks almost exactly the same as the EOG channel, and these are your ocular artefacts.</p>\n<p>*(You could modify this code to do things automatically if you find a good threshold value as this, but I caution you against doing this as the value could vary between subjects, and you could be throwing out important signal as well).</p>\n<p>This would, of course, be pretty simple to implement in Python, I'm just using R for this competition.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "63927",
      "postDate": "02/10/2015 15:57:46",
      "content": "<p>Thanks for the insights - will have a play.&nbsp;</p>",
      "rawMarkdown": "",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 58830,
      "author_name": "emolson",
      "author_url": "",
      "post_date": "11/24/2014 23:15:58",
      "content": "<p>Hi Jose, I did see one publication where eye artifact was removed through&nbsp;spatial filtering / ICA, although I think it was done by manually dropping channels with strong frontal activation.&nbsp;</p>\n<p>Haven't tried to implement this&nbsp;yet myself, but I'll post the reference here when I find it again.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 63902,
      "author_name": "amsterisk",
      "author_url": "",
      "post_date": "02/10/2015 09:35:08",
      "content": "<p>There's a paper kicking around that looks pertinent but doesn't look to be publicly accessible - http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=4020017</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 63924,
      "author_name": "maineiac",
      "author_url": "",
      "post_date": "02/10/2015 15:03:02",
      "content": "<p>There are a lot of methods for removing ocular artifacts, but the one that has worked best for me over the years is ICA.</p>\n<p>Attached is some code (written in R) that allows you to semi-automatically remove ocular artifacts. I do this semi-automatically because there are very few automatic rejection algorithms that are guaranteed to only throw out ocular artifacts (most are based on looking at some form of activity in frontal channels).&nbsp;&nbsp;</p>\n<p>NOTE: I haven't seen marked improvements in my scores using the ICA cleaned data, but... I've only just started on this competition :)</p>\n<p>The way it works:</p>\n<p>1. Run ICA on data</p>\n<p>2. Perform a gap-derivative on each of the components with some smoothing (i.e., a lagged derivative). Eyeblinks show up as extreme deflections in the signal, so have a large derivative.</p>\n<p>3. Sum all derivatives &gt; 0.2 (you could play with this), and identify components with this sum greater than the threshold*</p>\n<p>4. Display EOG channel along with the identified components, asking you if you want to remove the component. Almost always there will be just 1 component that looks almost exactly the same as the EOG channel, and these are your ocular artefacts.</p>\n<p>*(You could modify this code to do things automatically if you find a good threshold value as this, but I caution you against doing this as the value could vary between subjects, and you could be throwing out important signal as well).</p>\n<p>This would, of course, be pretty simple to implement in Python, I'm just using R for this competition.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 63927,
      "author_name": "amsterisk",
      "author_url": "",
      "post_date": "02/10/2015 15:57:46",
      "content": "<p>Thanks for the insights - will have a play.&nbsp;</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "58824": "",
    "58830": "",
    "63902": "",
    "63924": "",
    "63927": ""
  },
  "source": "meta"
}