qsiprep
qsiprep copied to clipboard
FSL dependency
I would like to remove the FSL dependency from QSIPrep.
Can you open up a PR and enable contributions from other editors? I think with TORTOISE included we can remove it without loss of performance
Got it, @jbh1091 is working on it for now.
@mattcieslak I'm looking at FAST usage right now. I basically see 2 options for replacement: Freesurfer segmentation and AFNI's 3dSeg. Both have differences that prevent a quick plug-and-play swap (no CSF mask in Freesurfer, no TPMs in AFNI). Did you have a solution in mind?
@mb3152 mentioned FAST outputs are already not used much, so deleting the current usage and added segmentation references later in the pipeline when needed is also an option.
We can remove FAST from preprocessing entirely. Nothing in the preprocessing workflow uses a brain segmentation other than distortion correction plotting. Maybe we could use Atropos from ANTs, or 3dSeg sounds interesting too.
The trickiest thing to replace is going to be avscale
, which we use to convert itk transforms to FSL transforms and from those calculate the head motion parameters.
I have no idea how FSL calculates these motion parameters. They're different from what you get if you read the itk transform files as Euler3DTransforms and get the translations and rotations.
Totally separate question: I know TORTOISE will be replacing eddy and topup; does that replacement extend to FUGUE and PRELUDE as well? From what I've been reading they do similar things (EPI distortion correction) just with a different method.
These also require different fieldmap acquisitions. AFAIK there is nothing out there that does exactly what fugue and prelude do, but unless you acquire GRE fieldmaps (not as popular nowadays) these programs are not useful
OK that makes sense, thanks. If there isn't a good replacement but it's also not used much, I'll just plan to remove them entirely.
What push/review strategy makes the most sense to you? There are a ton of changes to make, so it may be better for me to push to the branch after I change (and locally test) each component individually. A piecewise approach seems easier to write and easier to review.