dmriprep icon indicating copy to clipboard operation
dmriprep copied to clipboard

ENH: Two pipelines

Open richford opened this issue 6 years ago • 4 comments

We need two pipelines: one with FSL eddy and one with FLIRT. FSL eddy is preferred so the CLI should determine whether the input dataset meets the requirements for eddy. There are two possible ways to satisfy the eddy requirements:

  • A set of diffusion encoding directions that span the entire sphere and not just a half-sphere
  • A blip-up-blip-down (phase encode reversed) acquisition

So if the input data has phase encoded files, then we can safely use the eddy-based pipeline. If not, we should determine in the bvecs all lie within one hemisphere. If so, fallback to FLIRT. If not, use eddy. To determine whether the bvecs all lie within any one arbitrary hemisphere, see this for a description of a deterministic O(n^3) algorithm to determine if the points are within a hemisphere.

richford avatar Feb 04 '19 23:02 richford

Oh, but that algorithm is for points on the sphere, so we may have to project bvecs onto the surface of the sphere first.

richford avatar Feb 04 '19 23:02 richford

@richford : b-vecs are all unit vectors (or close to unit)!

arokem avatar Feb 04 '19 23:02 arokem

Top-level CLI calls out to one of two pipelines:

  1. No Eddy: this is in case the user asks not to run eddy, or if we find out that their data can't be used with Eddy (for the aforementioned reasons). In this case, we run @akeshavan's version of create_dmri_preprocessing.
  2. With Eddy: That means you have two further options: 2.1 We have fieldmaps, so you can use those. That's what's currently implemented. 2.2 We don't have fieldmaps, but we do have a spherical acquisition. Need to implement this one. This is probably a change in key-word arguments to run_dmriprep_pe (and presumably the name would need to change, because sometimes we run it without PE), and also some changes in the wiring within the function.

arokem avatar Feb 04 '19 23:02 arokem

PR #65 adds a function to test for spherical acquisition. Technical it only tells you if you can find a hemisphere that contains all the points. It doesn't evaluate the quality of a spherical acquisition. So, for example, an acquisition that was all northern hemisphere plus one single point at the south pole would fail the is_hemispherical test but wouldn't be that great of an acquisition.

richford avatar Mar 01 '19 19:03 richford