Skip to content

Commit 7576fdc

Browse files
committed
fixing bindings for input; temp. default for output fields
1 parent 8293c71 commit 7576fdc

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

pydra/engine/boutiques.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ def __init__(
7878
if output_spec is None:
7979
output_spec = self._prepare_output_spec()
8080
self.output_spec = output_spec
81+
self.bindings = []
8182

8283
super(BoshTask, self).__init__(
8384
name=name,
@@ -146,15 +147,20 @@ def _prepare_output_spec(self):
146147
"help_string": output["description"],
147148
"mandatory": not output["optional"],
148149
}
149-
fields.append((name, File, mdata))
150+
# TODO NOW: temp. default value
151+
fields.append(
152+
(name, attr.ib(type=File, default="test_brain.nii.gz", metadata=mdata))
153+
)
150154

151155
spec = SpecInfo(name="Outputs", fields=fields, bases=(ShellOutSpec,))
152156
return spec
153157

154158
def _command_args_single(self, state_ind, ind=None):
155159
"""Get command line arguments for a single state"""
156160
input_filepath = self._input_file(state_ind=state_ind, ind=ind)
157-
cmd_list = self.inputs.executable + [input_filepath] + self.inputs.args
161+
cmd_list = (
162+
self.inputs.executable + [input_filepath] + self.inputs.args + self.bindings
163+
)
158164
return cmd_list
159165

160166
def _input_file(self, state_ind, ind=None):
@@ -166,10 +172,12 @@ def _input_file(self, state_ind, ind=None):
166172
value = getattr(self.inputs, f.name)[state_ind[f"{self.name}.{f.name}"]]
167173
else:
168174
value = getattr(self.inputs, f.name)
169-
if is_local_file(f):
170-
value = str(value)
171175
# adding to the json file if specified by the user
172176
if value is not attr.NOTHING and value != "NOTHING":
177+
if is_local_file(f):
178+
self.bindings.extend(["-v", f"{value.parent}:{value.parent}:ro"])
179+
value = str(value)
180+
173181
input_json[f.name] = value
174182

175183
filename = self.cache_dir / f"{self.name}-{ind}.json"

pydra/engine/specs.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -311,9 +311,8 @@ def collect_additional_outputs(self, input_spec, inputs, output_dir):
311311
if fld.type is File:
312312
# assuming that field should have either default or metadata, but not both
313313
if (
314-
not (fld.default is None or fld.default == attr.NOTHING)
315-
and fld.metadata
316-
):
314+
fld.default is None or fld.default == attr.NOTHING
315+
) and not fld.metadata: # TODO: is it right?
317316
raise Exception("File has to have default value or metadata")
318317
elif not fld.default == attr.NOTHING:
319318
additional_out[fld.name] = self._field_defaultvalue(

pydra/engine/tests/test_boutiques.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ def test_boutiques():
1717
btask = BoshTask(name="NA", zenodo="zenodo.1482743")
1818
btask.inputs.infile = Path(__file__).resolve().parent / "data_tests" / "test.nii.gz"
1919
btask.inputs.maskfile = "test_brain.nii.gz"
20-
btask()
20+
res = btask()
21+
# breakpoint()

0 commit comments

Comments
 (0)