|
8 | 8 | from bioimageio.spec.model import v0_5 |
9 | 9 |
|
10 | 10 |
|
11 | | -def _get_axis_type(a: Literal["b", "t", "i", "c", "x", "y", "z"]): |
12 | | - if a == "b": |
| 11 | +def _guess_axis_type(a: str): |
| 12 | + if a in ("b", "batch"): |
13 | 13 | return "batch" |
14 | | - elif a == "t": |
| 14 | + elif a in ("t", "time"): |
15 | 15 | return "time" |
16 | | - elif a == "i": |
| 16 | + elif a in ("i", "index"): |
17 | 17 | return "index" |
18 | | - elif a == "c": |
| 18 | + elif a in ("c", "channel"): |
19 | 19 | return "channel" |
20 | 20 | elif a in ("x", "y", "z"): |
21 | 21 | return "space" |
22 | 22 | else: |
23 | | - return "index" # return most unspecific axis |
| 23 | + raise ValueError( |
| 24 | + f"Failed to infer axis type for axis id '{a}'." |
| 25 | + + " Consider using one of: '" |
| 26 | + + "', '".join( |
| 27 | + ["b", "batch", "t", "time", "i", "index", "c", "channel", "x", "y", "z"] |
| 28 | + ) |
| 29 | + + "'. Or creating an `Axis` object instead." |
| 30 | + ) |
24 | 31 |
|
25 | 32 |
|
26 | 33 | S = TypeVar("S", bound=str) |
@@ -54,10 +61,10 @@ def create(cls, axis: AxisLike) -> Axis: |
54 | 61 | return axis |
55 | 62 | elif isinstance(axis, Axis): |
56 | 63 | return Axis(id=axis.id, type=axis.type) |
57 | | - elif isinstance(axis, str): |
58 | | - return Axis(id=AxisId(axis), type=_get_axis_type(axis)) |
59 | 64 | elif isinstance(axis, v0_5.AxisBase): |
60 | 65 | return Axis(id=AxisId(axis.id), type=axis.type) |
| 66 | + elif isinstance(axis, str): |
| 67 | + return Axis(id=AxisId(axis), type=_guess_axis_type(axis)) |
61 | 68 | else: |
62 | 69 | assert_never(axis) |
63 | 70 |
|
|
0 commit comments