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 va le voir 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 ininfo['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 ?
Informations mauvais canaux dans en accord avec BIDS
Dans BIDS, les mauvais canaux sont listés dans le fichier channels.tsv
: la colonne status précise si ce canal est mauvais (voir https://bids-specification.readthedocs.io/en/stable/04-modality-specific-files/02-magnetoencephalography.html#channels-description-_channelstsv).
Add Comment