I always thought programming was for nerds; definitely not something for the average psychologist. God, was I wrong… In fact, I found out that I really enjoy programming and writing (open-source!) software, so below I list some of the software-related projects I am working on.
skbold: Utilities and tools for machine learning on BOLD-fMRI data
Inspired by the scikit-learn (often abbreviated as sklearn) machine learning package in Python, I created skbold - a package aimed at complementing scikit-learn in the organization, representation, and (pre)processing of fMRI data for machine learning (“decoding”) analyses. The package aims for flexibility in the sense that the annoying part of building decoding pipelines (such as getting it in the right format, keeping track of model performance) is taken care of, while the users can still build the actual pipelines using scikit-learn functionality.
In Amsterdam, the Spinoza Centre for Neuroimaging hosts three MRI-scanners (two 3T, one 7T) across two locations (one at the Roeterseiland campus and one at near the Amsterdam Medical Center). Together with a group of other researchers affiliated with the Spinoza Centre (primarily from the Knapen lab, Donner lab), I’ve been working on Spynoza, a Python package for (f)MRI preprocessing and analysis based on the awesome Nipype pipelining package. My aim is to, eventually, replace all the (old) MATLAB-based MRI-pipelines at the University of Amsterdam by Spynoza, and consequently make the (f)MRI research at my university a little bit more transparent and reproducible.
While working on Spynoza during the BrainHack organized by the Spinoza centre, I got to know Tim van Mourik from the Donders Institute, who was working on an open-source pipelining package with a graphical user interface named “Porcupine”, which is short for “PORcupine Creates Ur PipelINE” - in Tim’s words “the worst self-referencing acronym with bad capitalisation and annoying use of slang.” Together with Tomas Knapen, we started working together on Porcupine.
In short, Porcupine is a graphical application that allows you build processing pipelines by defining “nodes” - that implement some function (such as an MRI-processing step) - and connections between them, and importantly then is able to generate the code that would be needed to actually run the pipeline as defined in Porcupine! For example, one framework Porcupine supports is the amazing Nipype framework. So, you could for example build a Porcupine-pipeline implementing an MRI-preprocessing pipeline based on “nodes” from different software packages (such as FSL, AFNI, and Freesurfer) and subsequenly let Porcupine generate the (Nipype-based) code that you can actually run!
While the software is still very much in development, we encourage you to check it out! Installers are available here. We hope to publish a preprint about the package soon, which will include many examples and documentation on how to use it.
Widespread sharing of neuroimaging data is, unfortunately, not common in the neuroscience community. In the past years, some researchers have proposed a common format for MRI datasets - the Brain Imaging Data Structure (BIDS) - which aims at improving data sharing, reproducibility, and transparency through providing a guidelines on how to organize your data (which can be, subsequently, be uploaded to openneuro.org every easily).
Organizing your raw data into the required BIDS-format, however, can be painstakingly time-consuming: you’ve to convert your files in the right format (e.g. Philips par/rec or DICOMs to nifti), rename your files, and extract the necessary meta-data. I’ve written a small package that automatically converts your “raw”/unstructured dataset to BIDS, given a config file that you provide (such that the software “knows” which how to convert/format/rename your files). It has been tested on several datasets recorded at the Philips 3T and 7T scanners from the Spinoza Centre for Neuroimaging.
The code can be found on Github;
no documentation exists as of now, but the README should contain sufficient information on how to use the