From 43a31b1efd65f802fa5c69730bcbeec0ee0a15fd Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauldmccarthy@gmail.com> Date: Wed, 18 Mar 2020 15:32:12 +0000 Subject: [PATCH] TEST: expand gifti.relatedFiles test --- tests/test_gifti.py | 183 +++++++++++++++++++++++++++----------------- 1 file changed, 112 insertions(+), 71 deletions(-) diff --git a/tests/test_gifti.py b/tests/test_gifti.py index 835655b1e..6d23e665e 100644 --- a/tests/test_gifti.py +++ b/tests/test_gifti.py @@ -47,9 +47,9 @@ def test_GiftiMesh_create_loadAll(): with tempdir() as td: - vertSets = [op.join(td, 'prefix.L.1.surf.gii'), - op.join(td, 'prefix.L.2.surf.gii'), - op.join(td, 'prefix.L.3.surf.gii')] + vertSets = [op.join(td, 'prefix.L.1.space.surf.gii'), + op.join(td, 'prefix.L.2.space.surf.gii'), + op.join(td, 'prefix.L.3.space.surf.gii')] for vs in vertSets: shutil.copy(testfile, vs) @@ -154,82 +154,122 @@ def test_loadGiftiVertexData(): assert isinstance(gimg, nib.gifti.GiftiImage) assert tuple(data.shape) == (642, 10) - -def test_relatedFiles(): - - listing = [ - 'subject.L.ArealDistortion_FS.32k_fs_LR.shape.gii', - 'subject.L.ArealDistortion_MSMSulc.32k_fs_LR.shape.gii', - 'subject.L.BA.32k_fs_LR.label.gii', - 'subject.L.MyelinMap.32k_fs_LR.func.gii', - 'subject.L.MyelinMap_BC.32k_fs_LR.func.gii', - 'subject.L.SmoothedMyelinMap.32k_fs_LR.func.gii', - 'subject.L.SmoothedMyelinMap_BC.32k_fs_LR.func.gii', - 'subject.L.aparc.32k_fs_LR.label.gii', - 'subject.L.aparc.a2009s.32k_fs_LR.label.gii', - 'subject.L.atlasroi.32k_fs_LR.shape.gii', - 'subject.L.corrThickness.32k_fs_LR.shape.gii', - 'subject.L.curvature.32k_fs_LR.shape.gii', - 'subject.L.flat.32k_fs_LR.surf.gii', - 'subject.L.inflated.32k_fs_LR.surf.gii', - 'subject.L.midthickness.32k_fs_LR.surf.gii', - 'subject.L.pial.32k_fs_LR.surf.gii', - 'subject.L.sphere.32k_fs_LR.surf.gii', - 'subject.L.sulc.32k_fs_LR.shape.gii', - 'subject.L.thickness.32k_fs_LR.shape.gii', - 'subject.L.very_inflated.32k_fs_LR.surf.gii', - 'subject.L.white.32k_fs_LR.surf.gii', - 'subject.R.ArealDistortion_FS.32k_fs_LR.shape.gii', - 'subject.R.ArealDistortion_MSMSulc.32k_fs_LR.shape.gii', - 'subject.R.BA.32k_fs_LR.label.gii', - 'subject.R.MyelinMap.32k_fs_LR.func.gii', - 'subject.R.MyelinMap_BC.32k_fs_LR.func.gii', - 'subject.R.SmoothedMyelinMap.32k_fs_LR.func.gii', - 'subject.R.SmoothedMyelinMap_BC.32k_fs_LR.func.gii', - 'subject.R.aparc.32k_fs_LR.label.gii', - 'subject.R.aparc.a2009s.32k_fs_LR.label.gii', - 'subject.R.atlasroi.32k_fs_LR.shape.gii', - 'subject.R.corrThickness.32k_fs_LR.shape.gii', - 'subject.R.curvature.32k_fs_LR.shape.gii', - 'subject.R.flat.32k_fs_LR.surf.gii', - 'subject.R.inflated.32k_fs_LR.surf.gii', - 'subject.R.midthickness.32k_fs_LR.surf.gii', - 'subject.R.pial.32k_fs_LR.surf.gii', - 'subject.R.sphere.32k_fs_LR.surf.gii', - 'subject.R.sulc.32k_fs_LR.shape.gii', - 'subject.R.thickness.32k_fs_LR.shape.gii', - 'subject.R.very_inflated.32k_fs_LR.surf.gii', - 'subject.R.white.32k_fs_LR.surf.gii', - 'badly-formed-filename.surf.gii' - ] - - lsurfaces = [l for l in listing if (l.startswith('subject.L') and - l.endswith('surf.gii'))] - lrelated = [l for l in listing if (l.startswith('subject.L') and - not l.endswith('surf.gii'))] - - rsurfaces = [l for l in listing if (l.startswith('subject.R') and - l.endswith('surf.gii'))] - rrelated = [l for l in listing if (l.startswith('subject.R') and - not l.endswith('surf.gii'))] +hcp_listing = [ + 'subject.L.ArealDistortion_FS.32k_fs_LR.shape.gii', + 'subject.L.ArealDistortion_MSMSulc.32k_fs_LR.shape.gii', + 'subject.L.BA.32k_fs_LR.label.gii', + 'subject.L.MyelinMap.32k_fs_LR.func.gii', + 'subject.L.MyelinMap_BC.32k_fs_LR.func.gii', + 'subject.L.SmoothedMyelinMap.32k_fs_LR.func.gii', + 'subject.L.SmoothedMyelinMap_BC.32k_fs_LR.func.gii', + 'subject.L.aparc.32k_fs_LR.label.gii', + 'subject.L.aparc.a2009s.32k_fs_LR.label.gii', + 'subject.L.atlasroi.32k_fs_LR.shape.gii', + 'subject.L.corrThickness.32k_fs_LR.shape.gii', + 'subject.L.curvature.32k_fs_LR.shape.gii', + 'subject.L.flat.32k_fs_LR.surf.gii', + 'subject.L.inflated.32k_fs_LR.surf.gii', + 'subject.L.midthickness.32k_fs_LR.surf.gii', + 'subject.L.pial.32k_fs_LR.surf.gii', + 'subject.L.sphere.32k_fs_LR.surf.gii', + 'subject.L.sulc.32k_fs_LR.shape.gii', + 'subject.L.thickness.32k_fs_LR.shape.gii', + 'subject.L.very_inflated.32k_fs_LR.surf.gii', + 'subject.L.white.32k_fs_LR.surf.gii', + 'subject.R.ArealDistortion_FS.32k_fs_LR.shape.gii', + 'subject.R.ArealDistortion_MSMSulc.32k_fs_LR.shape.gii', + 'subject.R.BA.32k_fs_LR.label.gii', + 'subject.R.MyelinMap.32k_fs_LR.func.gii', + 'subject.R.MyelinMap_BC.32k_fs_LR.func.gii', + 'subject.R.SmoothedMyelinMap.32k_fs_LR.func.gii', + 'subject.R.SmoothedMyelinMap_BC.32k_fs_LR.func.gii', + 'subject.R.aparc.32k_fs_LR.label.gii', + 'subject.R.aparc.a2009s.32k_fs_LR.label.gii', + 'subject.R.atlasroi.32k_fs_LR.shape.gii', + 'subject.R.corrThickness.32k_fs_LR.shape.gii', + 'subject.R.curvature.32k_fs_LR.shape.gii', + 'subject.R.flat.32k_fs_LR.surf.gii', + 'subject.R.inflated.32k_fs_LR.surf.gii', + 'subject.R.midthickness.32k_fs_LR.surf.gii', + 'subject.R.pial.32k_fs_LR.surf.gii', + 'subject.R.sphere.32k_fs_LR.surf.gii', + 'subject.R.sulc.32k_fs_LR.shape.gii', + 'subject.R.thickness.32k_fs_LR.shape.gii', + 'subject.R.very_inflated.32k_fs_LR.surf.gii', + 'subject.R.white.32k_fs_LR.surf.gii' +] + +bids_listing = [ + 'sub-001_ses-001_hemi-L_desc-corr_space-T2w_thickness.shape.gii', + 'sub-001_ses-001_hemi-L_desc-drawem_space-T2w_dparc.label.gii', + 'sub-001_ses-001_hemi-L_space-T2w_desc-medialwall_mask.shape.gii', + 'sub-001_ses-001_hemi-L_desc-smoothed_space-T2w_myelinmap.shape.gii', + 'sub-001_ses-001_hemi-L_space-T2w_curv.shape.gii', + 'sub-001_ses-001_hemi-L_space-T2w_inflated.surf.gii', + 'sub-001_ses-001_hemi-L_space-T2w_midthickness.surf.gii', + 'sub-001_ses-001_hemi-L_space-T2w_myelinmap.shape.gii', + 'sub-001_ses-001_hemi-L_space-T2w_pial.surf.gii', + 'sub-001_ses-001_hemi-L_space-T2w_sphere.surf.gii', + 'sub-001_ses-001_hemi-L_space-T2w_sulc.shape.gii', + 'sub-001_ses-001_hemi-L_space-T2w_thickness.shape.gii', + 'sub-001_ses-001_hemi-L_space-T2w_veryinflated.surf.gii', + 'sub-001_ses-001_hemi-L_space-T2w_wm.surf.gii', + 'sub-001_ses-001_hemi-R_desc-corr_space-T2w_thickness.shape.gii', + 'sub-001_ses-001_hemi-R_desc-drawem_space-T2w_dparc.label.gii', + 'sub-001_ses-001_hemi-R_space-T2w_desc-medialwall_mask.shape.gii', + 'sub-001_ses-001_hemi-R_desc-smoothed_space-T2w_myelinmap.shape.gii', + 'sub-001_ses-001_hemi-R_space-T2w_curv.shape.gii', + 'sub-001_ses-001_hemi-R_space-T2w_inflated.surf.gii', + 'sub-001_ses-001_hemi-R_space-T2w_midthickness.surf.gii', + 'sub-001_ses-001_hemi-R_space-T2w_myelinmap.shape.gii', + 'sub-001_ses-001_hemi-R_space-T2w_pial.surf.gii', + 'sub-001_ses-001_hemi-R_space-T2w_sphere.surf.gii', + 'sub-001_ses-001_hemi-R_space-T2w_sulc.shape.gii', + 'sub-001_ses-001_hemi-R_space-T2w_thickness.shape.gii', + 'sub-001_ses-001_hemi-R_space-T2w_veryinflated.surf.gii', + 'sub-001_ses-001_hemi-R_space-T2w_wm.surf.gii' +] + + +def test_relatedFiles_hcp(): _test_relatedFiles(hcp_listing) +def test_relatedFiles_bids(): _test_relatedFiles(bids_listing) +def _test_relatedFiles(listing): + + listing = list(listing) + listing.append('badly-formed-filename.surf.gii') + + def ishemi(f, hemi): + return ('hemi-{}'.format(hemi) in f) or \ + ('.{}.' .format(hemi) in f) + + def issurf(f): + return f.endswith('surf.gii') + + def isrelated(f): + return not issurf(f) + + lsurfaces = [l for l in listing if issurf( l) and ishemi(l, 'L')] + lrelated = [l for l in listing if isrelated(l) and ishemi(l, 'L')] + rsurfaces = [l for l in listing if issurf( l) and ishemi(l, 'R')] + rrelated = [l for l in listing if isrelated(l) and ishemi(l, 'R')] with tempdir() as td: + listing = [op.join(td, f) for f in listing] + lsurfaces = [op.join(td, f) for f in lsurfaces] + rsurfaces = [op.join(td, f) for f in rsurfaces] + lrelated = [op.join(td, f) for f in lrelated] + rrelated = [op.join(td, f) for f in rrelated] + for l in listing: - with open(op.join(td, l), 'wt') as f: + with open(l, 'wt') as f: f.write(l) - badname = op.join(op.join(td, 'badly-formed-filename')) + badname = op.join(td, 'badly-formed-filename.surf.gii') assert len(gifti.relatedFiles(badname)) == 0 assert len(gifti.relatedFiles('nonexistent')) == 0 - llisting = [op.join(td, f) for f in listing] - lsurfaces = [op.join(td, f) for f in lsurfaces] - rsurfaces = [op.join(td, f) for f in rsurfaces] - lrelated = [op.join(td, f) for f in lrelated] - rrelated = [op.join(td, f) for f in rrelated] - for s in lsurfaces: result = gifti.relatedFiles(s) assert sorted(lrelated) == sorted(result) @@ -237,12 +277,13 @@ def test_relatedFiles(): result = gifti.relatedFiles(s) assert sorted(rrelated) == sorted(result) - exp = lsurfaces + lrelated + exp = lsurfaces exp = [f for f in exp if f != lsurfaces[0]] result = gifti.relatedFiles(lsurfaces[0], - ftypes=gifti.ALLOWED_EXTENSIONS) + ftypes=[gifti.ALLOWED_EXTENSIONS[0]]) assert sorted(exp) == sorted(result) + TEST_VERTS = np.array([ [0, 0, 0], [1, 0, 0], -- GitLab