Installation of MrTrix 3.0_RC2 on HPC Systems

MrTrix is "a set of tools to perform various types of diffusion MRI analyses, from various forms of tractography through to next-generation group-level analyses". It is mostly designed with post-processing visualisation in mind, but for intensive computational tasks it can make use of high-performance computing systems. It is not designed with messing-passing in mind, but it can be useful for job arrays.

Download the tarball from github and extract. Curiously, MrTrix has had version inflation, moving from 0.x versions to 3.x versions. One is nevertheless thankfully that they use conventional versioning numbers at all, given how many software projects don't bother these days (every commit is a version, right?).

MrTrix has a number of dependencies, and in this particular example Eigen/3.2.9, Python/3.5.2, and GMP/6.1.1 are included in the environment. The build system block is a "ConfigureMakePythonPackage" to use the Easybuild vernacular. This means build a Python package and module with python configure/make/make install. The configuration option configure -nogui is recommended - if not, start adding the appropriate dependencies to the installation.

Now one the annoying things about this use of the Python ConfigureMake build block is that prefix commands typical in standard autotools are absent. Thus one must add these after installation. As one of their developers has said "our configure script, while written is python, is completely specific to MRtrix3 – there’s no way you could possibly have come across anything like it before."

As usual, HPC systems (and development enviroments) find it very useful to have to have multiple versions of the same software available. Thus, create an appropriate for directory software to live (e.g., mkdir -p /usr/local/MRtrix/3-3.0_RC3).

Following this there MRtrix software will be built in the source directory, again, less than ideal. Separation between source, build, and install directories would be a useful improvement. However these can be copied over to the preferred directories.

cp -r bin/ lib/ share/ docs/ /usr/local/MRtrix/3-3.0_RC3

Copying over the docs directory is particularly important, as it provides RST files of core concepts and examples. It is essential that these are provided on a manner that are readable by users on the system they are using without context-switching and in their immediate environment (external sources may not be available). Others have expressed disagreement. but it is fairly obvious that they are not speaking from a position of familiarity with such environments.

The following is a sample EasyBuild script for MRtrix (MRtrix-3.0_RC2-GCC-6.2.0-Python-3.5.2.eb).

easyblock = 'ConfigureMakePythonPackage'
name = 'MRtrix'
version = '3.0_RC2'
homepage = 'http://www.brain.org.au/software/index.html#mrtrix'
description = """MRtrix provides a set of tools to perform diffusion-weighted MR white-matter tractography in a manner robust to crossing fibres, using constrained spherical deconvolution (CSD) and probabilistic streamlines."""
toolchain = {'name': 'GCC', 'version': '6.2.0'}
toolchainopts = {'cstd': 'c++11'}
configopts = ['configure -nogui']
buildcmd = ['build']
source_urls = ['https://github.com/MRtrix3/mrtrix3/archive/']
sources = ['%(version)s.tar.gz']
checksums = ['88187f3498f4ee215b2a51d16acb7f2e6c33217e72403a7d48c2ec5da6e2218b']
dependencies = [
('Eigen', '3.2.9'),
('Python', '3.5.2'),
('GMP', '6.1.1'),
]
moduleclass = 'bio'