Ciftify over fMRIPrep

Hi all,

I have raw T1 and BOLD and wish to convert them to a normalize HCP like surface.
I figured two simple paths and I would like to ask what is the difference:

1- fMRIPrep with -cifti_output option.
2- run recon-all on T1, then fMRIPrep and on top of that ciftify_recon_all

Is there any advantage in the 2nd pipe? do the produce the same output in terms of file contents?


Some of the differences are outlined in and issues that reference it. fmriprep now supports HCP-compatible CIFTI (in terms of the output space) but does not use MSMSulc for registration. ciftify uses the MSMSulc algorithm and is thus more similar to the actual HCP pipeline, minus the use of high-resolution T2w in the HCP pipeline (per the ciftify paper; possibly other major differences I am not aware of). ciftify will generally take longer to run (due to MSMSulc registration) than --cifti-output for this reason. Some versions of fmriprep will produce incorrect CIFTI outputs due to an fsLR resampling bug (

I should caution that I am not a contributor to fmriprep, so this may not be 100% accurate.


Thanks! That’s about everything I was going to say! I’ve been meaning to properly compare the outputs, but I haven’t gotten to that yet.

1 Like

Thanks! Is there any friendly comparison or explanation of the MSMSulc vs fMRIPrep registrations in terms of accuracy?

There’s some discussion of MSMSulc vs Freesurfer based registration (that fmriprep uses) in this paper: (spefically the Comparing Areal Alignment Quality of Different Surface-Based Registration Methods subsection). The results are pretty subtle.

A post was split to a new topic: Issues running Ciftify on fMRIPrep outputs