Skip to content

Commit 2040239

Browse files
committed
RF: refactor PARREC file meths for keyword only
Use and test keyword-onliness of permit_truncated, scaling argument to PARRECImage file loading methods.
1 parent 6212a2b commit 2040239

File tree

3 files changed

+25
-12
lines changed

3 files changed

+25
-12
lines changed

bin/parrec2nii

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,9 @@ def proc_file(infile, opts):
138138
# load the PAR header and data
139139
scaling = None if opts.scaling == 'off' else opts.scaling
140140
infile = fname_ext_ul_case(infile)
141-
pr_img = pr.load(infile, opts.permit_truncated, scaling)
141+
pr_img = pr.load(infile,
142+
permit_truncated=opts.permit_truncated,
143+
scaling=scaling)
142144
pr_hdr = pr_img.header
143145
raw_data = pr_img.dataobj.get_unscaled()
144146
affine = pr_hdr.get_affine(origin=opts.origin)

nibabel/parrec.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@
8282
from copy import deepcopy
8383
import re
8484

85+
from .keywordonly import kw_only_meth
8586
from .spatialimages import SpatialImage, Header
8687
from .eulerangles import euler2mat
8788
from .volumeutils import Recoder, array_from_file, BinOpener
@@ -900,6 +901,7 @@ class PARRECImage(SpatialImage):
900901
ImageArrayProxy = PARRECArrayProxy
901902

902903
@classmethod
904+
@kw_only_meth(1)
903905
def from_file_map(klass, file_map, permit_truncated=False, scaling='dv'):
904906
pt = permit_truncated
905907
with file_map['header'].get_prepare_fileobj('rt') as hdr_fobj:
@@ -911,13 +913,14 @@ def from_file_map(klass, file_map, permit_truncated=False, scaling='dv'):
911913
file_map=file_map)
912914

913915
@classmethod
916+
@kw_only_meth(1)
914917
def from_filename(klass, filename, permit_truncated=False, scaling='dv'):
915918
file_map = klass.filespec_to_file_map(filename)
916-
return klass.from_file_map(file_map, permit_truncated, scaling)
919+
return klass.from_file_map(file_map,
920+
permit_truncated=permit_truncated,
921+
scaling=scaling)
917922

918-
@classmethod
919-
def load(klass, filename, permit_truncated=False, scaling='dv'):
920-
return klass.from_filename(filename, permit_truncated, scaling)
923+
load = from_filename
921924

922925

923926
load = PARRECImage.load

nibabel/tests/test_parrec.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -434,17 +434,25 @@ def test_image_creation():
434434
(PARRECImage.from_file_map, good_map, trunc_map)):
435435
img = func(good_param)
436436
assert_array_equal(img.dataobj, arr_prox_dv)
437-
img = func(good_param, False)
437+
# permit_truncated is keyword only
438+
assert_raises(TypeError, func, good_param, False)
439+
img = func(good_param, permit_truncated=False)
438440
assert_array_equal(img.dataobj, arr_prox_dv)
439-
img = func(good_param, False, 'dv')
441+
# scaling is keyword only
442+
assert_raises(TypeError, func, good_param, False, 'dv')
443+
img = func(good_param, permit_truncated=False, scaling='dv')
440444
assert_array_equal(img.dataobj, arr_prox_dv)
441-
img = func(good_param, False, 'fp')
445+
img = func(good_param, scaling='dv')
446+
assert_array_equal(img.dataobj, arr_prox_dv)
447+
# Can use fp scaling
448+
img = func(good_param, scaling='fp')
442449
assert_array_equal(img.dataobj, arr_prox_fp)
450+
# Truncated raises error without permit_truncated=True
443451
assert_raises(PARRECError, func, trunc_param)
444-
assert_raises(PARRECError, func, trunc_param, False)
445-
img = func(trunc_param, True)
452+
assert_raises(PARRECError, func, trunc_param, permit_truncated=False)
453+
img = func(trunc_param, permit_truncated=True)
446454
assert_array_equal(img.dataobj, arr_prox_dv)
447-
img = func(trunc_param, True, 'dv')
455+
img = func(trunc_param, permit_truncated=True, scaling='dv')
448456
assert_array_equal(img.dataobj, arr_prox_dv)
449-
img = func(trunc_param, True, 'fp')
457+
img = func(trunc_param, permit_truncated=True, scaling='fp')
450458
assert_array_equal(img.dataobj, arr_prox_fp)

0 commit comments

Comments
 (0)