Using Make for Reproducible and Parallel Neuroimaging Workflow and Quality-Assurance - Askren, Mary K.; McAllister-Day, Trevor K.; Koh, Natalie; Mestre, Zoé; Dines, Jennifer N.; Korman, Benjamin A.; Melhorn, Susan J.; Peterson, Daniel J.; Peverill, Matthew; Qin, Xiaoyan; Rane, Swati D.; Reilly, Melissa A.; et al. (Frontiers in Neuroinformatics, 2016)
The contribution of this paper is to describe how we can program neuroimaging workflow using Make, a software development tool designed for describing how to build executables from source files. A makefile (or a file of instructions for Make) consists of a set of rules that create or update target files if they have not been modified since their dependencies were last modified. These rules are processed to create a directed acyclic dependency graph that allows multiple entry points from which to execute the workflow. We show that using Make we can achieve many of the features of more sophisticated neuroimaging pipeline systems, including reproducibility, parallelization, fault tolerance, and quality assurance reports. We suggest that Make permits a large step toward these features with only a modest increase in programming demands over shell scripts. This approach reduces the technical skill and time required to write, debug, and maintain neuroimaging workflows in a dynamic environment, where pipelines are often modified to accommodate new best practices or to study the effect of alternative preprocessing steps, and where the underlying packages change frequently. This paper has a comprehensive accompanying manual with lab practicals and examples (see Supplemental Materials) and all data, scripts, and makefiles necessary to run the practicals and examples are available in the “makepipelines” project at NITRC.