Skip to content

Commit 4acfdbc

Browse files
authored
Merge pull request #65 from effigies/fix/lta_missing_fields
FIX: Improve handling of optional fields in LTA
2 parents 955cd38 + 2180e54 commit 4acfdbc

File tree

4 files changed

+50
-16
lines changed

4 files changed

+50
-16
lines changed

nitransforms/io/lta.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -266,21 +266,20 @@ def from_string(klass, string):
266266
klass._inner_type.from_string('\n'.join(lines[:25])))
267267
lta._xforms[-1].structarr['type'] = sa['type']
268268
lines = lines[25:]
269-
if lines:
270-
for key in ('subject', 'fscale'):
271-
# Optional keys
272-
if not lines[0].startswith(key):
273-
continue
274-
try:
275-
label, valstring = lines.pop(0).split(' ')
276-
except ValueError:
277-
sa[key] = ''
278-
else:
279-
assert label.strip() == key
280-
281-
val = np.genfromtxt([valstring.encode()],
282-
dtype=klass.dtype[key])
283-
sa[key] = val.reshape(sa[key].shape) if val.size else ''
269+
for key in ('subject', 'fscale'):
270+
# Optional keys
271+
if not (lines and lines[0].startswith(key)):
272+
continue
273+
try:
274+
label, valstring = lines.pop(0).split(' ')
275+
except ValueError:
276+
sa[key] = ''
277+
else:
278+
assert label.strip() == key
279+
280+
val = np.genfromtxt([valstring.encode()],
281+
dtype=klass.dtype[key])
282+
sa[key] = val.reshape(sa[key].shape) if val.size else ''
284283

285284
assert len(lta._xforms) == sa['nxforms']
286285
return lta
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# transform file /home/oesteban/tmp/fmriprep-ds005/fprep-work/fmriprep_wf/single_subject_01_wf/anat_preproc_wf/surface_recon_wf/fsnative2t1w_xfm/T1_robustreg.lta
2+
# created by oesteban on Sat Mar 14 19:28:37 2020
3+
4+
type = 1 # LINEAR_RAS_TO_RAS
5+
nxforms = 1
6+
mean = 129.0000 157.0000 132.0000
7+
sigma = 10000.0000
8+
1 4 4
9+
9.999999403953552e-01 -1.698292035143822e-04 1.542967074783519e-04 -1.678466796875000e-04
10+
1.698438863968477e-04 9.999999403953552e-01 -9.513227996649221e-05 -1.318359375000000e-02
11+
-1.542805403005332e-04 9.515848068986088e-05 9.999999403953552e-01 -6.271362304687500e-03
12+
0.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00 9.999999403953552e-01
13+
src volume info
14+
valid = 1 # volume info valid
15+
filename = /oak/stanford/groups/russpold/data/openfmri/derivatives/ds000005/freesurfer-6.0.1/sub-01/mri/T1.mgz
16+
volume = 256 256 256
17+
voxelsize = 1.000000000000000e+00 1.000000000000000e+00 1.000000000000000e+00
18+
xras = -9.999999403953552e-01 0.000000000000000e+00 0.000000000000000e+00
19+
yras = 0.000000000000000e+00 0.000000000000000e+00 -9.999999403953552e-01
20+
zras = 0.000000000000000e+00 9.999999403953552e-01 0.000000000000000e+00
21+
cras = -9.999847412109375e-01 -5.000015258789062e+00 -1.000038146972656e+00
22+
dst volume info
23+
valid = 1 # volume info valid
24+
filename = /oak/stanford/groups/russpold/data/openfmri/ds000005/sub-01/anat/sub-01_T1w.nii.gz
25+
volume = 160 192 192
26+
voxelsize = 1.000000000000000e+00 1.333333015441895e+00 1.333333015441895e+00
27+
xras = 1.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00
28+
yras = 0.000000000000000e+00 1.000000000000000e+00 0.000000000000000e+00
29+
zras = 0.000000000000000e+00 0.000000000000000e+00 1.000000000000000e+00
30+
cras = -1.000000000000000e+00 -5.000030517578125e+00 -1.000030517578125e+00

nitransforms/tests/test_io.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,3 +340,8 @@ def test_Displacements(sw_tool):
340340
field = nb.Nifti1Image(np.zeros((10, 10, 10, 1, 4)), None, None)
341341
with pytest.raises(TransformFileError):
342342
afni.AFNIDisplacementsField.from_image(field)
343+
344+
345+
@pytest.mark.parametrize('file_type, test_file', [(LTA, 'robust_register.lta')])
346+
def test_regressions(file_type, test_file, data_path):
347+
file_type.from_filename(data_path / 'regressions' / test_file)

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ python_requires = >= 3.5
77
install_requires =
88
numpy
99
scipy
10-
nibabel @ git+https://github.com/nipy/nibabel@cd48bf05bc567387afe4504eda1da15324bb616f
10+
nibabel >= 3.0
1111
h5py
1212
test_requires =
1313
pytest

0 commit comments

Comments
 (0)