-
Notifications
You must be signed in to change notification settings - Fork 62
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
Small variation in b-values interpreted as unique shells #10
Comments
Hi Philip, glad you're giving AMICO a try! Indeed you're right, in your case AMICO would recognize many more shells than expected, as each different b-value will be considered as a new shell. In principle there should not be any issue with the fitting; however, usually the b0 might not be recognized and also the generation/rotation of the lookup tables will take way more time than required, slowing down the entire process for nothing. Related to this, last week we were asked for the same feature and we implemented a routine to round the b-values up to a certain threshold. You have two choices:
What do you think? |
I'm using Matlab. I can easily change my own b-values, but if you want someone to test new code I am happy do that. On Oct 20, 2015, at 4:26 PM, Alessandro Daducci notifications@github.com wrote:
|
It's only because I don't have much data here; the code works well with the dataset I have, but there might be some issues with your data.. If you could round up your b-values in the scheme file, re-run the fitting and confirm you have reasonable estimates, that would be already very helpful. The code should recognize that you have indeed 2 shells only and print out the number of b0. Meanwhile, I will include this modification into the code by tomorrow, so in case the fitting is ok in your case, you can use the new version for any other dataset you have, ok? |
Sure, I'll try it both ways and let you know On Oct 20, 2015, at 4:49 PM, Alessandro Daducci notifications@github.com wrote:
|
Hi Philip, I added the script AMICO_fsl2scheme( bvalsFilename, bvecsFilename, schemeFilename, bStep ) where:
To use it, here is a code snipped around the part where some example data is loaded into AMICO: % Setup the filenames in AMICO.
AMICO_SetSubject( 'my_study', 'my_subject' );
CONFIG.dwiFilename = fullfile( CONFIG.DATA_path, 'my_data.nii' );
CONFIG.maskFilename = fullfile( CONFIG.DATA_path, 'my_mask.nii' );
CONFIG.schemeFilename = fullfile( CONFIG.DATA_path, 'my_data.scheme' );
% Prepare the scheme file from bvals/bvecs files.
% In this case, I assume they are stored into the same folder as the data,
% with names 'bvals' and 'bvecs'
AMICO_fsl2scheme( fullfile( CONFIG.DATA_path, 'bvals' ), fullfile( CONFIG.DATA_path, 'bvecs' ), CONFIG.schemeFilename, 50 )
% Load the data.
AMICO_LoadData The scheme file will be filled up with b-values rounded according to the formula:
(in this example I set Please let me know if this solution actually helps in your case. |
I think it will work for me but perhaps not for a general use case. The rounding might be different across shells, particularly for the low b-value measurements. The HCP use 5 instead of 0, but I've seen people use 50 or 75, the idea is that these are more reproducible than b=0 because it's hard to get the diffusion weighting to actually decay to exactly 0. So a b-value of 50 might need rounding to 0, while a b-value of 4950 would more sensibly be rounded up up to 5000. For the other shells, the an additional disadvantage of rounding is that it forces the output b-values to be an integer multiple of bStep, which limits the values you can use for bStep. I think it might be most flexible to allow the user to specify the nominal shells, eg b = (0,1500,3000), and then have the program set each b-value to the nearest option. You can warn if the difference is large, say above 50 or 5% of the nominal b-value. Does this sound sensible? I can implement this inside fsl2scheme and test, and issue a pull request if you like. On Oct 21, 2015, at 6:47 PM, Alessandro Daducci notifications@github.com wrote:
|
It sounds like a very nice idea indeed! We could use the parameter
I could do this but, if you like, you could implement it and submit a PR as you said: this way you will appear as a contributor! I also like the idea of multiple people contributing to a project. |
Hi,
I'm trying to run NODDI on some data acquired using a Human Connectome Project Lifespan protocol. It has three shells at b=(5, 1500, 3000) s / mm^2. The bvals file output from the HCP pre-processing pipelines contain the estimated actual b-values that were applied. These vary by +/- 15 s / mm^2 from the nominal value.
So when the scanner might be told to produce measurements at b=
5
1500
3000
1500
3000
You might get b=
5
1495
3010
1500
2995
I've set all the b=5 values to 0, otherwise NODDI fails. My question is about the other values. Should I be concerned about this when running NODDI within AMICO? When I run, it says I have 14 shells.
Also, the fluctuation varies between scans, so a b-value of 3000 in one might be 2995 or 3005 in another scan. Would it be advisable to set the b-values to their nominal values?
Thanks
The text was updated successfully, but these errors were encountered: