I’m a neuroscientist, studying the human brain. Through advanced data analysis of brain imaging data (EEG, MEG, fMRI) I try to understand how our brain performs complex cognitive tasks. Currently, my research focuses on language comprehension: “how does our brain recognize speech, words and pictures in an instant?”
Most of the time, I'm working on problems in the form of "extract evidence of process X happening in the brain from signal Y". Preferably, "process X" is something concrete that we are pretty sure must be happening and "signal Y" is data collected during a well thought-out experiment designed to elicit the process. My analysis methods currently include many types of linear models (multivariate regression, SVMs, beamformers, etc.), representational similarity analysis (RSA) and functional connectivity analysis.
As a proponent of open science, I always strive to publish my analysis pipelines, as well as contribute to various larger open source efforts, such as MNE-Python.
(2020) Seven quick tips for analysis scripts in neuroimaging. Unorganized heaps of analysis code are a growing liability as data analysis pipelines are getting longer and more complicated. This is worrying, as neuroscience papers are getting retracted due to programmer error. In this paper, some guidelines are presented that help keep analysis code well organized, easy to understand and convenient to work with. Importantly, I present an example pipeline that implements all the guidelines and is meant as a shining example of how to write analysis pipelines the right way. Find the code here.
(2020) Post-hoc modification of linear models: combining machine learning with domain information to make solid inferences from noisy data. Machine learning models have enabled the use of increasingly ambitious experimental designs. However, it can be daunting to figure out what a model is “learning” about the data and assert control over it. In this paper, we propose a framework for understanding linear models (e.g. OLS, lSVM, logistic regression, LDA, etc.) that allows for a back-and-forth between the learning algorithm and the researcher. The accompanying code can be found at: https://github.com/wmvanvliet/posthoc.
(2018) Analysis of functional connectivity and oscillatory power using DICS: from raw MEG data to group-level statistics in Python. In this paper, we go over all the steps required to perform all-to-all functional connectivity analysis of a multi-subject MEG dataset, starting from the raw data up to the final group statistics and publication-ready figures. Dynamic Imaging of Coherent Sources (DICS) was used to estimate cortical sources of oscillatory power and coherence between such sources on the Wakeman and Henson 2015 dataset. The accompaning code can be found at: https://github.com/wmvanvliet/conpy.
(2018) Exploring the organization of semantic memory through unsupervised analysis of event-related potentials. Our brains are very efficient in reading texts. We know that one of the tricks employed by the brain is to make use of semantic connections between words as they are read (the so called "priming" effect). To find out which type of relationships are used, I propose in this paper to use a scheme where, out of a collection of words, all possible pairings are presented to a subject. Then, based on the analysis of the EEG data, clusters can be formed of words that prime each other.
(2016) Single-trial ERP component analysis using a spatio-temporal LCMV beamformer. In this paper, I propose to use beamformer filters to perform ERP analysis. While these have been used for source localization in the past, they are actually wonderfully flexible filters that can do a lot more! In this paper, a framework is introduced to obtain amplitude measurements of ERP components with great accuracy. The described methods are evaluated using software simulations and real EEG data. A simple Python implementation of the modified LCMV beamformer filter can be found here. It is also incorporated in the Psychic package.
See Google Scholar for my other publications.
I maintain a blog about useful tools that make life on a computer less irritating. This is mostly aimed at the Linux and OSX command line, but occasionally I cover other programs that appear in the life of a scientist.
MNE-RSA is a package that interfaces with MNE-Python to perform representational similarity analysis (RSA) on MEG and fMRI data. The RSA is computed using a “searchlight” approach. The package was used for the analysis in Hultén et al., 2018.
Posthoc is a Python library for constructing and manipulating linear machine learning models. It is designed to interoperate with the linear models of scikit-learn. This package allows for the construction of "beamformer" models for generic decoding problems (instead of just source estimation), doing the Haufe trick to compute patterns from weigths, and of course, doing full-blown post-hoc modification of linear models, as explained in van Vliet and Salmelin, 2019.
Conpy is a Python library implementing the DICS beamformer for connectivity analysis and power mapping on the cortex. This is a Python reimplementation of the MATLAB code originally developed for J. Gross et al. 2011, PNAS. This repository also holds the code complementing our submission to the Frontiers Research Topic: From raw MEG/EEG to publication: how to perform MEG/EEG group analysis with free academic software.
MNE Python is a Python module for MEG and EEG analysis, developed by a large number of contributors from many different countries and used in laboratories all over the world. I became a regular contributor to this project in 2014.
Jupyter Qt Console is a frontend for the Jupyter project. Also used by the Spyder scientific IDE. The Qt console is a very lightweight application that largely feels like a terminal, but provides a number of enhancements only possible in a GUI, such as inline figures, proper multi-line editing with syntax highlighting, graphical calltips, and much more. The Qt console can use any Jupyter kernel. I became a regular contributor to this project in 2017.
Some MEG/EEG analysis tutorials written in Jupyter notebook form. Covers basic frequency and event-related potential analysis in plain python. This is meant for students making their first steps in the world of EEG analysis.
Psychic is a comprehensive Python module for EEG analysis. Started by Boris Reuderink and taken over by myself, it contains all of the algorithms used during our respective PhD projects.
Jupyter-vim is my branch of Paul Ivanov's integration of Vim and Jupyter. In addition to executing the selected lines of text, it adds MATLAB-like cell support. Others have since contributed many things to it.
Kerbulator is a mod for Kerbal Space Program that allows you to evaluate mathematical expressions in the game. I use this to calculate optimal orbital maneuvers.
Chimara is an GLK client to play interactive fiction games. It is written as a GTK component so it can easily be integrated in other GTK programs. As such, it is the interpreter used in the Linux version of the Inform7 IDE for creating interactive fiction games. Now maintained solely by Philip Chimento.