Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem with NODDI option on MACOS #127

Open
magictodd opened this issue Jul 9, 2020 · 16 comments
Open

Problem with NODDI option on MACOS #127

magictodd opened this issue Jul 9, 2020 · 16 comments

Comments

@magictodd
Copy link

We were able to get slicer version of UKF Tractography with --NODDI option to work well on Linux but
with the same data, the --NODDI option will crash using MACOS version. The 2 tensor model works fine on MACOS but not the NODDI option. Can you please look into it? We used three data files - one for the dwi input, one for the label or seed input, and one for the mask input file. I can send you the three sets of nhdr files if that will will help you to debug.

@tashrifbillah
Copy link
Collaborator

Hi @magictodd , are you using UKFTractography as part of Slicer or as a command line tool?

@magictodd
Copy link
Author

magictodd commented Jul 9, 2020 via email

@tashrifbillah
Copy link
Collaborator

Can you provide the traceback on crash?

@magictodd
Copy link
Author

magictodd commented Jul 9, 2020 via email

@tashrifbillah
Copy link
Collaborator

I have enclosed @magictodd 's traceback in an appropriate markdown (```vim ```) so it's better legible:

Using the 2T simple model. Setting the default parameters accordingly:

"*": set by user

"-": default setting

- stoppingFA: 0.15

* seedingThreshold: 0.18

- Qm: 0.001

* Qkappa: 0.01

- Rs: 0.02

* stepLength: 0.3

* recordLength: 0.9

* Qvic = Qviso: 0.004

* stoppingThreshold: 0.1

- seedsPerVoxel: 1

Found 8 cores on your system.

Running tractography with 8 thread(s).

_nrrdEncodingRaw_read: WARNING: finished reading raw data, but file not at EOF

Number of non-zero gradients: 32

Number of zero gradients: 1

Permuting the axis order to: 3 0 1 2

Resizing the data to: 32 192 192 48

Computing the baseline image

Dividing the signal by baseline image

Converting the world coordinate system to RAS

Data normalization finished!

Using NODDI 2-Fiber model.

Branching disabled

Using constrained filter

A 9.87189e+146  8.07828e+147  8.41855e+147 -1.08662e+147 -8.15854e+145 -3.15072e+147 -2.34428e+148   4.0059e+148 -5.78505e+146 -3.27748e+145   3.0741e+147

 8.07828e+147  2.69459e+140  -1.3473e+140 -2.94721e+139 -5.26287e+137  1.68412e+139 -9.43107e+140 -2.69459e+140 -3.15772e+139 -3.94716e+137             0

 8.41855e+147  -1.3473e+140   7.0872e+295 -9.14779e+294 -6.86831e+293 -2.65245e+295 -1.97354e+296  3.37238e+296 -4.87017e+294 -2.75916e+293  2.58795e+295

-1.08662e+147 -2.94721e+139 -9.14779e+294  1.18075e+294  8.86526e+292  3.42365e+294  2.54735e+295  -4.3529e+295  6.28617e+293  3.56139e+292 -3.34039e+294

-8.15854e+145 -5.26287e+137 -6.86831e+293  8.86526e+292  6.65618e+291  2.57053e+293  1.91259e+294 -3.26823e+294  4.71975e+292  2.67395e+291 -2.50802e+293

-3.15072e+147  1.68412e+139 -2.65245e+295  3.42365e+294  2.57053e+293  9.92705e+294  7.38617e+295 -1.26215e+296  1.82271e+294  1.03264e+293 -9.68564e+294

-2.34428e+148 -9.43107e+140 -1.97354e+296  2.54735e+295  1.91259e+294  7.38617e+295  5.49564e+296 -9.39093e+296  1.35618e+295  7.68332e+293 -7.20655e+295

  4.0059e+148 -2.69459e+140  3.37238e+296  -4.3529e+295 -3.26823e+294 -1.26215e+296 -9.39093e+296  1.60472e+297 -2.31743e+295 -1.31292e+294  1.23145e+296

-5.78505e+146 -3.15772e+139 -4.87017e+294  6.28617e+293  4.71975e+292  1.82271e+294  1.35618e+295 -2.31743e+295  3.34668e+293  1.89604e+292 -1.77838e+294

-3.27748e+145 -3.94716e+137 -2.75916e+293  3.56139e+292  2.67395e+291  1.03264e+293  7.68332e+293 -1.31292e+294  1.89604e+292  1.07419e+291 -1.00753e+293

libc++abi.dylib: terminating with uncaught exception of type std::logic_error: Error in cholesky decomposition, sum: -5.44562e+280

  3.0741e+147             0  2.58795e+295 -3.34039e+294 -2.50802e+293 -9.68564e+294 -7.20655e+295  1.23145e+296 -1.77838e+294 -1.00753e+293  9.45009e+294

