Skip to content

Commit 0cd77e3

Browse files
authored
Merge pull request #339 from effigies/enh/surface_sphere_project
ENH: Project fsLR mesh onto native sphere to enable single-shot resampling into fsLR
2 parents c06497e + 8361310 commit 0cd77e3

25 files changed

+1160
-37
lines changed

.circleci/ds005_outputs.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,23 @@ smriprep/sub-01/anat/sub-01_dseg.nii.gz
2121
smriprep/sub-01/anat/sub-01_from-fsnative_to-T1w_mode-image_xfm.txt
2222
smriprep/sub-01/anat/sub-01_from-T1w_to-fsnative_mode-image_xfm.txt
2323
smriprep/sub-01/anat/sub-01_hemi-L_curv.shape.gii
24+
smriprep/sub-01/anat/sub-01_hemi-L_desc-reg_sphere.surf.gii
2425
smriprep/sub-01/anat/sub-01_hemi-L_inflated.surf.gii
2526
smriprep/sub-01/anat/sub-01_hemi-L_midthickness.surf.gii
2627
smriprep/sub-01/anat/sub-01_hemi-L_pial.surf.gii
27-
smriprep/sub-01/anat/sub-01_hemi-L_smoothwm.surf.gii
28+
smriprep/sub-01/anat/sub-01_hemi-L_space-fsLR_desc-reg_sphere.surf.gii
2829
smriprep/sub-01/anat/sub-01_hemi-L_sulc.shape.gii
2930
smriprep/sub-01/anat/sub-01_hemi-L_thickness.shape.gii
31+
smriprep/sub-01/anat/sub-01_hemi-L_white.surf.gii
3032
smriprep/sub-01/anat/sub-01_hemi-R_curv.shape.gii
33+
smriprep/sub-01/anat/sub-01_hemi-R_desc-reg_sphere.surf.gii
3134
smriprep/sub-01/anat/sub-01_hemi-R_inflated.surf.gii
3235
smriprep/sub-01/anat/sub-01_hemi-R_midthickness.surf.gii
3336
smriprep/sub-01/anat/sub-01_hemi-R_pial.surf.gii
34-
smriprep/sub-01/anat/sub-01_hemi-R_smoothwm.surf.gii
37+
smriprep/sub-01/anat/sub-01_hemi-R_space-fsLR_desc-reg_sphere.surf.gii
3538
smriprep/sub-01/anat/sub-01_hemi-R_sulc.shape.gii
3639
smriprep/sub-01/anat/sub-01_hemi-R_thickness.shape.gii
40+
smriprep/sub-01/anat/sub-01_hemi-R_white.surf.gii
3741
smriprep/sub-01/anat/sub-01_label-CSF_probseg.nii.gz
3842
smriprep/sub-01/anat/sub-01_label-GM_probseg.nii.gz
3943
smriprep/sub-01/anat/sub-01_label-WM_probseg.nii.gz

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@
229229

230230
apidoc_module_dir = "../smriprep"
231231
apidoc_output_dir = "api"
232-
apidoc_excluded_paths = ["conftest.py", "*/tests/*", "tests/*", "data/*", "conf/*"]
232+
apidoc_excluded_paths = ["conftest.py", "*/conftest.py", "*/tests/*", "tests/*", "data/*", "conf/*"]
233233
apidoc_separate_modules = True
234234
apidoc_extra_args = ["--module-first", "-d 1", "-T"]
235235

