(
self,
ordering_type: str,
spatial_dims: int,
dimensions: tuple[int, int, int] | tuple[int, int, int, int],
reflected_spatial_dims: tuple[bool, bool] | None = None,
transpositions_axes: tuple[tuple[int, int], ...] | tuple[tuple[int, int, int], ...] | None = None,
rot90_axes: tuple[tuple[int, int], ...] | None = None,
transformation_order: tuple[str, ...] = (
OrderingTransformations.TRANSPOSE.value,
OrderingTransformations.ROTATE_90.value,
OrderingTransformations.REFLECT.value,
),
)
| 42 | """ |
| 43 | |
| 44 | def __init__( |
| 45 | self, |
| 46 | ordering_type: str, |
| 47 | spatial_dims: int, |
| 48 | dimensions: tuple[int, int, int] | tuple[int, int, int, int], |
| 49 | reflected_spatial_dims: tuple[bool, bool] | None = None, |
| 50 | transpositions_axes: tuple[tuple[int, int], ...] | tuple[tuple[int, int, int], ...] | None = None, |
| 51 | rot90_axes: tuple[tuple[int, int], ...] | None = None, |
| 52 | transformation_order: tuple[str, ...] = ( |
| 53 | OrderingTransformations.TRANSPOSE.value, |
| 54 | OrderingTransformations.ROTATE_90.value, |
| 55 | OrderingTransformations.REFLECT.value, |
| 56 | ), |
| 57 | ) -> None: |
| 58 | super().__init__() |
| 59 | self.ordering_type = ordering_type |
| 60 | |
| 61 | if self.ordering_type not in list(OrderingType): |
| 62 | raise ValueError( |
| 63 | f"ordering_type must be one of the following {list(OrderingType)}, but got {self.ordering_type}." |
| 64 | ) |
| 65 | |
| 66 | self.spatial_dims = spatial_dims |
| 67 | self.dimensions = dimensions |
| 68 | |
| 69 | if len(dimensions) != self.spatial_dims + 1: |
| 70 | raise ValueError(f"dimensions must be of length {self.spatial_dims + 1}, but got {len(dimensions)}.") |
| 71 | |
| 72 | self.reflected_spatial_dims = reflected_spatial_dims |
| 73 | self.transpositions_axes = transpositions_axes |
| 74 | self.rot90_axes = rot90_axes |
| 75 | if len(set(transformation_order)) != len(transformation_order): |
| 76 | raise ValueError(f"No duplicates are allowed. Received {transformation_order}.") |
| 77 | |
| 78 | for transformation in transformation_order: |
| 79 | if transformation not in list(OrderingTransformations): |
| 80 | raise ValueError( |
| 81 | f"Valid transformations are {list(OrderingTransformations)} but received {transformation}." |
| 82 | ) |
| 83 | self.transformation_order = transformation_order |
| 84 | |
| 85 | self.template = self._create_template() |
| 86 | self._sequence_ordering = self._create_ordering() |
| 87 | self._revert_sequence_ordering = np.argsort(self._sequence_ordering) |
| 88 | |
| 89 | def __call__(self, x: np.ndarray) -> np.ndarray: |
| 90 | x = x[self._sequence_ordering] |
nothing calls this directly
no test coverage detected