Dear Experts,
Have just pulled and built the latest MRtrix (3.1.5). Just having upgraded to Ubuntu 16.04, I was forced the build with Eigen 3.2.8 as in this post. Functionalities like mrview
seems to work fine.
Here is the **release/config** file
#!/usr/bin/python
#
# autogenerated by MRtrix configure script
#
# configure output:
#
# MRtrix build type requested: release
#
# Detecting OS: linux
# Checking for C++11 compliant compiler [g++]: 5.3.1 - tested ok
# Detecting pointer size: 64 bit
# Detecting byte order: little-endian
# Checking for variable-length array support: yes
# Checking for non-POD variable-length array support: yes
# Checking for zlib compression library: 1.2.8
# Checking for Eigen 3 library: 3.2.8
# Checking shared library generation: yes
# Checking for Qt moc: moc (version 4.8.7)
# Checking for Qt qmake: qmake (version 4.8.7)
# Checking for Qt rcc: rcc (version 4.8.7)
# Checking for Qt: 4.8.7
PATH = r'/home/finn/Software/MIRTK/mirtk-1.1/bin:/usr/lib/fsl/5.0:/home/finn/Software/freesurfer/bin:/home/finn/Software/freesurfer/fsfast/bin:/home/finn/Software/freesurfer/tktools:/home/finn/Software/freesurfer/mni/bin:/usr/lib/ants:/home/finn/Software/mrtrix3/scripts:/home/finn/Software/mrtrix3/release/bin:/home/finn/scripts:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/finn/Software/scripts:/home/finn/Software/niftyreg/bin'
obj_suffix = '.o'
exe_suffix = ''
lib_prefix = 'lib'
lib_suffix = '.so'
cpp = [ 'g++', '-c', 'CFLAGS', 'SRC', '-o', 'OBJECT' ]
cpp_flags = [ '-std=c++11', '-pthread', '-fPIC', '-march=native', '-DMRTRIX_WORD64', '-isystem', '/home/finn/Software/mrtrix3/eigen', '-Wall', '-O2', '-DNDEBUG' ]
ld = [ 'g++', 'OBJECTS', 'LDFLAGS', '-o', 'EXECUTABLE' ]
ld_flags = [ '-pthread', '-lz' ]
runpath = '-Wl,-rpath,$ORIGIN/'
ld_enabled = True
ld_lib = [ 'g++', 'OBJECTS', 'LDLIB_FLAGS', '-o', 'LIB' ]
ld_lib_flags = [ '-pthread', '-shared', '-pthread', '-lz' ]
eigen_cflags = [ '-isystem', '/home/finn/Software/mrtrix3/eigen' ]
moc = 'moc'
rcc = 'rcc'
qt_cflags = [ '-m64', '-pipe', '-O2', '-Wall', '-W', '-D_REENTRANT', '-DQT_NO_DEBUG', '-DQT_SVG_LIB', '-DQT_OPENGL_LIB', '-DQT_GUI_LIB', '-DQT_CORE_LIB', '-DQT_SHARED', '-isystem', '/usr/share/qt4/mkspecs/linux-g++-64', '-isystem', '/usr/include/qt4/QtCore', '-isystem', '/usr/include/qt4/QtGui', '-isystem', '/usr/include/qt4/QtOpenGL', '-isystem', '/usr/include/qt4/QtSvg', '-isystem', '/usr/include/qt4', '-isystem', '/usr/X11R6/include' ]
qt_ldflags = [ '-m64', '-Wl,-O1', '-L/usr/lib/x86_64-linux-gnu', '-L/usr/X11R6/lib64', '-lQtSvg', '-lQtOpenGL', '-lQtGui', '-lQtCore', '-lGL', '-lpthread' ]
nogui = False
My problems have come when I run the tests, which gives some “scattered” failures
./run_tests
logging to "testing.log"
fetching test data... OK
building testing commands... OK
running "5tt2gmwmi"... 1 of 1 passed
running "5tt2vis"... 1 of 1 passed
running "5ttedit"... 2 of 2 passed
running "amp2sh"... 1 of 1 passed
running "dirgen"... 4 of 4 passed
running "dwi2adc"... 1 of 1 passed
running "dwi2fod"... 3 of 3 passed
running "dwi2mask"... 1 of 1 passed
running "dwi2noise"... 1 of 1 passed
running "dwi2tensor"... 8 of 8 passed
running "dwidenoise"... 0 of 6 passed <-------- ERROR
running "dwiextract"... 2 of 2 passed
running "fixel2sh"... 1 of 1 passed
running "fixel2tsf"... 1 of 1 passed
running "fixelcalc"... 4 of 4 passed
running "fixelthreshold"... 2 of 2 passed
running "fod2fixel"... 3 of 3 passed
running "label2colour"... 2 of 2 passed
running "label2mesh"... 2 of 2 passed
running "labelconvert"... 2 of 2 passed
running "maskfilter"... 9 of 9 passed
running "mesh2pve"... 1 of 1 passed
running "meshconvert"... 10 of 10 passed
running "mrcalc"... 4 of 4 passed
running "mrcat"... 6 of 6 passed
running "mrconvert"... 11 of 11 passed
running "mrcrop"... 2 of 2 passed
running "mrfilter"... 8 of 8 passed
running "mrmath"... 3 of 3 passed
running "mrpad"... 4 of 4 passed
running "mrresize"... 8 of 8 passed
running "mrstats"... 5 of 5 passed
running "mrthreshold"... 10 of 10 passed
running "mrtransform"... 6 of 6 passed
running "peaks2amp"... 1 of 1 passed
running "sh2amp"... 3 of 3 passed
running "sh2peaks"... 1 of 1 passed
running "sh2power"... 1 of 1 passed
running "sh2response"... 1 of 1 passed
running "shbasis"... 4 of 4 passed
running "shconv"... 2 of 2 passed
running "tck2connectome"... 3 of 3 passed
running "tckconvert"... 3 of 4 passed <-------- ERROR
running "tckgen"... 14 of 14 passed
running "tckmap"... 4 of 4 passed
running "tcknormalise"... 1 of 1 passed
running "tckresample"... 4 of 5 passed <-------- ERROR
running "tcksample"... 7 of 8 passed <-------- ERROR
running "tcksift"... 1 of 1 passed
running "tcksift2"... 1 of 1 passed
running "tensor2metric"... 8 of 8 passed
running "transformcalc"... 5 of 5 passed
running "transformconvert"... 4 of 4 passed
running "tsfdivide"... 1 of 1 passed
running "tsfmult"... 1 of 1 passed
running "tsfsmooth"... 0 of 1 passed <-------- ERROR
running "tsfthreshold"... 2 of 2 passed
running "voxel2fixel"... 1 of 1 passed
running "warpcorrect"... 1 of 1 passed
running "warpinit"... 1 of 1 passed
When inspecting the testing.log
, all the ERRORs in dwidenoise
, tcksample
and tsfsmooth
seem related to borderline issues with precision.
One example for dwidenoise
.
# command: dwidenoise dwi.mif - | testing_diff_data - dwidenoise/dwi.mif 1e-6 [ ERROR ]
testing_diff_data: [ERROR] images "/tmp/mrtrix-tmp-YJQj8d.mif" and "dwidenoise/dwi.mif" do not match within specified precision of 9.9999999999999995e-07 (144.999 vs 144.999)
testing_diff_data: [ERROR] images "/tmp/mrtrix-tmp-YJQj8d.mif" and "dwidenoise/dwi.mif" do not match within specified precision of 9.9999999999999995e-07 (167.968 vs 167.968)
testing_diff_data: [ERROR] images "/tmp/mrtrix-tmp-YJQj8d.mif" and "dwidenoise/dwi.mif" do not match within specified precision of 9.9999999999999995e-07 (153.085 vs 153.085)
testing_diff_data: [ERROR] images "/tmp/mrtrix-tmp-YJQj8d.mif" and "dwidenoise/dwi.mif" do not match within specified precision of 9.9999999999999995e-07 (144.977 vs 144.978)
and here the two tests for the others
# command: tcksample tracks.tck tcksample/fa.mif tmp.csv -nthreads 0 -stat_tck median -precise -use_tdi_fraction -force && testing_diff_matrix tmp.csv tcksample/tdidiv.csv 1e-5 [ ERROR ]
testing_diff_matrix: [ERROR] matrices "tmp.csv" and "tdidiv.csv do not match within specified precision of 1.0000000000000001e-05 (0.0129299127 vs 0.0129419165)
## ERROR: 1 tests failed for "tcksample"
# command: tsfsmooth afd.tsf -stdev 2 tmp.tsf -force; testing_diff_tsf tmp.tsf tsfsmooth/out.tsf 0 [ ERROR ]
testing_diff_tsf: [ERROR] track scalar files "tmp.tsf" and "tsfsmooth/out.tsf" do not match within specified precision of 0 (0.282232 vs 0.282232)
## ERROR: 1 tests failed for "tsfsmooth"
but the ERRORs from testing tckconvert
and tckresample
are harder for me to understand
# command: tckconvert tracks.tck -scanner2voxel dwi.mif tmp.vtk -force && diff tmp.vtk tckconvert/out1.vtk [ ERROR ]
## ERROR: 1 tests failed for "tckconvert"
# command: tckresample tracks.tck tmp.tck -step_size 0.9 -force && testing_diff_tck tmp.tck tckresample/stepsize.tck 1e-5 [ ERROR ]
testing_diff_tck: [ERROR] 226 mismatched streamlines - test FAILED
## ERROR: 1 tests failed for "tckresample"
I guess everything is related. What should/could I do?
Cheers,
Finn