Skip to content

Commit b6cf4d2

Browse files
authored
Merge pull request #6 from yibeichan/convert-fsl-1
fixing typing as string issue
2 parents a3d984e + 40bd802 commit b6cf4d2

File tree

3 files changed

+43
-19
lines changed

3 files changed

+43
-19
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
task_name: ExtractROI
2+
nipype_module: nipype.interfaces.fsl.utils
3+
output_requirements:
4+
roi_file: [in_file]
5+
output_templates:
6+
roi_file: "{in_file}_trim"
7+
inputs_drop:
8+
- crop_list
9+
doctest:
10+
in_file: test.nii.gz
11+
t_min: 0
12+
t_size: 3
13+
roi_file: test_trim.nii.gz
14+
cmdline: fslroi test.nii.gz test_trim.nii.gz 0 3
15+
tests_inputs: []
16+
# - in_file: test.nii.gz
17+
# t_min: 0
18+
# t_size: 1
19+
tests_outputs: []
20+
# - roi_file

nipype2pydra/task.py

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from pathlib import Path
33
import typing as ty
44
from types import ModuleType
5+
import re
56
import inspect
67
import black
78
import traits
@@ -12,15 +13,14 @@
1213
from pydra.engine.helpers import ensure_list
1314
from .utils import import_module_from_path
1415

15-
1616
@attrs.define
1717
class TaskConverter:
1818

1919
task_name: str
2020
nipype_module: ModuleType = attrs.field(converter=import_module_from_path)
2121
output_requirements: dict = attrs.field(factory=dict)
2222
inputs_metadata: dict = attrs.field(factory=dict)
23-
inputs_drop: dict = attrs.field(factory=list)
23+
inputs_drop: dict = attrs.field(factory=dict)
2424
output_templates: dict = attrs.field(factory=dict)
2525
output_callables: dict = attrs.field(factory=dict)
2626
doctest: dict = attrs.field(factory=dict)
@@ -304,8 +304,12 @@ def types_to_names(spec_fields):
304304
el = list(el)
305305
try:
306306
el[1] = el[1].__name__
307+
# add 'TYPE_' to the beginning of the name
308+
el[1] = "TYPE_" + el[1]
307309
except (AttributeError):
308310
el[1] = el[1]._name
311+
# add 'TYPE_' to the beginning of the name
312+
el[1] = "TYPE_" + el[1]
309313
spec_fields_str.append(tuple(el))
310314
return spec_fields_str
311315

@@ -321,16 +325,15 @@ def types_to_names(spec_fields):
321325
spec_str += f"{self.task_name}_input_spec = specs.SpecInfo(name='Input', fields=input_fields, bases=(specs.ShellSpec,))\n\n"
322326
spec_str += f"output_fields = {output_fields_str}\n"
323327
spec_str += f"{self.task_name}_output_spec = specs.SpecInfo(name='Output', fields=output_fields, bases=(specs.ShellOutSpec,))\n\n"
324-
325328
spec_str += f"class {self.task_name}(ShellCommandTask):\n"
326329
if self.doctest:
327330
spec_str += self.create_doctest()
328331
spec_str += f" input_spec = {self.task_name}_input_spec\n"
329332
spec_str += f" output_spec = {self.task_name}_output_spec\n"
330333
spec_str += f" executable='{self.nipype_interface._cmd}'\n"
331334

332-
# for tp_repl in self.TYPE_REPLACE:
333-
# spec_str = spec_str.replace(*tp_repl)
335+
for tp_repl in self.TYPE_REPLACE:
336+
spec_str = spec_str.replace(*tp_repl)
334337

335338
spec_str_black = black.format_file_contents(
336339
spec_str, fast=False, mode=black.FileMode()
@@ -410,7 +413,6 @@ def write_test_error(self, input_error):
410413
spec_str += f" task = {self.task_name}(in_file=in_file, **inputs)\n"
411414
spec_str += " with pytest.raises(eval(error)):\n"
412415
spec_str += " task.generated_output_names\n"
413-
414416
return spec_str
415417

416418
def create_doctest(self):
@@ -454,16 +456,16 @@ def create_doctest(self):
454456
]
455457

456458
TYPE_REPLACE = [
457-
("'File'", "specs.File"),
458-
("'bool'", "bool"),
459-
("'str'", "str"),
460-
("'Any'", "ty.Any"),
461-
("'int'", "int"),
462-
("'float'", "float"),
463-
("'list'", "list"),
464-
("'dict'", "dict"),
465-
("'MultiInputObj'", "specs.MultiInputObj"),
466-
("'MultiOutputObj'", "specs.MultiOutputObj"),
467-
("'MultiInputFile'", "specs.MultiInputFile"),
468-
("'MultiOutputFile'", "specs.MultiOutputFile"),
469-
]
459+
("'TYPE_File'", "specs.File"),
460+
("'TYPE_bool'", "bool"),
461+
("'TYPE_str'", "str"),
462+
("'TYPE_Any'", "ty.Any"),
463+
("'TYPE_int'", "int"),
464+
("'TYPE_float'", "float"),
465+
("'TYPE_list'", "list"),
466+
("'TYPE_dict'", "dict"),
467+
("'TYPE_MultiInputObj'", "specs.MultiInputObj"),
468+
("'TYPE_MultiOutputObj'", "specs.MultiOutputObj"),
469+
("'TYPE_MultiInputFile'", "specs.MultiInputFile"),
470+
("'TYPE_MultiOutputFile'", "specs.MultiOutputFile"),
471+
]

tests/test_task.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
"trait_added",
1717
"trait_modified",
1818
"environ",
19+
"output_type",
20+
"crop_list",
1921
]
2022

2123

0 commit comments

Comments
 (0)