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
NF: rumba reconst #2423
NF: rumba reconst #2423
Conversation
…AB implementation
Decompose into rotation and scaling components also in case the affine is a 3x3 matrix
Co-authored-by: Ariel Rokem <arokem@gmail.com>
Yes that works! I'll see you then. |
Hi @arokem the changes we discussed yesterday have all been pushed! The only difference from our conversation is that I ended up having to define Thank you! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good! I had a couple of suggestions here and there.
I also think that we should change the name of the "RumbaSD" class to "RumbaSDModel" to be consistent with the other models.
Hi @arokem I pushed these suggestions. I'm not sure why all the Linux checks were cancelled... Should I try making another commit to re-run the tests? |
Hi @kenjimarshall, They failed because ubuntu 1604 is deprecated. We need to update our azure-pipeline files. See #2413 |
Following up here, after our discussion this morning. I think that it was suggested that it would be OK to merge this code into master, but there was some question about how to discuss the multi-shell implementation in the example. One easy way to deal with the questions around multi-shell would be to remove that example. I think that maybe @gabknight was suggesting that as a possibility. I'd alright with that. What do others think? |
Hi Ariel/dipy team,
I agree, we could add the multi-shell example in the near future.
Thanks!
All the best,
Erick
…________________________________
From: Ariel Rokem ***@***.***>
Sent: Thursday, February 10, 2022 11:15 PM
To: dipy/dipy
Cc: Canales Rodriguez Erick Jorge; Mention
Subject: Re: [dipy/dipy] NF: rumba reconst (#2423)
Following up here, after our discussion this morning. I think that it was suggested that it would be OK to merge this code into master, but there was some question about how to discuss the multi-shell implementation in the example. One easy way to deal with the questions around multi-shell would be to remove that example. I think that maybe @gabknight<https://github.com/gabknight> was suggesting that as a possibility. I'd alright with that. What do others think?
—
Reply to this email directly, view it on GitHub<#2423 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ACFIXLJYTIIRMLWNTDALKETU2Q2I3ANCNFSM5A2DGRVQ>.
Triage notifications on the go with GitHub Mobile for iOS<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675> or Android<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Hi @kenjimarshall : are you still available to work on this? Could you make this change? I think after removing the multi-shell example, we'd be ready to merge this. |
Hi @arokem and everyone. Yes no problem! I'll delete it now. To clarify, we're keeping the multi-shell functionality on the model but just deleting the example? |
Thanks for being so quick! I think that this is ready for the merge. I will wait until EOB Monday, to give people time to raise any objections, before I go ahead with it. |
Hi @kenjimarshall and all. This PR needs rebasing. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The PR needs a careful rebasing and a few more comments need addressing too. Overall, a great work in the making :) This is super close to be merged.
dipy/reconst/rumba.py
Outdated
matter (WM) fiber populations in a given orientation as well as effects | ||
from GM and CSF. The equation governing these contributions is: | ||
|
||
$ S_i = S_0\left(\sum_{j=1}^{M}f_j\exp(-b_i\bold{v}_i^T\bold{D}_j |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@kenjimarshall have you tried to render the documentation? If yes, do the math render correctly?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for pointing this out -- there were some rendering issues that I believe I've now fixed.
bvecs = btable[:, 1:] | ||
gtab = gradient_table(bvals, bvecs) | ||
|
||
rumba = RumbaSDModel(gtab, n_iter=600, sphere=sphere) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this model okay to use with DSI type of data?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes I believe so, but maybe @ejcanalesr can confirm?
dipy/reconst/tests/test_rumba.py
Outdated
data_pred = rumba_fit.predict() | ||
|
||
# Assert reconstructed signal value within 0.01 of original | ||
assert_allclose(data, data_pred, atol=0.01, rtol=1.0) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tolerance seem low. Any reasons?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just increased the precision on this test a bit further. It's now close to the threshold for RUMBA's predict performance.
@arokem have you checked that the documentation of this PR renders correctly? |
Thank you for the great work @kenjimarshall and team. I am merging this now. |
🎉 |
Robust and Unbiased Model-BAsed Spherical Deconvolution (RUMBA-SD)
Developed in collaboration with @gabknight and @ejcanalesr. RUMBA-SD is the algorithm that won the MICCAI IronTract 2019 challenge, the 3D VoTEM ISBI 2018 challenge (sub-challenge #2), and the co-winner of the ISBI HARDI 2013 challenge.
Reference:
Canales-Rodríguez, E. J., Daducci, A., Sotiropoulos, S. N., Caruyer, E., Aja-Fernández, S., Radua, J., Mendizabal, J. M. Y., Iturria-Medina, Y., Melie-García, L., Alemán-Gómez, Y., Thiran, J.-P., Sarró, S., Pomarol-Clotet, E., & Salvador, R. (2015). Spherical Deconvolution of Multichannel Diffusion MRI Data with Non-Gaussian Noise Models and Spatial Regularization. PLOS ONE, 10(10), e0138910. https://doi.org/10.1371/journal.pone.0138910