Skip to content

Commit 54a6acb

Browse files
committed
fix plotting with speeds/tr
1 parent de2b36f commit 54a6acb

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

nipype/algorithms/misc.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ class FramewiseDisplacementInputSpec(BaseInterfaceInputSpec):
4747
out_figure = File('fd_power_2012.pdf', usedefault=True, desc='output figure name')
4848
series_tr = traits.Float(desc='repetition time in sec.')
4949
save_plot = traits.Bool(False, usedefault=True, desc='write FD plot')
50-
normalize = traits.Bool(False, usedefault=True, desc='calculate FD in mm/s',
51-
requires=['series_tr'])
50+
normalize = traits.Bool(False, usedefault=True, desc='calculate FD in mm/s')
5251
figdpi = traits.Int(100, usedefault=True, desc='output dpi for the FD plot')
5352
figsize = traits.Tuple(traits.Float(11.7), traits.Float(2.3), usedefault=True,
5453
desc='output figure size')
@@ -86,12 +85,18 @@ def _run_interface(self, runtime):
8685
}
8786
np.savetxt(self.inputs.out_file, fd_res)
8887

88+
8989
if self.inputs.save_plot:
90-
self._results['out_figure'] = op.abspath(self.inputs.out_figure)
9190
tr = None
92-
if self.inputs.normalize:
91+
if isdefined(self.inputs.series_tr):
9392
tr = self.inputs.series_tr
94-
fig = plot_fd(fd_res, self.inputs.figsize, series_tr=tr)
93+
94+
if self.inputs.normalize and tr is None:
95+
iflogger.warn('FD plot cannot be normalized if TR is not set')
96+
97+
self._results['out_figure'] = op.abspath(self.inputs.out_figure)
98+
fig = plot_fd(fd_res, self.inputs.figsize, series_tr=tr,
99+
normalize=self.inputs.normalize)
95100
fig.savefig(self._results['out_figure'], dpi=float(self.inputs.figdpi),
96101
format=self.inputs.out_figure[-3:],
97102
bbox_inches='tight')
@@ -1523,7 +1528,7 @@ def merge_rois(in_files, in_idxs, in_ref,
15231528
return out_file
15241529

15251530

1526-
def plot_fd(fd_values, figsize, series_tr=None):
1531+
def plot_fd(fd_values, figsize, series_tr=None, normalize=False):
15271532
"""
15281533
A helper function to plot the framewise displacement
15291534
"""
@@ -1540,9 +1545,12 @@ def plot_fd(fd_values, figsize, series_tr=None):
15401545
grid.update(hspace=1.0, right=0.95, left=0.1, bottom=0.2)
15411546

15421547
ax = fig.add_subplot(grid[0, :-1])
1548+
if normalize and series_tr is not None:
1549+
fd_values /= series_tr
1550+
15431551
ax.plot(fd_values)
15441552
ax.set_xlim((0, len(fd_values)))
1545-
ax.set_ylabel('FD [{}]'.format('mm/s' if series_tr is not None else 'mm'))
1553+
ax.set_ylabel('FD {}'.format('speed [mm/s]' if normalize else '[mm]'))
15461554

15471555
xlabel = 'Frame #'
15481556
if series_tr is not None:

0 commit comments

Comments
 (0)