Skip to content

Commit bb96652

Browse files
committed
ENH: Allow CompCor to skip initial volumes
1 parent 5c6e7af commit bb96652

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed

nipype/algorithms/confounds.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,9 @@ class CompCorInputSpec(BaseInterfaceInputSpec):
345345
'unspecified')
346346
save_pre_filter = traits.Either(
347347
traits.Bool, File, desc='Save pre-filter basis as text file')
348+
ignore_initial_volumes = traits.Range(
349+
low=0, usedefault=True,
350+
desc='Number of volumes at start of series to ignore')
348351

349352

350353
class CompCorOutputSpec(TraitedSpec):
@@ -417,6 +420,12 @@ def _run_interface(self, runtime):
417420
header=imgseries.header)
418421
mask_images = [img]
419422

423+
nvols = self.inputs.ignore_initial_volumes
424+
if nvols:
425+
imgseries = imgseries.__class__(
426+
img.series.get_data()[..., nvols:], imgseries.affine,
427+
imgseries.header)
428+
420429
mask_images = self._process_masks(mask_images, imgseries.get_data())
421430

422431
TR = 0
@@ -451,6 +460,14 @@ def _run_interface(self, runtime):
451460
'cosine': 'cos'}[self.inputs.pre_filter]
452461
ncols = filter_basis.shape[1] if filter_basis.size > 0 else 0
453462
header = ['{}{:02d}'.format(ftype, i) for i in range(ncols)]
463+
if nvols:
464+
nrows = filter_basis.shape[0] if filter_basis.size > 0 else 0
465+
old_basis = filter_basis
466+
filter_basis = np.zeros((nrows + nvols, ncols + 1),
467+
dtype=filter_basis.dtype)
468+
filter_basis[nvols:, :-1] = old_basis
469+
filter_basis[:nvols, -1] = 1
470+
header.append('SteadyState')
454471
np.savetxt(pre_filter_file, filter_basis, fmt=b'%.10f',
455472
delimiter='\t', header='\t'.join(header), comments='')
456473

nipype/algorithms/tests/test_auto_ACompCor.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ def test_ACompCor_inputs():
1212
ignore_exception=dict(nohash=True,
1313
usedefault=True,
1414
),
15+
ignore_initial_volumes=dict(usedefault=True,
16+
),
1517
mask_files=dict(),
1618
mask_index=dict(requires=['mask_files'],
1719
xor=['merge_method'],

nipype/algorithms/tests/test_auto_TCompCor.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ def test_TCompCor_inputs():
1212
ignore_exception=dict(nohash=True,
1313
usedefault=True,
1414
),
15+
ignore_initial_volumes=dict(usedefault=True,
16+
),
1517
mask_files=dict(),
1618
mask_index=dict(requires=['mask_files'],
1719
xor=['merge_method'],

0 commit comments

Comments
 (0)