setup.cfg

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ classifiers =
1919
[options]
2020
python_requires = >=3.8
2121
install_requires =
22+
importlib_resources >= 1.3; python_version < '3.9'
2223
indexed_gzip >= 0.8.8
2324
lockfile
2425
looseversion
@@ -71,9 +72,11 @@ all =
7172
[options.package_data]
7273
smriprep =
7374
VERSION
74-
data/boilerplate.bib
75-
data/io_spec.json
76-
data/itkIdentityTransform.txt
75+
data/*
76+
data/atlases/*
77+
data/atlases/fs_L/*
78+
data/atlases/fs_R/*
79+
interfaces/tests/data/*
7780

7881
[options.entry_points]
7982
console_scripts =

smriprep/conftest.py

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,3 @@
11
import os
2-
from pathlib import Path
3-
from tempfile import TemporaryDirectory
4-
import pytest
52

63
os.environ['NO_ET'] = '1'
7-
8-
9-
@pytest.fixture(autouse=True, scope="session")
10-
def default_cwd():
11-
cwd = os.getcwd()
12-
with TemporaryDirectory(prefix="smriprepTest") as tmpdir:
13-
try:
14-
os.chdir(tmpdir)
15-
yield Path(tmpdir)
16-
finally:
17-
os.chdir(cwd)
18-
19-
20-
@pytest.fixture(autouse=True, scope="session")
21-
def populate_default_cwd(default_cwd):
22-
Path.write_bytes(default_cwd / 'lh.white', b'')

smriprep/data/__init__.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import atexit
2+
from contextlib import ExitStack
3+
from pathlib import Path
4+
5+
try:
6+
from functools import cache
7+
except ImportError: # PY38
8+
from functools import lru_cache as cache
9+
10+
try: # Prefer backport to leave consistency to dependency spec
11+
from importlib_resources import files, as_file
12+
except ImportError:
13+
from importlib.resources import files, as_file
14+
15+
__all__ = ["load_resource"]
16+
17+
exit_stack = ExitStack()
18+
atexit.register(exit_stack.close)
19+
20+
path = files(__package__)
21+
22+
23+
@cache
24+
def load_resource(fname: str) -> Path:
25+
return exit_stack.enter_context(as_file(path.joinpath(fname)))
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<GIFTI xmlns:xsi="true"
3+
xsi:noNamespaceSchemaLocation="true"
4+
Version="1"
5+
NumberOfDataArrays="1">
6+
<MetaData>
7+
<MD>
8+
<Name><![CDATA[AnatomicalStructurePrimary]]></Name>
9+
<Value><![CDATA[CortexLeft]]></Value>
10+
</MD>
11+
<MD>
12+
<Name><![CDATA[Caret-Version]]></Name>
13+
<Value><![CDATA[5.65]]></Value>
14+
</MD>
15+
<MD>
16+
<Name><![CDATA[Date]]></Name>
17+
<Value><![CDATA[2012-11-13T05:25:24]]></Value>
18+
</MD>
19+
<MD>
20+
<Name><![CDATA[UniqueID]]></Name>
21+
<Value><![CDATA[{1fbd4629-1f40-4e61-a530-3f24c4dd18b4}]]></Value>
22+
</MD>
23+
<MD>
24+
<Name><![CDATA[comment]]></Name>
25+
<Value><![CDATA[Deformed from: CCNMD_MyelinMapping.L.Atlas_Cortex_ROI.164k_fs_LR.func.gii
26+
Deformed with: 164k_fs_LR232k_fs_LR.L.deform_map
27+
28+
Appended File: /media/2TBB/MyelinMapping_Project/CommonFiles/FS_LR/fsaverage.L+R.MedialWall.164k_fs_LR.metric
29+
Deformed from: fsaverage.L.ProbabilisticArchitectonic.164k_fs_L.metric
30+
Deformed with: fsaverage.L.registered-to-fs_LR.164k_fs_LR.deform_map
31+
Appended File: /Users/vanessen/BRAIN_MAP_DATA/PALS_B12_HUMAN/FREESURFER-to-PALS/FREESURFER_AVG-to-PALS/FS_AVERAGE/FS_LR/fsaverage.R.ProbabilisticArchitectonic.164k_fs_LR.metric
32+
Deformed from: fsaverage.R.ProbabilisticArchitectonic.164k_fs_R.metric
33+
Deformed with: fsaverage.R.registered-to-fs_LR.164k_fs_LR.deform_map]]></Value>
34+
</MD>
35+
<MD>
36+
<Name><![CDATA[encoding]]></Name>
37+
<Value><![CDATA[XML_BASE64_GZIP]]></Value>
38+
</MD>
39+
</MetaData>
40+
<LabelTable>
41+
<Label Key="0" Red="1" Green="1" Blue="1" Alpha="0"><![CDATA[???]]></Label>
42+
</LabelTable>
43+
<DataArray Intent="NIFTI_INTENT_NONE"
44+
DataType="NIFTI_TYPE_FLOAT32"
45+
ArrayIndexingOrder="RowMajorOrder"
46+
Dimensionality="1"
47+
Dim0="32492"
48+
Encoding="GZipBase64Binary"
49+
Endian="LittleEndian"
50+
ExternalFileName=""
51+
ExternalFileOffset="0">
52+
<MetaData>
53+
<MD>
54+
<Name><![CDATA[Description]]></Name>
55+
<Value><![CDATA[Multiplied -1.0 by Atlas_Cortex_ROI
56+
Deformed with: 164k_fs_LR232k_fs_LR.L.deform_map]]></Value>
57+
</MD>
58+
<MD>
59+
<Name><![CDATA[Name]]></Name>
60+
<Value><![CDATA[deformed_Atlas_Cortex_ROI]]></Value>
61+
</MD>
62+
<MD>
63+
<Name><![CDATA[UniqueID]]></Name>
64+
<Value><![CDATA[{75dd580c-28b9-4aff-b96a-2b3e5ebf0b26}]]></Value>
65+
</MD>
66+
<MD>
67+
<Name><![CDATA[column-color-mapping]]></Name>
68+
<Value><![CDATA[-1.0 1.0]]></Value>
69+
</MD>
70+
<MD>
71+
<Name><![CDATA[column-threshold]]></Name>
72+
<Value><![CDATA[0.0 0.0]]></Value>
73+
</MD>
74+
</MetaData>
75+
<Data>eJzt3UluwkAQQFHfLFfj6Fllg2KB3UMNfou3SUTXbyywLSQ4jtfPcep4nf/v0+OqurPfSqKf3+jnPXqfq56j6Db76r2n7nuJbnrqPqrvQbvuO83Zu7Wu78zYmr0xc1/WtozXbtmujzP1ZLmHzdDxqWF1S/bZKxoi5u6eeWXe6Myrs+7OuzPn6qy7M76dk3HtTzNWrDu65vvaM9ebtRbQ2+7zNAA8TdXzZsVzfrVrlUrXV1WuCytcx2a/3s7cl/WeJeP9VLamTD0jLTN7qjfM6BidP9JQde6d2btn7py3a9aOOatnrFx/1doz1n1fO/N6s9bKsAa9jZ7/AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ImO131/j189Z6QP4Emqv/91eA+v3F+1vWJ3teZKvdVaoxsqN2Y/1lnbsnVlPI6ZerK0ZOiIboicHzU7Ym70cQYgztk54P3v759N+IwAAAAAAAAAAAAAAAAAAAAAAAAAoL+K3y939n16lb43r8tvBXX43aPqv+FUuV93/uZqvRHdo627mmd1rmyd2bhiDzv7rjbubvu2Nbrrv87oBgAAetp5H8qYzseu47667anLfjq9jjrso/oeKvdXba/YXa25am90x7et0Q0dGgEAAAAAAAAAAAAAAAAAgK5+AReeB2U=</Data>
76+
</DataArray>
77+
</GIFTI>
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<GIFTI xmlns:xsi="true"
3+
xsi:noNamespaceSchemaLocation="true"
4+
Version="1"
5+
NumberOfDataArrays="1">
6+
<MetaData>
7+
<MD>
8+
<Name><![CDATA[AnatomicalStructurePrimary]]></Name>
9+
<Value><![CDATA[CortexRight]]></Value>
10+
</MD>
11+
<MD>
12+
<Name><![CDATA[Caret-Version]]></Name>
13+
<Value><![CDATA[5.65]]></Value>
14+
</MD>
15+
<MD>
16+
<Name><![CDATA[Date]]></Name>
17+
<Value><![CDATA[2012-11-13T05:40:22]]></Value>
18+
</MD>
19+
<MD>
20+
<Name><![CDATA[UniqueID]]></Name>
21+
<Value><![CDATA[{e3d82af6-38dd-4115-9a0b-ff874545cc6e}]]></Value>
22+
</MD>
23+
<MD>
24+
<Name><![CDATA[comment]]></Name>
25+
<Value><![CDATA[Deformed from: CCNMD_MyelinMapping.R.Atlas_Cortex_ROI.164k_fs_LR.func.gii
26+
Deformed with: 164k_fs_LR232k_fs_LR.R.deform_map
27+
28+
Appended File: /media/2TBB/MyelinMapping_Project/CommonFiles/FS_LR/fsaverage.L+R.MedialWall.164k_fs_LR.metric
29+
Deformed from: fsaverage.L.ProbabilisticArchitectonic.164k_fs_L.metric
30+
Deformed with: fsaverage.L.registered-to-fs_LR.164k_fs_LR.deform_map
31+
Appended File: /Users/vanessen/BRAIN_MAP_DATA/PALS_B12_HUMAN/FREESURFER-to-PALS/FREESURFER_AVG-to-PALS/FS_AVERAGE/FS_LR/fsaverage.R.ProbabilisticArchitectonic.164k_fs_LR.metric
32+
Deformed from: fsaverage.R.ProbabilisticArchitectonic.164k_fs_R.metric
33+
Deformed with: fsaverage.R.registered-to-fs_LR.164k_fs_LR.deform_map]]></Value>
34+
</MD>
35+
<MD>
36+
<Name><![CDATA[encoding]]></Name>
37+
<Value><![CDATA[XML_BASE64_GZIP]]></Value>
38+
</MD>
39+
</MetaData>
40+
<LabelTable>
41+
<Label Key="0" Red="1" Green="1" Blue="1" Alpha="0"><![CDATA[???]]></Label>
42+
</LabelTable>
43+
<DataArray Intent="NIFTI_INTENT_NONE"
44+
DataType="NIFTI_TYPE_FLOAT32"
45+
ArrayIndexingOrder="RowMajorOrder"
46+
Dimensionality="1"
47+
Dim0="32492"
48+
Encoding="GZipBase64Binary"
49+
Endian="LittleEndian"
50+
ExternalFileName=""
51+
ExternalFileOffset="0">
52+
<MetaData>
53+
<MD>
54+
<Name><![CDATA[Description]]></Name>
55+
<Value><![CDATA[Multiplied -1.0 by Atlas_Cortex_ROI
56+
Deformed with: 164k_fs_LR232k_fs_LR.R.deform_map]]></Value>
57+
</MD>
58+
<MD>
59+
<Name><![CDATA[Name]]></Name>
60+
<Value><![CDATA[deformed_Atlas_Cortex_ROI]]></Value>
61+
</MD>
62+
<MD>
63+
<Name><![CDATA[UniqueID]]></Name>
64+
<Value><![CDATA[{ee75ce91-2bc7-4415-8c13-69d60a3f4da4}]]></Value>
65+
</MD>
66+
<MD>
67+
<Name><![CDATA[column-color-mapping]]></Name>
68+
<Value><![CDATA[-1.0 1.0]]></Value>
69+
</MD>
70+
<MD>
71+
<Name><![CDATA[column-threshold]]></Name>
72+
<Value><![CDATA[0.0 0.0]]></Value>
73+
</MD>
74+
</MetaData>
75+
<Data>eJzt3Utu4zAQRVHtLFvz0nsaBHZbH1L1ijqDMwgCsy6VwKIQIN6218/20fb6/L1vr+vqzH47qb6+Cde8er+zrlN1n33t21N128j9VHc9eS/2UK9zv27Ne3uTm7t2JramNyb3pZ4rEs+iaWf+pJ6Ulm8dd/RUN1TO3zt79PyKuUdmjph7dN6VmWdmnZl3ds6RWbNnzFx/1tpX1v209tU1/649cr1RawFrq7hPA8CTdL1f/r7Xd9lDt3PK/85Waf1dzoQdzrHpjcnPBKltic9Sac94ST0pLVc6RrVUN1ydf6WhanbF3BEzj8ztNmvPvDvmzJ4xc/1Za3dYc+R6KevAN1fv/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBE2+uYytmVrQBddH//6/we3vke1LW9e3d1x2rXuGNrdUfnxuS+1LbkruqG1J6UloSOhIancc0BuNO7+86786u/EQAAAAAAAAAAAAAAAAAAAAAAAAA8T9f/L9f9/+at8llBK3z2UffPcOrc37Vdc3bv3c1XW+9qHtU5s3Vk49/ed1+n9O1pT2zb83tR3QRAf7PvJ3eeQZLXnXFeTFtr1HNG1evPvvbM65zjzrnzOZRrVv3Zrbiv1fa0yn5Weg9cYR/d99C5f5X26pYnNFd3rNha3bBCIwAAAAAAAAAAAAAAAAAAsKp/+88MUQ==</Data>
76+
</DataArray>
77+
</GIFTI>

smriprep/data/atlases/fs_L/fs_L-to-fs_LR_fsaverage.L_LR.spherical_std.164k_fs_L.surf.gii

Lines changed: 129 additions & 0 deletions
Large diffs are not rendered by default.

smriprep/data/atlases/fs_L/fsaverage.L.sphere.164k_fs_L.surf.gii

Lines changed: 121 additions & 0 deletions
Large diffs are not rendered by default.

smriprep/data/atlases/fs_R/fs_R-to-fs_LR_fsaverage.R_LR.spherical_std.164k_fs_R.surf.gii

Lines changed: 127 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)