Skip to content

Commit 8bac064

Browse files
author
Adam Richie-Halford
committed
Edit in response to @effigies comments on PR nipy#2825
- Remove redundant `__init__` method in `EddyQuad` class. - Use `os.path.abspath()` earlier in order to remove from later statements. - Improve `EddyQuad`'s `base_name` input description. - Remove unnecessary `mandatory=False` params. - Rename `slspec` to `slice_spec`. - Use default for `EddyQuad`'s `base_name` input. - Use a name template for `EddyQuad`'s `output_dir` input.
1 parent dbbb84b commit 8bac064

File tree

1 file changed

+33
-47
lines changed

1 file changed

+33
-47
lines changed

nipype/interfaces/fsl/epi.py

Lines changed: 33 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1237,8 +1237,10 @@ def _run_interface(self, runtime):
12371237
class EddyQuadInputSpec(FSLCommandInputSpec):
12381238
base_name = traits.Str(
12391239
'eddy_corrected',
1240+
usedefault=True,
12401241
argstr='%s',
1241-
desc="Basename (including path) specified when running EDDY",
1242+
desc=("Basename (including path) for EDDY output files, i.e., "
1243+
"corrected images and QC files"),
12421244
position=0,
12431245
)
12441246
idx_file = File(
@@ -1268,31 +1270,26 @@ class EddyQuadInputSpec(FSLCommandInputSpec):
12681270
)
12691271
bvec_file = File(
12701272
exists=True,
1271-
mandatory=False,
12721273
argstr="--bvecs=%s",
12731274
desc=("b-vectors file - only used when <base_name>.eddy_residuals "
12741275
"file is present")
12751276
)
12761277
output_dir = traits.Str(
1277-
'eddy_corrected.qc',
1278-
mandatory=True,
1279-
usedefault=True,
1278+
name_template='%s.qc',
1279+
name_source=['base_name'],
12801280
argstr='--output-dir=%s',
12811281
desc="Output directory - default = '<base_name>.qc'",
12821282
)
12831283
field = File(
1284-
mandatory=False,
12851284
argstr='--field=%s',
12861285
desc="TOPUP estimated field (in Hz)",
12871286
)
1288-
slspec = File(
1289-
mandatory=False,
1287+
slice_spec = File(
12901288
argstr='--slspec=%s',
12911289
desc="Text file specifying slice/group acquisition",
12921290
)
12931291
verbose = traits.Bool(
12941292
False,
1295-
mandatory=False,
12961293
argstr='--verbose',
12971294
desc="Display debug messages",
12981295
)
@@ -1321,7 +1318,7 @@ class EddyQuadOutputSpec(TraitedSpec):
13211318
)
13221319
)
13231320

1324-
out_avg_b0_png = traits.List(
1321+
out_avg_b0_pe_png = traits.List(
13251322
File(
13261323
exists=True,
13271324
mandatory=False,
@@ -1399,52 +1396,41 @@ class EddyQuad(FSLCommand):
13991396
input_spec = EddyQuadInputSpec
14001397
output_spec = EddyQuadOutputSpec
14011398

1402-
def __init__(self, **inputs):
1403-
super(EddyQuad, self).__init__(**inputs)
1404-
14051399
def _list_outputs(self):
1406-
from glob import glob
1400+
import json
14071401
outputs = self.output_spec().get()
1408-
out_dir = self.inputs.output_dir
1409-
outputs['out_qc_json'] = os.path.abspath(
1410-
os.path.join(out_dir, 'qc.json')
1411-
)
1412-
outputs['out_qc_pdf'] = os.path.abspath(
1413-
os.path.join(out_dir, 'qc.pdf')
1414-
)
1415-
1416-
outputs['out_avg_b0_png'] = glob(os.path.abspath(
1417-
os.path.join(out_dir, 'avg_b0_pe*.png')
1418-
))
1419-
1420-
outputs['out_avg_b_png'] = [b for b in glob(os.path.abspath(
1421-
os.path.join(out_dir, 'avg_b*.png')
1422-
)) if b not in outputs['out_avg_b0_png']]
1402+
out_dir = os.path.abspath(self.inputs.output_dir)
1403+
outputs['out_qc_json'] = os.path.join(out_dir, 'qc.json')
1404+
outputs['out_qc_pdf'] = os.path.join(out_dir, 'qc.pdf')
14231405

1424-
outputs['out_cnr_png'] = glob(os.path.abspath(
1425-
os.path.join(out_dir, 'cnr*.png')
1426-
))
1406+
with open(outputs['out_qc_json']) as fp:
1407+
qc = json.load(fp)
14271408

1428-
vdm = os.path.abspath(
1429-
os.path.join(out_dir, 'vdm.png')
1430-
)
1409+
outputs['out_avg_b_png'] = [
1410+
os.path.join(out_dir, 'avg_b{bval:d}.png'.format(bval=bval))
1411+
for bval in list(set([0] + qc.get('data_unique_bvals')))
1412+
]
14311413

1432-
if os.path.exists(vdm):
1433-
outputs['out_vdm_png'] = vdm
1414+
if qc.get('qc_field_flag'):
1415+
outputs['out_avg_b0_pe_png'] = [
1416+
os.path.join(out_dir, 'avg_b0_pe{i:d}'.format(i=i))
1417+
for i in range(qc.get('data_no_PE_dirs'))
1418+
]
14341419

1435-
residuals = os.path.abspath(
1436-
os.path.join(out_dir, 'eddy_msr.txt')
1437-
)
1420+
outputs['out_vdm_png'] = os.path.join(out_dir, 'vdm.png')
14381421

1439-
if os.path.exists(residuals):
1440-
outputs['out_residuals'] = residuals
1422+
if qc.get('qc_cnr_flag'):
1423+
outputs['out_cnr_png'] = [
1424+
os.path.join(out_dir, 'cnr{i:04d}.nii.gz.png')
1425+
for i, _ in enumerate(qc.get('qc_cnr_avg'))
1426+
]
14411427

1442-
outlier_vols = os.path.abspath(
1443-
os.path.join(out_dir, 'vols_no_outliers.txt')
1444-
)
1428+
if qc.get('qc_rss_flag'):
1429+
outputs['out_residuals'] = os.path.join(out_dir, 'eddy_msr.txt')
14451430

1446-
if os.path.exists(outlier_vols):
1447-
outputs['out_clean_volumes'] = outlier_vols
1431+
if qc.get('qc_ol_flag'):
1432+
outputs['out_clean_volumes'] = os.path.join(out_dir,
1433+
'vols_no_outliers.txt')
14481434

14491435
return outputs
14501436

0 commit comments

Comments
 (0)