Model Specification for First Level fMRI Analysis¶
Nipype provides a general purpose model specification mechanism with specialized subclasses for package specific extensions.
General purpose model specification¶
The SpecifyModel
provides a generic mechanism for model
specification. A mandatory input called subject_info provides paradigm
specification for each run corresponding to a subject. This has to be in
the form of a Bunch
or a list of Bunch objects (one for each
run). Each Bunch object contains the following attribules.
Required for most designs¶
- conditions : list of names
- onsets : lists of onsets corresponding to each condition
- durations : lists of durations corresponding to each condition. Should be
- left to a single 0 if all events are being modelled as impulses.
Optional¶
- regressor_names : list of names corresponding to each column. Should be None if automatically assigned.
- regressors : list of lists. values for each regressor - must correspond to the number of volumes in the functional run
- amplitudes : lists of amplitudes for each event. This will be ignored by
- SPM’s Level1Design.
The following two (tmod, pmod) will be ignored by any Level1Design class other than SPM:
- tmod : lists of conditions that should be temporally modulated. Should
- default to None if not being used.
- pmod : list of Bunch corresponding to conditions
- name : name of parametric modulator
- param : values of the modulator
- poly : degree of modulation
An example Bunch definition:
from nipype.interfaces.base import Bunch
condnames = ['Tapping', 'Speaking', 'Yawning']
event_onsets = [[0, 10, 50], [20, 60, 80], [30, 40, 70]]
durations = [[0],[0],[0]]
subject_info = Bunch(conditions=condnames,
onsets = event_onsets,
durations = durations)
Alternatively, you can provide condition, onset, duration and amplitude information through event files. The event files have to be in 1,2 or 3 column format with the columns corresponding to Onsets, Durations and Amplitudes and they have to have the name event_name.run<anything else> e.g.: Words.run001.txt. The event_name part will be used to create the condition names. Words.run001.txt may look like:
# Word Onsets Durations
0 10
20 10
...
or with amplitudes:
# Word Onsets Durations Amplitudes
0 10 1
20 10 1
...
Together with this information, one needs to specify:
- whether the durations and event onsets are specified in terms of scan volumes or secs.
- the high-pass filter cutoff,
- the repetition time per scan
- functional data files corresponding to each run.
Optionally you can specify realignment parameters, outlier indices. Outlier files should contain a list of numbers, one per row indicating which scans should not be included in the analysis. The numbers are 0-based.
SPM specific attributes¶
in addition to the generic specification options, several SPM specific options can be provided. In particular, the subject_info function can provide temporal and parametric modulators in the Bunch attributes tmod and pmod. The following example adds a linear parametric modulator for speaking rate for the events specified earlier:
pmod = [None, Bunch(name=['Rate'], param=[[.300, .500, .600]],
poly=[1]), None]
subject_info = Bunch(conditions=condnames,
onsets = event_onsets,
durations = durations,
pmod = pmod)
SpecifySPMModel
also allows specifying additional components.
If you have a study with multiple runs, you can choose to concatenate
conditions from different runs. by setting the input
option concatenate_runs to True. You can also choose to set the
output options for this class to be in terms of ‘scans’.
Sparse model specification¶
In addition to standard models, SpecifySparseModel
allows model
generation for sparse and sparse-clustered acquisition experiments.
Details of the model generation and utility are provided in Ghosh et
al. (2009) OHBM 2009.