slicer_vtk_heather_withmake_nhdr_no_m.txt: line 45: 96476 Abort trap: 6           

/Applications/Slicer.app/Contents/Extensions-28257/UKFTractography/lib/Slicer-4.10/cli-modules/UKFTractography 
--dwiFile ./dtiprep/test_dwi.nhdr --labels 1 --seedsFile ./test11.nhdr --maskFile ./dtiprep/test_dwi.nhdr --noddi 
--recordKappa --recordVic --recordViso --Qkappa 0.01 --Qvic 0.004 --tracts ./UKF_cereb2.vtk

@tashrifbillah
Copy link
Collaborator

Hi @rmukh ,

Regarding the following line in the above traceback--

libc++abi.dylib: terminating with uncaught exception of type std::logic_error: Error in cholesky decomposition

Was there a change in cholesky decomposition recently?

@rmukh
Copy link
Contributor

rmukh commented Jul 9, 2020

Hi @rmukh ,

Regarding the following line in the above traceback--

libc++abi.dylib: terminating with uncaught exception of type std::logic_error: Error in cholesky decomposition

Was there a change in cholesky decomposition recently?

Hi @tashrifbillah,

I don't think so. It is not related to the Eigen library since the error appears here

os << "Error in cholesky decomposition, sum: " << sum;

and it is a custom function.

One possible solution to try is to replace the following line

cholesky_decomposition(G);

to inbuild Eigen Cholesky decomposition,
smth like:

Eigen::LLT<ukfStateSquareMatrix, Eigen::Lower> chol(G.cols());
chol.compute(G);

Moreover, if you have an opportunity to test my improved version of QuadProg++_Eigen.cc file, I can submit a pull request. Unfortunately, I am short on time currently to run all experiments myself, so I need your assistance with that in case you agree to do that. Please, let me know.

@tashrifbillah
Copy link
Collaborator

Moreover, if you have an opportunity to test my improved version of QuadProg++_Eigen.cc file

Would you like me to do that in MAC? I can do that. By the way, do you think your improved version may fix this issue?

@rmukh
Copy link
Contributor

rmukh commented Jul 9, 2020

Moreover, if you have an opportunity to test my improved version of QuadProg++_Eigen.cc file

Would you like me to do that in MAC? I can do that. By the way, do you think your improved version may fix this issue?

On Mac, yes, for sure. I just have a chance to test it on Ubuntu only, so it might be a good idea to check it on other versions and Windows as well.

The improved version might fix the issue, but not 100% sure. For me, the error looks like a values explosion during matrix multiplication or division somewhere that causes this stability issue. Since Eigen methods are internally designed to account for those instabilities, the new version I propose may help.

@rmukh
Copy link
Contributor

rmukh commented Jul 10, 2020

Hi @tashrifbillah,

I did send an improved QP as PR.
#128

@magictodd
Copy link
Author

magictodd commented Jul 10, 2020 via email

@magictodd
Copy link
Author

magictodd commented Jul 11, 2020 via email

@rmukh
Copy link
Contributor

rmukh commented Jul 11, 2020

Sorry, if you put it upto the nightly 4.11 then it still crashes. We tested it. On Friday, July 10, 2020, 12:35:39 PM PDT, Todd Richards [email protected] wrote: Okay, great, thank you!! can you please tell how to to install the new software into my slicer?? On Friday, July 10, 2020, 10:02:07 AM PDT, Rinat M [email protected] wrote: Hi @tashrifbillah, I did send an improved QP as PR. #128 — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

Thank you for your tests. Could you please, share the error, or is it the same?

@magictodd
Copy link
Author

magictodd commented Jul 12, 2020 via email

@tashrifbillah
Copy link
Collaborator

@magictodd , just that you know, replies in the GitHub web interface are easier to read than replies through email.

@rmukh
Copy link
Contributor

rmukh commented Jul 12, 2020

Here is the error message libc++abi.dylib: terminating with uncaught exception of type std::logic_error: Error in cholesky decomposition, sum: -1.48077e+125 On Saturday, July 11, 2020, 11:00:41 AM PDT, Rinat M [email protected] wrote: Sorry, if you put it upto the nightly 4.11 then it still crashes. We tested it. On Friday, July 10, 2020, 12:35:39 PM PDT, Todd Richards [email protected] wrote: Okay, great, thank you!! can you please tell how to to install the new software into my slicer?? On Friday, July 10, 2020, 10:02:07 AM PDT, Rinat M [email protected] wrote: Hi @tashrifbillah, I did send an improved QP as PR. #128 — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe. Thank you for your tests. Could you please, share the error, or is it the same? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

The build you made probably does not use the file I pull requested since the new version does not contain the line with "Error in cholesky decomposition" message anymore. Please, try to build with the file from PR - #128

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants