| Literature DB >> 26869916 |
Mary K Askren1, Trevor K McAllister-Day1, Natalie Koh1, Zoé Mestre2, Jennifer N Dines1, Benjamin A Korman1, Susan J Melhorn3, Daniel J Peterson1, Matthew Peverill4, Xiaoyan Qin1, Swati D Rane1, Melissa A Reilly1, Maya A Reiter1, Kelly A Sambrook1, Karl A Woelfer1, Thomas J Grabowski5, Tara M Madhyastha1.
Abstract
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.Entities:
Keywords: neuroimaging pipelines; quality assurance; reproducibility; workflow
Year: 2016 PMID: 26869916 PMCID: PMC4735413 DOI: 10.3389/fninf.2016.00002
Source DB: PubMed Journal: Front Neuroinform ISSN: 1662-5196 Impact factor: 4.081
Figure 1Conceptual two dimensional space of pipeline tools. In one dimension is customizability; how possible is it to modify the pipeline to include new neuroimaging processing algorithms? In the second dimension is programming ability. How much programming skill does it take to modify the pipeline? Relative programming ability is estimated based on our collective lab experience and current salaries for skills, where available (Dice.com., 2015). Customizability is estimated based on our lab experience.
Example 1AMakefile for skull stripping.
Example 1BNipype command for skull stripping.
Example 1CNipype wrapper for skull stripping.
Example 2A more complicated Makefile for hippocampal segmentation.
Figure 2Dependency graph of the “qa” target defined in the Makefile in Example . Rectangles represent files, and ellipses represent phony targets (that are defined for convenience and do not correspond to actual files). Yellow shaded rectangles are programs installed on the system that are part of the default Linux distribution or FSL utilities, and are important for provenance but not dependency checking.
Figure 3Example directory structure for use with Make. Symbolic links are typeset in red with arrows to the files they point to.
Example 3Creating a QA report.
Figure 4Data provenance of resting state processing with R markdown.
Example 4Registering fMRI data to standard space using FSL utilities.
Figure 5Dependency graph for Example . Rectangles represent files, and the ellipse represents a phony target (not an actual file). Yellow shaded rectangles are programs installed on the system that are part of the default Linux distribution or FSL utilities, and are important for provenance but not dependency checking. To simplify the graph we do not include full paths to these programs as we did in Figure 2.
Example 5DTI Distortion Correction with Conditionals.
Example 6Registration of feat outputs with ANTs.