Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FIX: Move from pkg_resources to niworkflows.data.Loader #1199

Merged
merged 1 commit into from Mar 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions mriqc/data/config.py
Expand Up @@ -23,7 +23,7 @@
"""Utilities: Jinja2 templates."""
from pathlib import Path

from pkg_resources import resource_filename as pkgrf
from niworkflows.data import Loader


class GroupTemplate:
Expand All @@ -37,7 +37,7 @@ class GroupTemplate:
def __init__(self):
import jinja2

self.template_str = pkgrf("mriqc", "data/reports/group.html")
self.template_str = Loader(__package__)("data/reports/group.html")
self.env = jinja2.Environment(
loader=jinja2.FileSystemLoader(searchpath="/"),
trim_blocks=True,
Expand Down
7 changes: 4 additions & 3 deletions mriqc/interfaces/common/ensure_size.py
Expand Up @@ -37,12 +37,13 @@
isdefined,
traits,
)
from pkg_resources import resource_filename as pkgrf
from niworkflows.data import Loader

OUT_FILE_NAME = "{prefix}_resampled{ext}"
OUT_MASK_NAME = "{prefix}_resmask{ext}"
REF_FILE_NAME = "resample_ref.nii.gz"
REF_MASK_NAME = "mask_ref.nii.gz"
load_data = Loader(__package__)


class EnsureSizeInputSpec(BaseInterfaceInputSpec):
Expand Down Expand Up @@ -146,7 +147,7 @@ def _run_interface(self, runtime):
input_image=self.inputs.in_file,
reference_image=REF_FILE_NAME,
interpolation="LanczosWindowedSinc",
transforms=[pkgrf("mriqc", "data/itk_identity.tfm")],
transforms=[load_data("data/itk_identity.tfm")],
output_image=out_file,
).run()

Expand All @@ -167,7 +168,7 @@ def _run_interface(self, runtime):
input_image=self.inputs.in_mask,
reference_image=REF_MASK_NAME,
interpolation="NearestNeighbor",
transforms=[pkgrf("mriqc", "data/itk_identity.tfm")],
transforms=[load_data("data/itk_identity.tfm")],
output_image=out_mask,
).run()

Expand Down
18 changes: 6 additions & 12 deletions mriqc/reports/group.py
Expand Up @@ -33,7 +33,7 @@ def gen_html(csv_file, mod, csv_failed=None, out_file=None):
import datetime
import os.path as op

from pkg_resources import resource_filename as pkgrf
from niworkflows.data import Loader

from .. import __version__ as ver
from mriqc.data.config import GroupTemplate
Expand All @@ -43,6 +43,8 @@ def gen_html(csv_file, mod, csv_failed=None, out_file=None):
else:
from io import BytesIO as TextIO

load_data = Loader(__package__)

QCGROUPS = {
"T1w": [
(["cjv"], None),
Expand Down Expand Up @@ -266,21 +268,13 @@ def gen_html(csv_file, mod, csv_failed=None, out_file=None):
"csv_groups": csv_groups,
"failed": failed,
"boxplots_js": open(
pkgrf(
"mriqc",
op.join("data", "reports", "embed_resources", "boxplots.js"),
)
load_data("data/reports/embed_resources/boxplots.js"),
).read(),
"d3_js": open(
pkgrf(
"mriqc", op.join("data", "reports", "embed_resources", "d3.min.js")
)
load_data("data/reports/embed_resources/d3.min.js"),
).read(),
"boxplots_css": open(
pkgrf(
"mriqc",
op.join("data", "reports", "embed_resources", "boxplots.css"),
)
load_data("data/reports/embed_resources/boxplots.css"),
).read(),
},
out_file,
Expand Down
6 changes: 4 additions & 2 deletions mriqc/reports/individual.py
Expand Up @@ -23,8 +23,10 @@
"""Encapsulates report generation functions."""
from pathlib import Path
from json import loads
from pkg_resources import resource_filename as pkgrf
from nireports.assembler.report import Report
from niworkflows.data import Loader

_load_data = Loader(__package__)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is going to work quite how you want. I'm pretty sure this will load relative to mriqc.reports.individual. I would suggest instead having data/__init__.py define load_data and import from there.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would _load_data = Loader("mriqc") work?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes.



def generate_reports():
Expand Down Expand Up @@ -86,7 +88,7 @@ def _single_report(in_file):
config.execution.output_dir,
config.execution.run_uuid,
reportlets_dir=config.execution.work_dir / "reportlets",
bootstrap_file=pkgrf("mriqc", f"data/bootstrap-{report_type}.yml"),
bootstrap_file=_load_data(f"data/bootstrap-{report_type}.yml"),
metadata={
"dataset": config.execution.dsname,
"about-metadata": {
Expand Down
10 changes: 6 additions & 4 deletions mriqc/testing.py
Expand Up @@ -24,17 +24,19 @@
from contextlib import contextmanager
from pathlib import Path
from tempfile import mkdtemp

from pkg_resources import resource_filename as pkgrf
from toml import loads

from niworkflows.data import Loader

_load_data = Loader(__package__)


@contextmanager
def mock_config():
"""Create a mock config for documentation and testing purposes."""
from . import config

filename = Path(pkgrf("mriqc", "data/config-example.toml"))
filename = Path(_load_data("data/config-example.toml"))
settings = loads(filename.read_text())
for sectionname, configs in settings.items():
if sectionname != "environment":
Expand All @@ -44,7 +46,7 @@ def mock_config():
config.loggers.init()

config.execution.work_dir = Path(mkdtemp())
config.execution.bids_dir = Path(pkgrf("mriqc", "data/tests/ds000005")).absolute()
config.execution.bids_dir = Path(_load_data("data/tests/ds000005")).absolute()
config.execution.init()

yield