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.
(preprint) Post-hoc modification of linear models: combining machine learning with domain information to make solid inferences from noisy data. We present a framework that decomposes a linear model (can be anything, lSVM, logistic regression, OLS, the Lasso, as long as it"s linear) into three subcomponents: the data covariance, the identified signal of interest, and a normalizer. Inspecting these subcomponents in isolation provides an intuitive way to inspect the inner workings of the model and assess its strengths and weaknesses. Furthermore, the three subcomponents may be altered, which provides a straightforward way to inject prior information and impose additional constraints. We refer to this process as “post-hoc modification” of a model and demonstrate how it can be used to achieve precise control over which aspects of the model are fitted to the data through machine learning and which are determined through domain knowledge. A Python package implementing the method 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.
(2014) Response-related potentials during semantic priming: the effect of a speeded button response task on ERPs. While doing semantic experiments, I made a mistake in the experimental design that messed up my N400 recordings. As it happens, many (many!) other studies made (and continue to make) the same mistake I did without realizing it. I wrote up an analysis of the mistake and its consequencies in this paper.
(2012) Designing a brain-computer interface using consumer grade hardware. This was a small project to build a game, using the Emotiv EPOC hardware. It's a tower defence game that you control by looking into a blinking light (the SSVEP paradigm). The game was demonstrated during the iBrain & Senses exposition and enjoyed by many people there.
(2010) Guessing What’s on Your Mind: Using the N400 in Brain Computer Interfaces. This was my master thesis. Having read about semantic priming, where presenting one word to a subject would allow him/her to process related words quicker, I wondered whether the same priming effect would occur if the subject simply thought about the priming word. Turns out it does.
My PhD thesis: Studying semantic relationships using electroencephalography.
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.
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 EEG analysis tutorials written in Jupyther 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 IPython. In addition to executing the selected lines of text, it adds MATLAB-like cell support.
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 intepreter used in the Linux version of the Inform7 IDE for creating interactive fiction games. Now maintained solely by Philip Chimento.