fepegar/torchio

View on GitHub
src/torchio/transforms/intensity_transform.py

Summary

Maintainability
A
0 mins
Test Coverage
from typing import Dict
from typing import List

from ..data.image import Image
from ..data.subject import Subject
from .transform import Transform


class IntensityTransform(Transform):
    """Transform that modifies voxel intensities only."""

    def get_images_dict(self, subject: Subject) -> Dict[str, Image]:
        images_dict = subject.get_images_dict(
            intensity_only=True,
            include=self.include,
            exclude=self.exclude,
        )
        return images_dict

    def get_images(self, subject: Subject) -> List[Image]:
        images = subject.get_images(
            intensity_only=True,
            include=self.include,
            exclude=self.exclude,
        )
        return images

    def arguments_are_dict(self) -> bool:
        """Check if main arguments are dict.

        Return ``True`` if the type of all attributes specified in the
        :attr:`args_names` have ``dict`` type.
        """
        args = [getattr(self, name) for name in self.args_names]
        are_dict = [isinstance(arg, dict) for arg in args]
        if all(are_dict):
            return True
        elif not any(are_dict):
            return False
        else:
            message = 'Either all or none of the arguments must be dicts'
            raise ValueError(message)