Open Claar727 opened 2 months ago
Is this resolved in 1.9.0?
Thanks for getting back to me and for what you do with NiPype, it's been super helpful with my PhD research.
I created a new conda environment with python version 3.11.10 just nipype 1.9.0 and its dependencies and ran my simple working example from above
import nipype.interfaces.spm as spm matlab_cmd = 'path/to/standalone/SPM12 path/to/mcr script' spm.SPMCommand.set_mlab_paths(matlab_cmd=matlab_cmd, use_mcr=True) spm.Threshold(height_threshold=0.05, height_threshold_type='q-value', use_vox_fdr_correction=True)
This raised the error
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/blue/vabfmc/data/working/robert727/.conda/envs/test_nipype/lib/python3.11/site-packages/nipype/interfaces/spm/base.py", line 303, in __init__ super().__init__(**inputs) File "/blue/vabfmc/data/working/robert727/.conda/envs/test_nipype/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 204, in __init__ self.inputs.trait_set(**inputs) File "/blue/vabfmc/data/working/robert727/.conda/envs/test_nipype/lib/python3.11/site-packages/traits/has_traits.py", line 1509, in trait_set setattr(self, name, value) File "/blue/vabfmc/data/working/robert727/.conda/envs/test_nipype/lib/python3.11/site-packages/traits/base_trait_handler.py", line 74, in error raise TraitError( traits.trait_errors.TraitError: The 'height_threshold_type' trait of a ThresholdInputSpec instance must be 'p-value' or 'stat', but a value of 'q-value' <class 'str'> was specified.
Looking at the 1.9.0 documentation it still states
use_vox_fdr_correction (a boolean) – Whether to use voxel-based FDR correction for initial threshold (height_threshold_type has to be set to q-value). (Nipype default value: False)
and when I ran
>>> spm.Threshold(height_threshold=0.05, use_vox_fdr_correction=True)
it returned
<nipype.interfaces.spm.model.Threshold object at 0x1474eb8803d0>
with no error. So perhaps this issue was partially fixed, or maybe it was completely fixed and the documentation does not reflect it.
Summary
In the documentation for the Threshold method within the nipype SPM interface it shows use_vox_fdr_correction as an optional input with description "Whether to use voxel-based FDR correction for initial threshold (height_threshold_type has to be set to q-value)." Whenever I set this to True and set height_threshold_type to 'q-value' I get the error
TraitError: Cannot set the undefined 'use_vox_fdr_correction' attribute of a 'ThresholdInputSpec' object.
I tried importing ThresholdInputSpec directly and creating an instance to check its available attributes viadir
and did not see use_vox_fdr_correction. I also tried setting the height_threshold_type to 'q-value' without including the use_vox_fdr_correction and got an error stating that 'q-value' was not a valid value for height_threshold_type. My workflow works perfectly if I use Topographical FDR or FWE. I can replicate the error using the code snippet below.Using the
inspect
module to look at theThreshold
definition (i.e.,inspect.getsource(spm.Threshold)
I can see that there is nouse_vox_fdr_correction
attribute but when I look through the github it appears in theThreshold
class definition. Should I be using a different NiPyPe version to use this capability or should I clone the github instead of installing NiPyPe viapip
? Any help is appreciated!Actual behavior
TraitError
Expected behavior
Voxel-wise FDR correction of contrast images with significance level set via q-value.
How to replicate the behavior
import nipype.interfaces.spm as spm matlab_cmd = 'path/to/standalone/SPM12 path/to/mcr script' spm.SPMCommand.set_mlab_paths(matlab_cmd=matlab_cmd, use_mcr=True) spm.Threshold(height_threshold=0.05, height_threshold_type='q-value', use_vox_fdr_correction=True)
Script/Workflow details
NA Please put URL to code or code here (if not too long). import nipype.interfaces.spm as spm matlab_cmd = 'path/to/standalone/SPM12 path/to/mcr script' spm.SPMCommand.set_mlab_paths(matlab_cmd=matlab_cmd, use_mcr=True) spm.Threshold(height_threshold=0.05, height_threshold_type='q-value', use_vox_fdr_correction=True)
Platform details:
SPM version: 12.7771 MCR: v910 Python: 3.10.14 NiPyPe: 1.8.6 OS: Linux
Execution environment
Choose one