nipy / dmriprep

MOVED TO https://github.com/nipreps/dmriprep
Other
17 stars 11 forks source link

ENH: Two pipelines #58

Open richford opened 5 years ago

richford commented 5 years ago

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:

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 commented 5 years ago

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

arokem commented 5 years ago

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

arokem commented 5 years ago

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.
richford commented 5 years ago

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.