Open richford opened 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.
@richford : b-vecs are all unit vectors (or close to unit)!
Top-level CLI calls out to one of two pipelines:
create_dmri_preprocessing
.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.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.
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.