i ran into this error both on Ubuntu 16.04 and 14.04. UKF inputs are a 64 direction 2 shell b=2000 and 800 dwi and a whole brain mask.
here is the terminal output:
toddr@uhora:~/Software/Slicer-4.7.0-2017-06-03-linux-amd64$ "Volume" Reader has successfully read the file "/mnt/users/js/nbwr/sub-nbwr144/ses-1/dwi/eddy_cuda_repol_v2/sub-nbwr144_ses-1_dwi-topup_64dir-3sh-800-2000_1_topdn_unwarped_ec_mf_clamp1_newvecs.nhdr" "[3.43s]"
Loaded volume from file: /mnt/users/js/nbwr/sub-nbwr144/ses-1/dwi/sub-nbwr144_ses-1_dwi-topup_6S0_1_topdn_concat_unwarped_mean_brain_mask.nii.gz. Dimensions: 144x144x70. Number of components: 1. Pixel type: short.
"Volume" Reader has successfully read the file "/mnt/users/js/nbwr/sub-nbwr144/ses-1/dwi/sub-nbwr144_ses-1_dwi-topup_6S0_1_topdn_concat_unwarped_mean_brain_mask.nii.gz" "[0.11s]"
Switch to module: "Volumes"
no dataArray
Switch to module: "UKFTractography"
Found CommandLine Module, target is /home/toddr/.config/NA-MIC/Extensions-26072/UKFTractography/lib/Slicer-4.7/cli-modules/UKFTractography
ModuleType: CommandLineModule
UKF Tractography command line:
/home/toddr/.config/NA-MIC/Extensions-26072/UKFTractography/lib/Slicer-4.7/cli-modules/UKFTractography --dwiFile /tmp/Slicer/DADJG_vtkMRMLDiffusionWeightedVolumeNodeB.nhdr --seedsFile /tmp/Slicer/DADJG_vtkMRMLLabelMapVolumeNodeB.nhdr --labels 1 --maskFile /tmp/Slicer/DADJG_vtkMRMLLabelMapVolumeNodeB.nhdr --tracts /tmp/Slicer/DADJG_vtkMRMLFiberBundleNodeB.vtp --seedsPerVoxel 1 --seedFALimit 0.18 --minFA 0.15 --minGA 0.1 --numThreads -1 --numTensor 2 --stepLength 0.3 --Qm 0 --recordLength 0.9 --maxHalfFiberLength 250 --recordNMSE --freeWater --recordFA --recordTrace --recordFreeWater --recordTensors --Ql 0 --Qw 0 --Qkappa 0.01 --Qvic 0.004 --Rs 0 --sigmaSignal 0 --maxBranchingAngle 0 --minBranchingAngle 0
UKF Tractography standard output:
Found 24 cores on your system.
Running tractography with 24 thread(s).
Using the 2T simple model with free water estimation. Setting the default parameters accordingly:
"*": set by user
"-": default setting
- minFA: 0.15
* seedFALimit: 0.18
- Qm: 0.001
- Ql: 50
- Rs: 0.02
* stepLength: 0.3
* recordLength: 0.9
- Qw: 0.0015
* minGA: 0.1
- seedsPerVoxel: 1
Using 2-tensor simple model with free water estimation.
Using constrained filter
Branching disabled
Number of non-zero gradients: 64
Number of zero gradients: 1
Permuting the axis order to: 0 1 2 3
Resizing the data to: 64 144 144 70
Computing the baseline image
Dividing the signal by baseline image
Data normalization finished!
Estimating seed tensors:
Tracing 218956 primary fibers:
branch_seeds size: 0
fiber size after postprocessibers: 109126
nmse_avg=9.51002e+15
H count = 0
UKF Tractography completed without errors
error: [/home/toddr/Software/Slicer-4.7.0-2017-06-03-linux-amd64/bin/SlicerApp-real] exit abnormally - Report the problem.
[1]+ Exit 1 ./Slicer
toddr@uhora:~/Software/Slicer-4.7.0-2017-06-03-linux-amd64$
Thanks for the data. I’ve run UKFTractography on Windows and after running for 2 hours, it had problems with writing its output (maybe I have run out of disk space). I’ll run it again on a different computer and let you know how it went.
I’ve noticed one potential issue: origin and spacing of the two volumes are slightly different (after 3 decimal digits). I don’t know if this is a problem for this particular module, but it may worth trying to change spacing and origin information manually to the same values (in Volumes module) and see if it makes any difference.
@ihnorton Do you have any comments on this? Do you know who maintains UKFTractography? A small, unrelated issue: SlicerDMRI extension should be added as a dependency to UKFTractography.
Hi Andras thanks for looking into this. UKF is maintained by Yogesh Rathi’s group at the PNL and by the SlicerDMRI group. For testing, seeding from a small region (ROI input) can work better than seeding from the entire brain mask. This would help check if the input data is the issue, or if it is output file writing issues. It really looks like UKF worked, so the output may be an issue. For large datasets and many seeds per voxel, with many output attributes saved, the output can reach 5GB per subject.
I don’t think mutual dependency is possible. If there is circular dependency then the common part should be extracted into a separate extension, or UKFTractography extension should be hidden from the extension manager (or clearly displayed as a utility extension that should not be installed by itself).
I did some basic tests on small ROIs with your data and everything works as expected. So we may be hitting a de-facto size limit in some code path. I don’t know if anyone regularly runs UKF with every option checked like that so we may have avoided this by luck so far.
Since Slicer crashed, if you have not restarted yet, then the file above may still exist – could you please check? If it exists, copy somewhere semi-permanent (/tmp/ is wiped on reboot by most linuxes). Please let us know the file size, and try to load directly. If it is not outrageously large (say less than ~1GB), please share it and I will investigate.
I’ll try some tests with larger regions, but that may take a while.
Hi definitely increase the output step length to 1.8 or 2mm, so that data are only saved every 2mm along the tracts. This should decrease file size by half and improve performance for every analysis.
Hi do you mean voxels are 1mm^3? That is independent of how the tractography is saved. Tractography computation always happens at much higher than 1mm (step size is 0.2mm in UKF but that is an internal default, not changed by user). Visualization and quantitation will not appreciably change if you save points every 2mm along the tract.
It would be good for you to test with a smaller seed ROI to verify if the pipeline works on your computer. Next try seeding without saving any values along the tract, to see if the whole brain tractography is working. If so then check the disk space available at /tmp/Slicer. If this is limited, it could prevent saving the high res tractography with so much data stored. Note that most of the values (FA, MD) can and will be recomputed from the tensors if you measure with Slicer. The free water must be saved if that will be studied later. This all depends on your use case.
You’re welcome. I’m glad it is working. FYI If you happen to be running studies with multiple subjects you can do quality control of many output tractography vtks rapidly using our whitematteranalysis tool: https://github.com/SlicerDMRI/whitematteranalysis