This is a collaborative space. In order to contribute, send an email to maximilien.chaumon@icm-institute.org
On any page, type the letter L on your keyboard to add a "Label" to the page, which will make search easier.

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Date:

Participants:

Contexte

Au cours du Datatype meeting du 22.04.2021 (voir Datatype meeting 22.04.2021), la question d’où est enregistrée l’information “bad channels” à l’issue d’une détection des mauvais canaux a été abordée.

Une application pour détecter automatiquement les mauvais canaux MEG dans les fichiers .fif a été créée (voir app-bad-channels). Cette application utilise la fonction MNE Python https://mne.tools/stable/generated/mne.preprocessing.find_bad_channels_maxwell.html#mne.preprocessing.find_bad_channels_maxwell qui retourne une liste de canaux plats et de canaux bruités. Ensuite ces canaux sont ajoutés dans raw.info['bads'] (raw étant le .fif après lecture par MNE Python):

bads = raw.info['bads'] + auto_noisy_chs + auto_flat_chs
raw.info['bads'] = bads

Et le raw avec le champ ['bads'] mis à jour est enregistré.

Au cours du Datatype meeting, Soichi a dit qu’il faut éviter d’enregistrer un .fif à l’issue d’une App pour lequel seulement un champ d’info a été modifié, ce qui est le cas ici avec l’app-bad-channels. Le mieux serait de stocker ces informations dans un fichier channels.tsv (Soichi a créé un datatype pour ça : neuro/meg/fif-override). Il faudrait alors penser à updater le raw.info['bads'] avec les infos contenues dans ce fichier .tsv car, par exemple, la fonction Maxwell Filter de MNE utilise ce qui est stocké dans raw.info['bads'].

Résolution du problème pour Maxwell Filtering

Une façon de résoudre ce problème serait de combiner les application app-bad-channels et app-maxwell-filtering (ces deux étapes sont étroitement liées), tout en laissant à l’utilisateur la possibilité de seulement faire tourner le Maxwell Filtering.

MaxFilter interpole les mauvais canaux donc à la sortie de cette fonction raw.info['bads'] est vide. Mais il est conseillé de vérifier à nouveau les canaux à l’issue de MaxFilter et donc de mettre à jour le raw.info['bads'] (car c’est ce qui est pris en compte dans les fonctions MNE comme on le voit par la suite) et le channels.tsv.

Autres cas où le raw.info['bads'] est utilisé

Par ailleurs, il est important de noter que les fonctions de MNE où une sélection des canaux est possible utilise les informations stockées dans raw.info['bads']. Par exemple, pour la fonction notch_filter de MNE:

picks str | list | slice | None

Channels to include. Slices and lists of integers will be interpreted as channel indices. In lists, channel type strings (e.g., ['meg', 'eeg']) will pick channels of those types, channel name strings (e.g., ['MEG0111', 'MEG2623'] will pick the given channels. Can also be the string values “all” to pick all channels, or “data” to pick data channels. None (default) will pick all data channels. Note that channels in info['bads'] will be included if their names or indices are explicitly provided.

Ainsi, si on veut par exemple appliquer un notch en gardant le paramètre picks='all', tous les canaux vont être sélectionnés sauf ceux qui sont marqués comme bad dans le raw.info['bads'], or si ce champ n’a pas été mis à jour on va sélectionner aussi les mauvais canaux identifiés après MaxFilter.

Autre cas de figure: imaginons qu’une personne ait effectué l’étape de détection des canaux et de MaxFilter en dehors de Brainlife et les ait seulement stockées dans le channels.tsv, cela posera problème car MNE se base sur ce qu’il y a dans info['bads']. Il faut donc s’assurer que channels.tsv et info['bads'] comportent les mêmes informations (l’information sera alors dupliquée ce qui peut être dangereux).

Ce qui est fait dans mne-bids-template

Dans mne-bids-template, la fonction de détection de mauvais canaux est appliquée et ces derniers sont ensuite ajoutés au raw.info['bads'] et sont également enregistrés dans un fichier bads.tsv.

mne-bids-template a vocation à être appliqué automatiquement, donc aucun ajout de mauvais canaux à l’issue de MaxFilter n’est censé être effectué donc notre problème ne se pose pas ici (dans la partie preprocessing, il n’y a plus mention de raw.info['bads'] ou de bads.tsv).

Dans l'étape de filtrage temporel, le paramètre picks est mis à “all”.

Contacter Richard à ce sujet ?

  • No labels