Error when run the dwiintensitynorm

Dear MRtrix3 users,
I’m still familiarizing myself with MRtrix3.
I’ve been following the Fibre Density Cross-section tutorial,I receive the below error after running the following command:
dwiintensitynorm /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm/dwi_input/ /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm/mask_input/ /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm/dwi_output/ /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm/fa_template.mif /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm/fa_template_wm_mask.mif

error happened:
dwiintensitynorm: performing global intensity normalisation on 2 input images
dwiintensitynorm: Generated temporary directory: /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/
Command: cp -R -L dwiintensitynorm/mask_input /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/mask_input
dwiintensitynorm: Changing to temporary directory (/media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/)
dwiintensitynorm: Computing FA images
Command: dwi2tensor /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm/dwi_input/dwi_denoise_preproc_bias.mif -mask /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm/mask_input/dwi_denoise_preproc_bias.mif - | tensor2metric - -fa fa/dwi_denoise_preproc_bias.mif
Command: dwi2tensor /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm/dwi_input/IN.mif -mask /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm/mask_input/IN.mif - | tensor2metric - -fa fa/IN.mif
dwiintensitynorm: Generating FA population template
Command: population_template fa -mask_dir /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/mask_input fa_template.mif -type rigid_affine_nonlinear -rigid_scale 0.25,0.5,0.8,1.0 -affine_scale 0.7,0.8,1.0,1.0 -nl_scale 0.5,0.75,1.0,1.0,1.0 -nl_niter 5,5,5,5,5 -tempdir population_template -linear_no_pause -nocleanup
dwiintensitynorm:
dwiintensitynorm: [ERROR] Command failed: population_template fa -mask_dir /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/mask_input fa_template.mif -type rigid_affine_nonlinear -rigid_scale 0.25,0.5,0.8,1.0 -affine_scale 0.7,0.8,1.0,1.0 -nl_scale 0.5,0.75,1.0,1.0,1.0 -nl_niter 5,5,5,5,5 -tempdir population_template -linear_no_pause -nocleanup (dwiintensitynorm:96)
dwiintensitynorm: Output of failed command:
population_template: numpy not found. using replacement functions
population_template: Generating a population-average template from 2 input images
population_template: initial alignment of images: mass
population_template: linear registration stages:
population_template: (00) rigid scale: 0.2500, niter: 100, no reorientation
population_template: (01) rigid scale: 0.5000, niter: 100, no reorientation
population_template: (02) rigid scale: 0.8000, niter: 100, no reorientation
population_template: (03) rigid scale: 1.0000, niter: 100, no reorientation
population_template: (04) affine scale: 0.7000, niter: 500, no reorientation
population_template: (05) affine scale: 0.8000, niter: 500, no reorientation
population_template: (06) affine scale: 1.0000, niter: 500, no reorientation
population_template: (07) affine scale: 1.0000, niter: 500, no reorientation
population_template: nonlinear registration stages:
population_template: (00) nonlinear scale: 0.5000, niter: 5, no reorientation
population_template: (01) nonlinear scale: 0.7500, niter: 5, no reorientation
population_template: (02) nonlinear scale: 1.0000, niter: 5, no reorientation
population_template: (03) nonlinear scale: 1.0000, niter: 5, no reorientation
population_template: (04) nonlinear scale: 1.0000, niter: 5, no reorientation
population_template: Generated temporary directory: /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/population_template
population_template: Changing to temporary directory (/media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/population_template)
population_template: Generating initial template
Command: mraverageheader /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/fa/IN.mif /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/fa/dwi_denoise_preproc_bias.mif average_header.mif -fill
Command: mrtransform /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/mask_input/IN.mif -interp nearest -template average_header.mif masks_transformed/IN.mif
Command: mrtransform /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/mask_input/dwi_denoise_preproc_bias.mif -interp nearest -template average_header.mif masks_transformed/dwi_denoise_preproc_bias.mif
Command: mrmath masks_transformed/IN.mif masks_transformed/dwi_denoise_preproc_bias.mif max mask_initial.mif
Command: mrcrop average_header.mif -mask mask_initial.mif average_header_cropped.mif
Function: posix.remove(mask_initial.mif)
Function: posix.remove(average_header.mif)
Function: shutil.move(average_header_cropped.mif, average_header.mif)
Function: posix.remove(masks_transformed/IN.mif)
Function: posix.remove(masks_transformed/dwi_denoise_preproc_bias.mif)
Command: mrregister /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/fa/IN.mif average_header.mif -mask1 /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/mask_input/IN.mif -rigid_scale 1 -rigid_niter 0 -type rigid -noreorientation -rigid_init_translation mass -datatype float32 -rigid linear_transforms_initial/IN.txt
Command: mrtransform /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/fa/IN.mif -linear linear_transforms_initial/IN.txt -datatype float32 input_transformed/IN_translated.mif
Command: mrtransform /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/mask_input/IN.mif -linear linear_transforms_initial/IN.txt -datatype float32 masks_transformed/IN_translated.mif
Command: mrregister /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/fa/dwi_denoise_preproc_bias.mif average_header.mif -mask1 /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/mask_input/dwi_denoise_preproc_bias.mif -rigid_scale 1 -rigid_niter 0 -type rigid -noreorientation -rigid_init_translation mass -datatype float32 -rigid linear_transforms_initial/dwi_denoise_preproc_bias.txt
Command: mrtransform /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/fa/dwi_denoise_preproc_bias.mif -linear linear_transforms_initial/dwi_denoise_preproc_bias.txt -datatype float32 input_transformed/dwi_denoise_preproc_bias_translated.mif
Command: mrtransform /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/mask_input/dwi_denoise_preproc_bias.mif -linear linear_transforms_initial/dwi_denoise_preproc_bias.txt -datatype float32 masks_transformed/dwi_denoise_preproc_bias_translated.mif
Command: mraverageheader input_transformed/IN_translated.mif input_transformed/dwi_denoise_preproc_bias_translated.mif average_header_tight.mif
Command: mrpad -uniform 10 average_header_tight.mif average_header.mif -force
Function: posix.remove(average_header_tight.mif)
Command: mrtransform masks_transformed/IN_translated.mif masks_transformed/IN.mif -interp nearest -template average_header.mif -datatype float32
Command: mrtransform masks_transformed/dwi_denoise_preproc_bias_translated.mif masks_transformed/dwi_denoise_preproc_bias.mif -interp nearest -template average_header.mif -datatype float32
Command: mrmath masks_transformed/IN.mif masks_transformed/dwi_denoise_preproc_bias.mif max mask_translated.mif
Command: mrcrop average_header.mif -mask mask_translated.mif average_header_cropped.mif
Command: mrpad -uniform 10 average_header_cropped.mif -force average_header.mif
Function: posix.remove(average_header_cropped.mif)
Command: mrtransform masks_transformed/IN_translated.mif masks_transformed/IN.mif -interp nearest -template average_header.mif -datatype float32 -force
Function: posix.remove(masks_transformed/IN_translated.mif)
Command: mrtransform masks_transformed/dwi_denoise_preproc_bias_translated.mif masks_transformed/dwi_denoise_preproc_bias.mif -interp nearest -template average_header.mif -datatype float32 -force
Function: posix.remove(masks_transformed/dwi_denoise_preproc_bias_translated.mif)
Function: posix.remove(mask_translated.mif)
Command: mrtransform input_transformed/IN_translated.mif input_transformed/IN.mif -interp linear -template average_header.mif -datatype float32
Function: posix.remove(input_transformed/IN_translated.mif)
Command: mrtransform input_transformed/dwi_denoise_preproc_bias_translated.mif input_transformed/dwi_denoise_preproc_bias.mif -interp linear -template average_header.mif -datatype float32
Function: posix.remove(input_transformed/dwi_denoise_preproc_bias_translated.mif)
Command: mrmath input_transformed/dwi_denoise_preproc_bias.mif input_transformed/IN.mif mean initial_template.mif
population_template: Optimising template with linear registration
Command: mrregister /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/fa/IN.mif initial_template.mif -force -mask1 /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/mask_input/IN.mif -rigid_scale 0.25 -rigid_niter 100 -noreorientation -type rigid -datatype float32 -rigid linear_transforms_0/IN.txt
Command: transformcalc linear_transforms_0/IN.txt decompose linear_transforms_0/IN.txtdecomp
Function: posix.remove(linear_transforms_0/IN.txtdecomp)
Command: mrregister /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/fa/dwi_denoise_preproc_bias.mif initial_template.mif -force -mask1 /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/mask_input/dwi_denoise_preproc_bias.mif -rigid_scale 0.25 -rigid_niter 100 -noreorientation -type rigid -datatype float32 -rigid linear_transforms_0/dwi_denoise_preproc_bias.txt
Command: transformcalc linear_transforms_0/dwi_denoise_preproc_bias.txt decompose linear_transforms_0/dwi_denoise_preproc_bias.txtdecomp
Function: posix.remove(linear_transforms_0/dwi_denoise_preproc_bias.txtdecomp)
Command: transformcalc linear_transforms_0/dwi_denoise_preproc_bias.txt linear_transforms_0/IN.txt average linear_transform_average.txt -force -quiet
Command: transformcalc linear_transform_average.txt rigid linear_transform_average.txt -force -quiet
Command: transformcalc linear_transform_average.txt invert linear_transform_average_inv.txt -force -quiet
Function: main.loadtxt(linear_transform_average_inv.txt)
Traceback (most recent call last):
File “/usr/local/mrtrix3/bin/population_template”, line 616, in
savetxt(os.path.join(‘linear_transforms_%i’ % level, ‘%s.txt’ % i.prefix), transform)
File “/usr/local/mrtrix3/bin/population_template”, line 62, in savetxt
fh.write((format % tuple(row) + ‘\n’))
TypeError: a bytes-like object is required, not 'str’
dwiintensitynorm: Changing back to original directory (/media/mayday/document/testMRtrix3/baijinfeng)
dwiintensitynorm: Script failed while executing the command: population_template fa -mask_dir /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/mask_input fa_template.mif -type rigid_affine_nonlinear -rigid_scale 0.25,0.5,0.8,1.0 -affine_scale 0.7,0.8,1.0,1.0 -nl_scale 0.5,0.75,1.0,1.0,1.0 -nl_niter 5,5,5,5,5 -tempdir population_template -linear_no_pause -nocleanup
dwiintensitynorm: For debugging, inspect contents of temporary directory: /media/mayday/document/testMRtrix3/baijinfeng/dwiintensitynorm-tmp-G63C9P/

Any ideas? I’d really appreciate any help!
Cheers,
Mirabelle

This is a bug in population_template specific to python 3 and numpy not being present. You could install numpy as a workaround until the fix is merged with master.

If you are on macOS and have homebrew installed:
brew install numpy

You might also find that
/usr/local/bin/python2 dwiintensitynorm ...
works but I am not sure about that one.

edit:
pull request is here

Thank you for you help.
I switch the verison of Python from 3 to 2.7 by running the following command:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
sudo update-alternatives --config python

And I choose the Python 2.7. Problem solved!
Mirabelle