Skip to content

Commit be9372f

Browse files
committed
ENH: Use nireports report generation
1 parent f6ad255 commit be9372f

File tree

4 files changed

+12
-79
lines changed

4 files changed

+12
-79
lines changed

nibabies/cli/run.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,6 @@ def main():
139139
config.execution.unique_labels,
140140
config.execution.nibabies_dir,
141141
config.execution.run_uuid,
142-
config=pkgrf("nibabies", "data/reports-spec.yml"),
143-
packagename="nibabies",
144142
)
145143
write_derivative_description(config.execution.bids_dir, config.execution.nibabies_dir)
146144
write_bidsignore(config.execution.nibabies_dir)

nibabies/cli/workflow.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,6 @@ def build_workflow(config_file):
5555
config.execution.unique_labels,
5656
nibabies_dir,
5757
config.execution.run_uuid,
58-
config=pkgrf("nibabies", "data/reports-spec.yml"),
59-
packagename="nibabies",
6058
)
6159
return retval
6260

nibabies/reports/core.py

Lines changed: 11 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,16 @@
1-
from itertools import product
21
from pathlib import Path
32

4-
from niworkflows.reports.core import Report as _Report
5-
from pkg_resources import resource_filename as pkgrf
3+
from nireports.assembler.report import Report
64

7-
8-
class Report(_Report):
9-
# niworkflows patch to preserve `out_filename` even if subject_id is present
10-
def __init__(
11-
self,
12-
out_dir,
13-
run_uuid,
14-
config=None,
15-
out_filename=None,
16-
packagename=None,
17-
reportlets_dir=None,
18-
subject_id=None,
19-
):
20-
self.root = Path(reportlets_dir or out_dir)
21-
22-
# Initialize structuring elements
23-
self.sections = []
24-
self.errors = []
25-
self.out_dir = Path(out_dir)
26-
self.run_uuid = run_uuid
27-
self.packagename = packagename
28-
self.subject_id = subject_id
29-
if subject_id is not None:
30-
self.subject_id = subject_id[4:] if subject_id.startswith("sub-") else subject_id
31-
# ensure set output filename is preserved
32-
if not out_filename:
33-
out_filename = f"sub-{self.subject_id}.html"
34-
35-
self.out_filename = out_filename or "report.html"
36-
37-
# Default template from niworkflows
38-
self.template_path = Path(pkgrf("niworkflows", "reports/report.tpl"))
39-
self._load_config(Path(config or pkgrf("niworkflows", "reports/default.yml")))
40-
assert self.template_path.exists()
41-
42-
# TODO: Upstream ``Report._load_config`` to niworkflows
43-
def _load_config(self, config):
44-
from yaml import safe_load as load
45-
46-
settings = load(config.read_text())
47-
self.packagename = self.packagename or settings.get("package", None)
48-
49-
# Removed from here: Appending self.packagename to self.root and self.out_dir
50-
# In this version, pass reportlets_dir and out_dir with nibabies in the path.
51-
52-
if self.subject_id is not None:
53-
self.root = self.root / "sub-{}".format(self.subject_id)
54-
55-
if "template_path" in settings:
56-
self.template_path = config.parent / settings["template_path"]
57-
58-
self.index(settings["sections"])
59-
60-
61-
#
62-
# The following are the interface used directly by NiBabies
63-
#
5+
from nibabies.data import load_resource
646

657

668
def run_reports(
679
out_dir,
68-
subject_label,
10+
subject,
6911
run_uuid,
70-
config=None,
71-
out_filename='report.html',
12+
session=None,
13+
out_filename=None,
7214
reportlets_dir=None,
7315
packagename=None,
7416
):
@@ -78,10 +20,9 @@ def run_reports(
7820
return Report(
7921
out_dir,
8022
run_uuid,
81-
config=config,
82-
out_filename=out_filename,
83-
subject_id=subject_label,
84-
packagename=packagename,
23+
subject=subject,
24+
session=session,
25+
bootstrap_file=load_resource('reports-spec.yml'),
8526
reportlets_dir=reportlets_dir,
8627
).generate_report()
8728

@@ -90,7 +31,6 @@ def generate_reports(
9031
sub_ses_list,
9132
output_dir,
9233
run_uuid,
93-
config=None,
9434
work_dir=None,
9535
packagename=None,
9636
):
@@ -100,17 +40,13 @@ def generate_reports(
10040
reportlets_dir = Path(work_dir) / "reportlets"
10141

10242
report_errors = []
103-
for subject_label, session in sub_ses_list:
104-
html_report = ''.join(
105-
[f"sub-{subject_label}", f"_ses-{session}" if session else "", ".html"]
106-
)
43+
for subject, session in sub_ses_list:
10744
report_errors.append(
10845
run_reports(
10946
output_dir,
110-
subject_label,
47+
subject,
11148
run_uuid,
112-
config=config,
113-
out_filename=html_report,
49+
session=session,
11450
packagename=packagename,
11551
reportlets_dir=reportlets_dir,
11652
)

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ dependencies = [
2222
'importlib_resources; python_version < "3.9"',
2323
"nibabel >= 5.0.0",
2424
"nipype >= 1.8.5",
25+
"nireports @ git+https://github.com/mgxd/nireports.git@enh/report-session",
2526
"nitime",
2627
"nitransforms >= 23.0.1",
2728
"niworkflows >= 1.9.0",

0 commit comments

Comments
 (0)