Skip to content

Commit 947fbc3

Browse files
authored
Merge pull request #448 from mgxd/rf/load
RF: Load package data with acres
2 parents 519646d + 1acab58 commit 947fbc3

File tree

13 files changed

+49
-55
lines changed

13 files changed

+49
-55
lines changed

docs/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ sphinx_rtd_theme
1111
sphinxcontrib-apidoc ~= 0.3.0
1212
templateflow
1313
networkx != 2.8.1
14+
acres

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ classifiers = [
1919
license = {file = "LICENSE"}
2020
requires-python = ">=3.10"
2121
dependencies = [
22+
"acres",
2223
"indexed_gzip >= 0.8.8",
2324
"lockfile",
2425
"looseversion",

smriprep/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
1010
"""
1111

12+
from smriprep.data import load as load_data
13+
1214
from .__about__ import (
1315
__copyright__,
1416
__credits__,
@@ -19,4 +21,5 @@
1921
'__copyright__',
2022
'__credits__',
2123
'__version__',
24+
'load_data',
2225
]

smriprep/cli/run.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def get_parser():
5151
SpatialReferences,
5252
)
5353

54-
from ..__about__ import __version__
54+
import smriprep
5555

5656
parser = ArgumentParser(
5757
description='sMRIPrep: Structural MRI PREProcessing workflows',
@@ -82,7 +82,11 @@ def get_parser():
8282
)
8383

8484
# optional arguments
85-
parser.add_argument('--version', action='version', version=f'smriprep v{__version__}')
85+
parser.add_argument(
86+
'--version',
87+
action='version',
88+
version=f'smriprep v{smriprep.__version__}',
89+
)
8690

8791
g_bids = parser.add_argument_group('Options for filtering BIDS queries')
8892
g_bids.add_argument(
@@ -470,9 +474,8 @@ def build_workflow(opts, retval):
470474
from nipype import logging
471475
from niworkflows.utils.bids import collect_participants
472476

473-
from ..__about__ import __version__
474-
from ..data import load_resource
475-
from ..workflows.base import init_smriprep_wf
477+
import smriprep
478+
from smriprep.workflows.base import init_smriprep_wf
476479

477480
logger = logging.getLogger('nipype.workflow')
478481

@@ -596,7 +599,7 @@ def build_workflow(opts, retval):
596599
logger.log(
597600
25,
598601
INIT_MSG(
599-
version=__version__,
602+
version=smriprep.__version__,
600603
bids_dir=bids_dir,
601604
subject_list=subject_list,
602605
uuid=run_uuid,
@@ -651,7 +654,7 @@ def build_workflow(opts, retval):
651654
boilerplate,
652655
)
653656

654-
boilerplate_bib = load_resource('boilerplate.bib')
657+
boilerplate_bib = smriprep.load_data('boilerplate.bib')
655658

656659
# Generate HTML file resolving citations
657660
cmd = [

smriprep/conftest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import numpy as np
44
import pytest
55

6-
from smriprep.data import load_resource
6+
from smriprep.data import load
77

88
os.environ['NO_ET'] = '1'
99

@@ -12,5 +12,5 @@
1212
def _populate_namespace(doctest_namespace, tmp_path):
1313
doctest_namespace['os'] = os
1414
doctest_namespace['np'] = np
15-
doctest_namespace['load'] = load_resource
15+
doctest_namespace['load'] = load
1616
doctest_namespace['testdir'] = tmp_path

smriprep/data/__init__.py

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,14 @@
1-
import atexit
2-
from contextlib import ExitStack
3-
from pathlib import Path
1+
"""sMRIPRep data files
42
5-
try:
6-
from functools import cache
7-
except ImportError: # PY38
8-
from functools import lru_cache as cache
3+
.. autofunction:: load
94
10-
try: # Prefer backport to leave consistency to dependency spec
11-
from importlib_resources import as_file, files
12-
except ImportError:
13-
from importlib.resources import as_file, files
5+
.. automethod:: load.readable
146
15-
__all__ = ['load_resource']
7+
.. automethod:: load.as_path
168
17-
exit_stack = ExitStack()
18-
atexit.register(exit_stack.close)
9+
.. automethod:: load.cached
10+
"""
1911

20-
path = files(__package__)
12+
from acres import Loader
2113

22-
23-
@cache
24-
def load_resource(fname: str) -> Path:
25-
return exit_stack.enter_context(as_file(path.joinpath(fname)))
14+
load = Loader(__package__)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from acres import Loader
2+
3+
load = Loader(__package__)

smriprep/interfaces/tests/test_surf.py

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,15 @@
22
import numpy as np
33
from nipype.pipeline import engine as pe
44

5-
from ...data import load_resource
5+
from smriprep.interfaces.tests.data import load as load_test_data
6+
67
from ..surf import MakeRibbon
78

89

910
def test_MakeRibbon(tmp_path):
10-
res_template = '{path}/sub-fsaverage_res-4_hemi-{hemi}_desc-cropped_{surf}dist.nii.gz'
11+
res_template = 'sub-fsaverage_res-4_hemi-{hemi}_desc-cropped_{surf}dist.nii.gz'
1112
white, pial = (
12-
[
13-
load_resource(
14-
res_template.format(path='../interfaces/tests/data', hemi=hemi, surf=surf)
15-
)
16-
for hemi in 'LR'
17-
]
13+
[load_test_data(res_template.format(hemi=hemi, surf=surf)) for hemi in 'LR']
1814
for surf in ('wm', 'pial')
1915
)
2016

@@ -27,9 +23,7 @@ def test_MakeRibbon(tmp_path):
2723
result = make_ribbon.run()
2824

2925
ribbon = nb.load(result.outputs.ribbon)
30-
expected = nb.load(
31-
load_resource('../interfaces/tests/data/sub-fsaverage_res-4_desc-cropped_ribbon.nii.gz')
32-
)
26+
expected = nb.load(load_test_data('sub-fsaverage_res-4_desc-cropped_ribbon.nii.gz'))
3327

3428
assert ribbon.shape == expected.shape
3529
assert np.allclose(ribbon.affine, expected.affine)

smriprep/utils/bids.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@
2828
from bids.layout import BIDSLayout
2929
from niworkflows.data import load as nwf_load
3030

31-
from ..data import load_resource
31+
import smriprep
3232

3333

3434
def collect_derivatives(derivatives_dir, subject_id, std_spaces, spec=None, patterns=None):
3535
"""Gather existing derivatives and compose a cache."""
3636
if spec is None or patterns is None:
37-
_spec, _patterns = tuple(loads(load_resource('io_spec.json').read_text()).values())
37+
_spec, _patterns = tuple(loads(smriprep.load_data('io_spec.json').read_text()).values())
3838

3939
if spec is None:
4040
spec = _spec
@@ -96,11 +96,11 @@ def write_derivative_description(bids_dir, deriv_dir):
9696
9797
.. testsetup::
9898
99-
>>> from smriprep.data import load_resource
99+
>>> from smriprep.data import load
100100
>>> from pathlib import Path
101101
>>> from tempfile import TemporaryDirectory
102102
>>> tmpdir = TemporaryDirectory()
103-
>>> bids_dir = load_resource('tests')
103+
>>> bids_dir = load('tests')
104104
>>> deriv_desc = Path(tmpdir.name) / 'dataset_description.json'
105105
106106
.. doctest::

smriprep/utils/tests/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from niworkflows.data import Loader
1+
from acres import Loader
22

33
load_data = Loader(__package__)
44

0 commit comments

Comments
 (0)