MRtrix 3.0.4 release

We are pleased to announce the immediate release of MRtrix 3.0.4.

This is a bug fix release – this should not affect ongoing studies, other than in exceptionally rare circumstances. We recommend users upgrade as soon as practical, using the instructions provided on our downloads pages (for precompiled packages), or the usual procedure for installations from source.

See the full changelog below for details.

All the best from the MRtrix3 team!

1 Like

Full changelog

Package setup


  • Multiple changes (2):
    • Embed licenses of external neuroimaging software packages in the container.
    • Fix missing FSL command fslsplit when running dwifslpreproc with -eddy_options " ... --cnr_maps ..."
    • Fix direct invocation of Singularity containers as executable
    • Fix mrview appearance in Singularity when built based on the Docker container.
    • Various fixes to mitigate warning messages when invoking containerized mrview
      (Note that some of these involve revisions to documentation instructions)


Specific commands

Multiple commands

DICOM handling

PNG handling

  • Export: Exception on too few axes
    If command-line usage results in too few axes to produce one or more meaningful PNG images, produce a meaningful error message rather than crashing.

Streamlines data

  • Avoid invalid memory access when ROI is malformed in tck header
    If a .tck file header contains an entry for the ROI that doesn’t have the expected 2 fields, this leads to a segfault when using e.g. tckinfo or tck2fixel. The change here consists simply of making sure that if only one token is parsed, a second empty string is added as the second, which then avoids the invalid memory access, and permits these headers to be used (the alternative is simply to ignore them, but I’m not sure that’s the best thing to do here).



  • Multiline key-value metadata
    Added handling of struct field with cell array values, which otherwise cause an error as fprintf doesn’t take cell array arguments.


  • Fix default MRTRIX_LOGLEVEL
    Default value for environment variable MRTRIX_LOGLEVEL was being erroneously written as an integer type rather than a string. In some environments, the subprocess module attempts to check whether environment variables correspond to filesystem paths, and this results in a TypeError due to this specific envvar not being a string.

  • mrtrix3.utils.RunList
    Pass kwargs to run.command().

  • Fix help page generation
    Handle upstream changes in ArgParse, whereby the name for the default option group has now been changed from ‘optional arguments’ to the (arguably more sensible) ‘options’.