Replicate FSL with nipype fsl-interface, BET vs BET2

I am trying to replicate the output of this fsl command line code:
bet2 <example_func.nii.gz> -f 0.3 -n -m

But nipype fsl-interface can only call bet:
from nipype.interfaces import fsl
bet = fsl.BET(mask=True, no_output=True, frac=0.3,)
bet.inputs.in_file = <example_func.nii.gz>

which generate command line: bet <mean_image.nii> -f 0.3 -n -m

According to this FSLArchive post, bet is essentially the same as bet2. However, they are not. The mask output by these 2 are a little bit different.

Hi @adowaconan, thank you for the question!

Nipype has wrapper only for the bet command, but FSL doc claims that bet calls bet2 as default.

I also double checked help for the bet and bet2 commands and it looks to me that -f, -n and -m are the standard option for bet2 command even if you call bet, so my understanding is that the commands bet2 <example_func.nii.gz> -f 0.3 -n -m and bet <example_func.nii.gz> -f 0.3 -n -m should give exactly the same output.

Can you provide specific version of FSL and example where you see the difference


As I was trying to replicate the differences between bet and bet2 on the same data, “mean_func.nii.gz”, they both create the same mask. I figured out the difference between the FSL GUI pipeline ( and the one I implemented with nipype ( must come from different nodes.

I have been testing these script with this data: on my google drive.

Thank you very much for your time and patience.


@adowaconan - ok, so I understand that the issue with bet2 is solved. If you have more question about nipype implementation, please let me know.
I don’t know enough FSL GUI to take a guess, why the results are different.