Skip to content

Commit 20a2201

Browse files
committed
replace parameters class with variables for documentation
1 parent 53b2d91 commit 20a2201

File tree

2 files changed

+73
-71
lines changed

2 files changed

+73
-71
lines changed

dmriprep/cli.py

Lines changed: 10 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
import os
55
import sys
66
import warnings
7-
from bids import BIDSLayout
87

98
import click
9+
from bids import BIDSLayout
1010

1111
from .utils.bids import collect_participants
1212
from .workflows.base import init_dmriprep_wf
@@ -16,44 +16,6 @@
1616
warnings.filterwarnings("ignore", message="numpy.dtype size changed")
1717
warnings.filterwarnings("ignore", message="numpy.ufunc size changed")
1818

19-
20-
class Parameters:
21-
def __init__(
22-
self,
23-
layout,
24-
subject_list,
25-
bids_dir,
26-
output_dir,
27-
analysis_level,
28-
work_dir,
29-
ignore,
30-
b0_thresh,
31-
output_resolution,
32-
bet_dwi,
33-
bet_mag,
34-
omp_nthreads,
35-
eddy_niter,
36-
synb0_dir,
37-
acqp_file
38-
):
39-
40-
self.layout = layout
41-
self.subject_list = subject_list
42-
self.bids_dir = bids_dir
43-
self.output_dir = output_dir
44-
self.analysis_level = analysis_level
45-
self.work_dir = work_dir
46-
self.ignore = ignore
47-
self.b0_thresh = b0_thresh
48-
self.output_resolution = output_resolution
49-
self.bet_dwi = bet_dwi
50-
self.bet_mag = bet_mag
51-
self.omp_nthreads = omp_nthreads
52-
self.eddy_niter = eddy_niter
53-
self.synb0_dir = synb0_dir
54-
self.acqp_file = acqp_file
55-
56-
5719
@click.command()
5820
# arguments as specified by BIDS-Apps
5921
@click.argument("bids_dir", type=click.Path(exists=True, file_okay=False))
@@ -65,7 +27,11 @@ def __init__(
6527
)
6628
# optional arguments
6729
# options for filtering BIDS queries
68-
@click.option("--skip_bids_validation", help="Skip BIDS validation", is_flag=True)
30+
@click.option(
31+
"--skip_bids_validation",
32+
help="Assume the input dataset is BIDS compliant and skip the validation",
33+
is_flag=True
34+
)
6935
@click.option(
7036
"--participant_label",
7137
default=None,
@@ -74,7 +40,7 @@ def __init__(
7440
"sub-<participant_label> from the BIDS spec (the 'sub-' "
7541
"prefix can be removed). If this parameter is not provided "
7642
"all subjects will be analyzed. Multiple participants "
77-
"can be specified with a space delimited list.",
43+
"can be specified with a space delimited list."
7844
)
7945
# options for prepping dwi scans
8046
# @click.option(
@@ -208,26 +174,19 @@ def main(
208174
if len(output_resolution) == 1:
209175
output_resolution = output_resolution * 3
210176

211-
# Set parameters based on CLI, pass through object
212-
parameters = Parameters(
213-
layout=layout,
177+
wf = init_dmriprep_wf(
214178
subject_list=subject_list,
215-
bids_dir=bids_dir,
179+
layout=layout,
216180
output_dir=output_dir,
217-
analysis_level=analysis_level,
218181
work_dir=work_dir,
219182
ignore=list(ignore),
220183
b0_thresh=b0_thresh,
221184
output_resolution=output_resolution,
222185
bet_dwi=bet_dwi,
223186
bet_mag=bet_mag,
224187
omp_nthreads=omp_nthreads,
225-
eddy_niter=eddy_niter,
226-
synb0_dir=synb0_dir,
227-
acqp_file=acqp_file
188+
synb0_dir=synb0_dir
228189
)
229-
230-
wf = init_dmriprep_wf(parameters)
231190
wf.write_graph()
232191
wf.config["execution"]["remove_unnecessary_outputs"] = False
233192
wf.config["execution"]["keep_inputs"] = True

dmriprep/workflows/base.py

Lines changed: 63 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,22 @@
1313
from copy import deepcopy
1414

1515
from nipype.pipeline import engine as pe
16-
from .dwi import init_dwi_preproc_wf, init_output_wf
17-
18-
19-
def init_dmriprep_wf(parameters):
16+
from .dwi import init_dwi_preproc_wf, init_dwi_derivatives_wf
17+
18+
19+
def init_dmriprep_wf(
20+
subject_list,
21+
layout,
22+
output_dir,
23+
work_dir,
24+
ignore,
25+
b0_thresh,
26+
output_resolution,
27+
bet_dwi,
28+
bet_mag,
29+
omp_nthreads,
30+
synb0_dir
31+
):
2032
"""
2133
This workflow organizes the execusion of dMRIPrep, with a sub-workflow for
2234
each subject.
@@ -31,18 +43,27 @@ def init_dmriprep_wf(parameters):
3143
3244
"""
3345
dmriprep_wf = pe.Workflow(name="dmriprep_wf")
34-
dmriprep_wf.base_dir = parameters.work_dir
46+
dmriprep_wf.base_dir = work_dir
3547

36-
for subject_id in parameters.subject_list:
48+
for subject_id in subject_list:
3749

3850
single_subject_wf = init_single_subject_wf(
3951
subject_id=subject_id,
4052
name="single_subject_" + subject_id + "_wf",
41-
parameters=parameters
53+
layout=layout,
54+
output_dir=output_dir,
55+
work_dir=work_dir,
56+
ignore=ignore,
57+
b0_thresh=b0_thresh,
58+
output_resolution=output_resolution,
59+
bet_dwi=bet_dwi,
60+
bet_mag=bet_mag,
61+
omp_nthreads=omp_nthreads,
62+
synb0_dir=synb0_dir
4263
)
4364

4465
single_subject_wf.config["execution"]["crashdump_dir"] = os.path.join(
45-
parameters.output_dir, "dmriprep", "sub-" + subject_id, "log"
66+
output_dir, "dmriprep", "sub-" + subject_id, "log"
4667
)
4768
single_subject_wf.config["execution"]["remove_unnecessary_outputs"] = False
4869
single_subject_wf.config["execution"]["keep_inputs"] = True
@@ -56,7 +77,20 @@ def init_dmriprep_wf(parameters):
5677
return dmriprep_wf
5778

5879

59-
def init_single_subject_wf(subject_id, name, parameters):
80+
def init_single_subject_wf(
81+
subject_id,
82+
name,
83+
layout,
84+
output_dir,
85+
work_dir,
86+
ignore,
87+
b0_thresh,
88+
output_resolution,
89+
bet_dwi,
90+
bet_mag,
91+
omp_nthreads,
92+
synb0_dir
93+
):
6094
"""
6195
This workflow organizes the preprocessing pipeline for a single subject.
6296
It collects and reports information about the subject, and prepares
@@ -77,7 +111,7 @@ def init_single_subject_wf(subject_id, name, parameters):
77111
78112
"""
79113

80-
dwi_files = parameters.layout.get(
114+
dwi_files = layout.get(
81115
subject=subject_id,
82116
datatype="dwi",
83117
suffix="dwi",
@@ -94,40 +128,49 @@ def init_single_subject_wf(subject_id, name, parameters):
94128
subject_wf = pe.Workflow(name=name)
95129

96130
for dwi_file in dwi_files:
97-
entities = parameters.layout.parse_file_entities(dwi_file)
131+
entities = layout.parse_file_entities(dwi_file)
98132
if "session" in entities:
99133
session_id = entities["session"]
100134
else:
101135
session_id = None
102-
metadata = parameters.layout.get_metadata(dwi_file)
136+
metadata = layout.get_metadata(dwi_file)
103137
dwi_preproc_wf = init_dwi_preproc_wf(
104138
subject_id=subject_id,
105139
dwi_file=dwi_file,
106140
metadata=metadata,
107-
parameters=parameters
141+
layout=layout,
142+
output_dir=output_dir,
143+
work_dir=work_dir,
144+
ignore=ignore,
145+
b0_thresh=b0_thresh,
146+
output_resolution=output_resolution,
147+
bet_dwi=bet_dwi,
148+
bet_mag=bet_mag,
149+
omp_nthreads=omp_nthreads,
150+
synb0_dir=synb0_dir
108151
)
109-
datasink_wf = init_output_wf(
152+
datasink_wf = init_dwi_derivatives_wf(
110153
subject_id=subject_id,
111154
session_id=session_id,
112-
output_folder=parameters.output_dir
155+
output_folder=output_dir
113156
)
114157

115158
dwi_preproc_wf.base_dir = os.path.join(
116-
os.path.abspath(parameters.work_dir), subject_id
159+
os.path.abspath(work_dir), subject_id
117160
)
118161

119162
inputspec = dwi_preproc_wf.get_node("inputnode")
120163
inputspec.inputs.subject_id = subject_id
121164
inputspec.inputs.dwi_file = dwi_file
122165
inputspec.inputs.dwi_meta = metadata
123-
inputspec.inputs.bvec_file = parameters.layout.get_bvec(dwi_file)
124-
inputspec.inputs.bval_file = parameters.layout.get_bval(dwi_file)
125-
inputspec.inputs.out_dir = os.path.abspath(parameters.output_dir)
166+
inputspec.inputs.bvec_file = layout.get_bvec(dwi_file)
167+
inputspec.inputs.bval_file = layout.get_bval(dwi_file)
168+
inputspec.inputs.out_dir = os.path.abspath(output_dir)
126169

127170
ds_inputspec = datasink_wf.get_node("inputnode")
128171
ds_inputspec.inputs.subject_id = subject_id
129172
ds_inputspec.inputs.session_id = session_id
130-
ds_inputspec.inputs.output_folder = parameters.output_dir
173+
ds_inputspec.inputs.output_folder = output_dir
131174
ds_inputspec.inputs.metadata = metadata
132175

133176
if session_id:

0 commit comments

Comments
 (0)