Skip to content

Commit 97d1f54

Browse files
authored
Merge pull request #1351 from nipreps/fix/1350-spikes-memory
FIX: Optimize interface to minimize memory fingerprint
2 parents bd161b0 + 0c9dc65 commit 97d1f54

File tree

2 files changed

+7
-15
lines changed

2 files changed

+7
-15
lines changed

mriqc/interfaces/functional.py

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -226,26 +226,12 @@ class Spikes(SimpleInterface):
226226

227227
def _run_interface(self, runtime):
228228
func_nii = nb.load(self.inputs.in_file)
229-
func_data = func_nii.get_fdata()
229+
func_data = func_nii.get_fdata(dtype='float32')
230230
func_shape = func_data.shape
231231
ntsteps = func_shape[-1]
232232
tr = func_nii.header.get_zooms()[-1]
233233
nskip = self.inputs.skip_frames
234234

235-
if self.inputs.detrend:
236-
from nilearn.signal import clean
237-
238-
data = func_data.reshape(-1, ntsteps)
239-
clean_data = clean(data[:, nskip:].T, t_r=tr, standardize=False).T
240-
new_shape = (
241-
func_shape[0],
242-
func_shape[1],
243-
func_shape[2],
244-
clean_data.shape[-1],
245-
)
246-
func_data = np.zeros(func_shape)
247-
func_data[..., nskip:] = clean_data.reshape(new_shape)
248-
249235
mask_data = np.bool_(nb.load(self.inputs.in_mask).dataobj)
250236
mask_data[..., :nskip] = 0
251237
mask_data = np.stack([mask_data] * ntsteps, axis=-1)
@@ -256,6 +242,11 @@ def _run_interface(self, runtime):
256242
mask_data[..., : self.inputs.skip_frames] = 1
257243
brain = np.ma.array(func_data, mask=(mask_data == 1))
258244

245+
if self.inputs.detrend:
246+
from nilearn.signal import clean
247+
248+
brain = clean(brain[:, nskip:].T, t_r=tr, standardize=False).T
249+
259250
if self.inputs.no_zscore:
260251
ts_z = find_peaks(brain)
261252
total_spikes = []

mriqc/workflows/functional/output.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ def init_func_report_wf(name='func_report_wf'):
9797
name='SpikesFinderBgMask',
9898
mem_gb=mem_gb * 2.5,
9999
iterfield=['in_file', 'in_mask'],
100+
n_procs=(config.nipype.nprocs + 3) // 4, # spikes is a memory hog
100101
)
101102

102103
# Generate crown mask

0 commit comments

Comments
 (0)