Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nipype.interfaces.spm.model use_vox_fdr_correction attribute error #3669

Open
Claar727 opened this issue Sep 10, 2024 · 0 comments
Open

nipype.interfaces.spm.model use_vox_fdr_correction attribute error #3669

Claar727 opened this issue Sep 10, 2024 · 0 comments

Comments

@Claar727
Copy link

Claar727 commented Sep 10, 2024

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 via dir 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 the Threshold definition (i.e., inspect.getsource(spm.Threshold) I can see that there is no use_vox_fdr_correction attribute but when I look through the github it appears in the Threshold class definition. Should I be using a different NiPyPe version to use this capability or should I clone the github instead of installing NiPyPe via pip? 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

{'commit_hash': '<not found>',
 'commit_source': '(none found)',
 'networkx_version': '3.3',
 'nibabel_version': '5.2.1',
 'nipype_version': '1.8.6',
 'numpy_version': '1.26.4',
 'pkg_path': '/blue/vabfmc/data/working/robert727/.conda/envs/cda2_nipype_wf/lib/python3.10/site-packages/nipype',
 'scipy_version': '1.13.0',
 'sys_executable': '/blue/vabfmc/data/working/robert727/.conda/envs/cda2_nipype_wf/bin/python',
 'sys_platform': 'linux',
 'sys_version': '3.10.14 | packaged by conda-forge | (main, Mar 20 2024, '
                '12:45:18) [GCC 12.3.0]',
 'traits_version': '6.3.2'}

Execution environment

Choose one

  • Container [Tag: ???]
  • My python environment inside container [Base Tag: ???]
  • My python environment outside container
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant