Building

Dockerfiles for pipeline images are created using Neurodocker and can therefore work with any Debian/Ubuntu or Red-Hat based images (ensuring that the value for base_image>package_manager is set to the correct value, i.e. "apt" for Debian based or "yum" for Red-Hat based). Arcana installs itself into the Docker image within an Anaconda environment named "pipeline2app". Therefore, it shouldn't conflict with packages on existing Docker images for third-party pipelines.

Extending the YAML format used to define the command configurations, the full configuration required to build an XNAT docker image looks like

schema_version: 1.0
title: FMRIB Scientific Library (FSL)
version:
    package: &package_version '6.0.1'
    build: '1'
authors:
    - name: Thomas G. Close
      email: thomas.close@sydney.edu.au
base_image:
    name: brainlife/fsl'
    tag: *package_version
    package_manager: apt
packages:
    neurodocker:
        dcm2niix: v1.0.20201102
    pip:
        pydra-dcm2niix:  # Uses the default version on PyPI
docs:
    info_url: https://fsl.fmrib.ox.ac.uk/fsl/fslwiki
command:
    task: pydra.tasks.fsl.preprocess.fast:FAST
    description:
        FAST (FMRIBs Automated Segmentation Tool) segments a 3D image of
        the brain into different tissue types (Grey Matter, White Matter,
        CSF, etc.), whilst also correcting for spatial intensity variations
        (also known as bias field or RF inhomogeneities).
    inputs:
        in_files:
          datatype: medimage/nifti-gz
          column_defaults:
            datatype: medimage/dicom-series
          help: Anatomical image to segment into different tissues
    outputs:
        tissue_classes:
          datatype: medimage/nifti-gz
          path: fast/tissue-classes
          help: Segmented tissue classes
        probability_maps:
          datatype: medimage/nifti-gz
          path: fast/probability-map
          help: Probability maps for tissue classes
    parameters:
        use_priors:
          help: Use priors in tissue estimation
        bias_lowpass:
          help: Low-pass filter bias field
    configuration:
        output_biasfield: true
        bias_lowpass: 5.0
    row_frequency: session

The CLI command to build the image from the YAML configuration is

$ pipeline2app make xnat 'your-pipeline-config.yml'
Successfully built "FSL" image with ["fast"] commands

To build a suite of pipelines from a series of YAML files stored in a directory tree simply provide the root directory instead and Arcana will walk the sub-directories and attempt to build any YAML files it finds, e.g.

$ pipeline2app make xnat 'config-root-dir'
./config-root-dir/mri/neuro/fsl.yml: FSL [fast]
./config-root-dir/mri/neuro/mrtrix3.yml: MRtrix3 [dwi2fod, dwi2tensor, tckgen]
./config-root-dir/mri/neuro/freesurfer.yml: Freesurfer [recon-all]
...

Autodocs

Documentation can be automatically generated using from the pipeline configuration YAML files using

$ pipeline2app make-docs <path-to-yaml-or-directory> <docs-output-dir>

Generated HTML documents will be placed in the output dir, with pipelines organised hierarchically to match the structure of the source directory.