Skip to content

Commit 3cae0c2

Browse files
ghisvailtclose
authored andcommitted
ENH: Major improvement to fslmaths
- Normalize module layout - Make other_image mandatory in Mul
1 parent dee9f26 commit 3cae0c2

File tree

1 file changed

+21
-39
lines changed

1 file changed

+21
-39
lines changed

src/pydra/tasks/fsl/fslmaths.py

Lines changed: 21 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -26,38 +26,28 @@
2626

2727
__all__ = ["FSLMaths", "Mul"]
2828

29-
import os
29+
from os import PathLike
3030

31-
import attrs
31+
from attrs import define, field
32+
from pydra.engine.specs import ShellSpec, SpecInfo
33+
from pydra.engine.task import ShellCommandTask
3234

33-
import pydra
3435

35-
36-
@attrs.define(slots=False, kw_only=True)
37-
class FSLMathsSpec(pydra.specs.ShellSpec):
36+
@define(slots=False, kw_only=True)
37+
class FSLMathsSpec(ShellSpec):
3838
"""Specifications for fslmaths."""
3939

40-
_ALLOWED_DATATYPES = {"char", "short", "int", "float", "double", "input"}
40+
_datatypes = {"char", "short", "int", "float", "double", "input"}
4141

42-
datatype: str = attrs.field(
43-
metadata={
44-
"help_string": "datatype used for internal computation",
45-
"argstr": "-dt",
46-
"position": 1,
47-
"allowed_values": _ALLOWED_DATATYPES,
48-
}
42+
internal_datatype: str = field(
43+
metadata={"help_string": "internal datatype", "argstr": "-dt", "position": 1, "allowed_values": _datatypes}
4944
)
5045

51-
input_image: os.PathLike = attrs.field(
52-
metadata={
53-
"help_string": "input image",
54-
"mandatory": True,
55-
"argstr": "",
56-
"position": 2,
57-
}
46+
input_image: PathLike = field(
47+
metadata={"help_string": "input image", "mandatory": True, "argstr": "", "position": 2}
5848
)
5949

60-
output_image: str = attrs.field(
50+
output_image: str = field(
6151
metadata={
6252
"help_string": "output image",
6353
"argstr": "",
@@ -66,38 +56,30 @@ class FSLMathsSpec(pydra.specs.ShellSpec):
6656
}
6757
)
6858

69-
output_datatype: str = attrs.field(
59+
output_datatype: str = field(
7060
default="float",
71-
metadata={
72-
"help_string": "datatype used for output serialization",
73-
"argstr": "-odt",
74-
"position": -1,
75-
"allowed_values": _ALLOWED_DATATYPES,
76-
},
61+
metadata={"help_string": "output datatype", "argstr": "-odt", "position": -1, "allowed_values": _datatypes},
7762
)
7863

7964

80-
class FSLMaths(pydra.engine.ShellCommandTask):
65+
class FSLMaths(ShellCommandTask):
8166
"""Task definition for fslmaths."""
8267

8368
executable = "fslmaths"
8469

85-
input_spec = pydra.specs.SpecInfo(name="Input", bases=(FSLMathsSpec,))
70+
input_spec = SpecInfo(name="Inputs", bases=(FSLMathsSpec,))
8671

8772

88-
@attrs.define(slots=False, kw_only=True)
89-
class MulSpec(pydra.specs.ShellSpec):
73+
@define(kw_only=True)
74+
class MulSpec(FSLMathsSpec):
9075
"""Specifications for fslmaths' mul."""
9176

92-
other_image: os.PathLike = attrs.field(
93-
metadata={
94-
"help_string": "multiply input with other image",
95-
"argstr": "-mul",
96-
}
77+
other_image: PathLike = field(
78+
metadata={"help_string": "multiply input with other image", "mandatory": True, "argstr": "-mul"}
9779
)
9880

9981

10082
class Mul(FSLMaths):
10183
"""Task definition for fslmaths' mul."""
10284

103-
input_spec = pydra.specs.SpecInfo(name="Input", bases=(FSLMathsSpec, MulSpec))
85+
input_spec = SpecInfo(name="Inputs", bases=(MulSpec,))

0 commit comments

Comments
 (0)