Optimized dMRI prescription

Dear Mrtrix experts.

I started using this amazing software and following your list just recently. To say that I apologize in advance if my question should be posted somewhere else.

In brief, I am in the process of starting a new study in 3-month and 9-month olds. We have been able to implement the split-diffusion-gradient preparation, multiband acceleration, and the restart capacity, as proposed in Hutter et al. 2017 ‘Time-efficient and flexible design of optimized multishell HARDI diffusion’.

Now, we would like to adopt a diffusion gradient schema that allows us to use both CSD and NODDI algorithms. I never processed dMRI data with NODDI, but I think a two shell sequence (e.g. b=750 and 2500) with (let’s say) 100 gradients each should do it. Is there any ‘optimized’ (and publicly available) diffusion gradient schema that you would recommend to this end?

Any suggestion will be really appreciated!
Thanks, Amelia

1 Like

Dear Amelia,

Lovely to hear you will use some of the techniques from the dhcp project!

We got some higher resolution data where we run NODDI analysis for the 2017 paperand we generated the scheme using gen_scheme from mrtrix.

Call is “gen_scheme 1 2500 100 750 50” for example to obtain 2 optimized shells.
the 1 after gen_scheme specifies that you only need one phase encoding direction, 2 or 4 would result in a scheme where each subset per phase encoding direction is optimized individually as well.

Let me know if I can help in any other way!

Best wishes,

Thanks a lot for getting back to me!!

Few more clarifications.

  1. With this protocol, we will be able to use also the Tournier (CSD) or the Dhollander (MT-CSD) algorithms. Is this correct?
  2. By higher resolution, do you mean a voxel size of (?) … 1.2 or 1.5 [from the paper]?
  3. We will need to keep an eye on the acquisition time, so we will test the 50+100 directions, but we will probably collect the two shells with a P>>A PED followed by a set of B0s with an A>>P PED. Shall we still model the gen_scheme with 2 or this option does not influence the 1st scheme.
  4. Would you confirm that a MB factor of 4 is ok for the infant brains or 3 will be safier, given the smaller brain size?

Thanks a lot!!

Hi Amelia,

    • Better to wait for Donald or Thijs to comment directly.
  1. 1.2mm
  2. no - if you only collect b0s in the second phase encoding, then just use “1” in the scripts.
  3. I guess this mostly depends on the coil - we use a dedicated 32-channel neonatal coil allowing higher MB factors, but probably best to get some test data first and analysis the g-factor maps.

Good luck!

Hi @versacea,

I agree mostly with the great advice @Jana_Hutter has provided so far; that should definitely get you on the right track. Out of personal experience, my only potential concern and thus warning would be the spatial resolution; not because of the spatial resolution itself (higher is of course always nicer), but the impact on the SNR (and thus noise floor, and thus Rician bias effects), especially at the highest b-value (seeing you have 2500 in mind). This is specifically with CSD and MT-CSD techniques in mind, but would in principle apply for NODDI as well. …so well, just keep an eye on that; don’t push it (the spatial resolution, that is) too far. MB, I believe, also reduces contrast a bit, which is again something to be mindful of. A general safety / backup type of advice I would suggest, is to maybe change that b-value of 750 to 1000. Should things have been pushed too far, and the b=2500 starts to cause issues, still having a good b=1000 shell might be better (than nothing) at that stage.

But well, in any case: maybe just don’t push the spatial resolution (and maybe MB factor) too far to begin with, and hopefully you should be good! All steps for 3-tissue CSD variants (including response function estimation) apply perfectly fine to the age range in your study, as long as the acquisition provides you with the right data for it.

I hope that all makes sense; don’t hesitate to ask if you’ve got further questions.


This is great!! Jane and Thijs, thank you so much for your feedback on this!! very much appreciated!
We will run some testing based on what you advised.

1 Like

one more question.
I have generated my customized scheme and gradient table (please, see below the first 19 gradients) using gen_dir and a matlab code (posted in this community). If I understand this right, these values need to be normalized, as gen_dir doesn’t do it. Can you please advice on how to do this?
Thanks again!!

Vector[1] = ( 0.0000000000, 0.0000000000, 0.0000000000 )
Vector[2] = ( 0.0000000000, 0.0000000000, 0.0000000000 )
Vector[3] = ( 0.0000000000, 0.0000000000, 0.0000000000 )
Vector[4] = ( 0.0000000000, 0.0000000000, 0.0000000000 )
Vector[5] = ( 0.0000000000, 0.0000000000, 0.0000000000 )
Vector[6] = ( 0.0000000000, 0.0000000000, 0.0000000000 )
Vector[7] = ( 0.0000000000, 0.0000000000, 0.0000000000 )
Vector[0] = ( 0.0000000000, 0.0000000000, 0.0000000000 )
Vector[8] = ( 0.3413089299288842, 0.4249286373380829, 0.3413089299288842 )
Vector[9] = ( 0.3115259681419833, -0.02539351321105451, 0.3115259681419833 )
Vector[10] = ( 0.2147039562066801, -0.2655753319026449, 0.2147039562066801 )
Vector[11] = ( -0.316852570013721, 0.2469012790270638, -0.316852570013721 )
Vector[12] = ( 0.1435964229011294, -0.4953778081295124, 0.1435964229011294 )
Vector[13] = ( -0.5115854663286478, 0.1138046975533084, -0.5115854663286478 )
Vector[14] = ( 0.2768770391542065, 0.243800621629027, 0.2768770391542065 )
Vector[15] = ( 0.4444270126627093, 0.2607466098356793, 0.4444270126627093 )
Vector[16] = ( 0.1209086591241504, -0.5340749545398099, 0.1209086591241504 )
Vector[17] = ( -0.1111953472893538, -0.2356510576959076, -0.1111953472893538 )
Vector[18] = ( 0.1840183476450107, -0.09766331378363115, 0.1840183476450107 )
Vector[19] = ( -0.5077064951763961, -0.02353454285088197, -0.5077064951763961 )

1 Like

Hi @versacea,

I’m on the move / mobile now, so can’t type up long answers, but I recalled a post on this and managed to find it again; see this one: Gradient scaling of dirgen output . That way of scaling has always worked well for me, in order to get the exact b-values I was after.


(for completeness sake: note that my quotes in that linked post also link further to more posts on the topic of the scaling for Siemens scanners)

I assume you mean gen_scheme, right?

Also, the directions in DW scheme generated by gen_scheme are unit normalised – I assume you mean that they need to be scaled for use on the a Siemens system? If so, the post suggested by @ThijsDhollander is spot on. If you follow the links, you’ll find a quick script to convert the output of gen_scheme to Siemens format with the appropriate scaling buried somewhere in this post.

Yes… sorry for the lack of terminology here!! :stuck_out_tongue: I just started familiarizing with generating customized gradient tables. The post was really helpful, and I really appreciated your feedback and redirections!!


Hi Jana,
We are scanning infants using a Siemens 3T Prisma and I’d like to know if there is a way to decide which coil, either 32CH or 64CH, we should pick. What is a g-factor map and how can I create one?

Thank you,