What happened?
Pipelines appear to configure N4BiasFieldCorrection to use rescale_intensities , e.g.,
|
inu_n4_final.inputs.rescale_intensities = True |
Unfortunately, without a mask, N4BiasFieldCorrection will always be set to false: https://github.com/ANTsX/ANTs/blob/v2.5.0/Examples/N4BiasFieldCorrection.cxx#L497-L502
typename itk::ants::CommandLineParser::OptionType::Pointer rescaleOption = parser->GetOption("rescale-intensities");
if (!isMaskImageSpecified || (rescaleOption && rescaleOption->GetNumberOfFunctions() &&
!parser->Convert<bool>(rescaleOption->GetFunction()->GetName())))
{
doRescale = false;
}
This is also mentioned in the --help
❯ N4BiasFieldCorrection --help | grep "A mask"
within the user-specified mask. A mask is required to perform rescaling.
What command did you use?
# check cmdline from dummy run
from nilearn import datasets
from nipype.interfaces.ants import N4BiasFieldCorrection
mni = datasets.fetch_icbm152_2009()
n4 = N4BiasFieldCorrection(dimension=3, rescale_intensities=True, input_image=mni["t1"])
n4.cmdline
# 'N4BiasFieldCorrection -d 3 --input-image /Users/psadil/nilearn_data/icbm152_2009/mni_icbm152_nlin_sym_09a/mni_icbm152_t1_tal_nlin_sym_09a.nii.gz --output mni_icbm152_t1_tal_nlin_sym_09a_corrected.nii.gz -r'
# set up use of cmd with and without mask
cp $FSLDIR/data/standard/MNI152_T1_1mm.nii.gz ./
cp $FSLDIR/data/standard/MNI152_T1_1mm_brain_mask.nii.gz ./
# no mask
❯ N4BiasFieldCorrection -d 3 --input-image MNI152_T1_1mm.nii.gz --output n4-nomask.nii.gz -r
❯ fslstats n4-nomask.nii.gz -R
0.000000 14616.967773
# with mask (now scaled now from 0-10000)
N4BiasFieldCorrection -d 3 --input-image MNI152_T1_1mm.nii.gz --output n4.nii.gz -r -x MNI152_T1_1mm_brain_mask.nii.gz
❯ fslstats n4.nii.gz -R
0.000000 9999.000000
What version of the software are you running?
1.14.2
How are you running this software?
Local installation ("bare-metal")
Is your data BIDS valid?
Yes
Are you reusing any previously computed results?
No
Please copy and paste any relevant log output.
Additional information / screenshots
If this does seem like a valid issue, it may also be a good idea to update nipype to prevent setting rescale_intensities when there is no mask input.
What happened?
Pipelines appear to configure
N4BiasFieldCorrectionto userescale_intensities, e.g.,niworkflows/niworkflows/anat/ants.py
Line 438 in d991644
Unfortunately, without a mask,
N4BiasFieldCorrectionwill always be set to false: https://github.com/ANTsX/ANTs/blob/v2.5.0/Examples/N4BiasFieldCorrection.cxx#L497-L502This is also mentioned in the
--helpWhat command did you use?
What version of the software are you running?
1.14.2
How are you running this software?
Local installation ("bare-metal")
Is your data BIDS valid?
Yes
Are you reusing any previously computed results?
No
Please copy and paste any relevant log output.
Additional information / screenshots
If this does seem like a valid issue, it may also be a good idea to update nipype to prevent setting
rescale_intensitieswhen there is no mask input.