Report from the first CRN coding sprint
Two weeks ago (1st-4th of August 2016) we hosted a coding sprint at Stanford aimed at making neuroimaging data processing and analysis tools more portable and accessible. We invited an international group representing many of the leading data processing pipelines (such as SPM, FSL, BROCCOLI, MRTrix, NIAK, C-PAC, Nipype, OPPNI aka NPAIRS, hyperalignment, nilearn, mindboggle and others) with two specific goals in mind:
- Enabling their pipeline to understand data organised according to BIDS (the Brain Imaging Data Structure)
- Building container images that capture all of the dependencies (libraries, other packages etc.) for each pipeline
You might have heard about BIDS – it is a new standard for organizing and describing neuroimaging datasets that we have recently proposed. Containers (also known as “operating-system-level virtualization”) are very lightweight virtual machines that can encapsulate any piece of code along with all of the libraries necessary to run it. Docker and Singularity are two examples of container technologies. The reason we are so excited about containers for reproducible data analysis is that they provide a way to package a piece of software which can run in the same way across many different computing platforms, from a laptop to a supercomputer. Creating containerized and BIDS-aware versions of all of the major neuroimaging analysis packages is critical to our center’s mission: providing data analysis as an free and open service to incentivize researchers to share data.
However, those improvement will also benefit the users of those software packages outside of our platform. BIDS is being adopted by more and more labs, which means that researchers across the globe will be increasingly it as input to data analysis pipelines. Similarly I am sure that almost anyone doing neuroimaging data processing have experienced the nightmare of installing different versions of software, setting environment variables and struggling with running things on Windows or Mac. Containers solve these problems. Since they capture all of the dependencies and all of the configuration you do not need to install or to set up anything except for the container engine. Docker makes it very easy to run containers on Mac or Windows, while Singularity allows containers to run on your local supercomputer/cluster.
The containerized BIDS aware versions of pipelines (which we call BIDS Apps) can also be used by other platforms that aim at providing science as a service or pipeline running capabilities such as XNAT, Flywheel, MINT, Girder and other. We want the outputs of our efforts to be open and reusable across many projects.
During the sprint 16 BIDS Apps were created. Even though many of them still require some work to be ready for testing, the initial amount of work done was very impressive. We would like to thank all of the participants for their hard work.
We set up a comprehensive example/template to unify the command line interface across all of the apps and also create set of sample datasets to enable Continuous Integration testing using CircleCI. In other words, the infrastructure is now in place, and after some finishing touches we will soon start deploying those apps to our production server (which is still in closed beta – email us if you would like access!). Soon everybody will be able to upload their data and with a click of a button run one of those pipelines. Snapshots of the data will be preserved together with all of the input arguments and the snapshot of the pipeline and all of its dependencies – making the whole process highly reproducible and transparent.
We only had the capacity to host a small group of developers for this first sprint, but we want to include more pipelines/tools/methods in this collection. This way of providing your tools to users is especially appealing if your pipeline has complex dependencies and/or requires significant computational resources. If you are developing a tool and would like to create a BIDS App for it, have a look at the example/template and send us an email; we’ll set up a repository to host your app and transfer admin rights to you. We also hope to have another sprint next summer, to continue the great work that started this year!