diff --git a/situr/image/situ_tile.py b/situr/image/situ_tile.py index bb7db9e..353836e 100644 --- a/situr/image/situ_tile.py +++ b/situr/image/situ_tile.py @@ -1,22 +1,32 @@ import numpy as np from situr.image.situ_image import SituImage +from situr.transformation import IdentityRoundTransform class Tile: ''' - * Rounds 5 - * Channels 4+1 - spot colours + nuclei - * Z 1 to 30 - focus level - * Y 2048 - * X 2048 + Rounds 5 + Channels 4+1 - spot colours + nuclei + Z 1 to 30 - focus level + Y 2048 + X 2048 ''' def __init__(self, file_list, nucleaus_channel=4): self.images = [] + self.round_transformations = [] for situ_image_list in file_list: self.images.append( SituImage(situ_image_list, nucleaus_channel=nucleaus_channel)) + self.round_transformations.append(IdentityRoundTransform()) + + def apply_transformations(): + # TODO: implement (first apply channel transformations then round transformations) + pass + + def set_round_transformation(self, round, transformation): + self.round_transformations[round] = transformation def get_round_count(self): return len(self.images) diff --git a/situr/transformation/__init__.py b/situr/transformation/__init__.py index 71b3be3..fd0d4c7 100644 --- a/situr/transformation/__init__.py +++ b/situr/transformation/__init__.py @@ -1 +1,2 @@ from .channel_transformation import ChannelTransform, IdentityChannelTransform, ScaleRotateTranslateChannelTransform +from .round_transformation import RoundTransform, IdentityRoundTransform diff --git a/situr/transformation/round_transformation.py b/situr/transformation/round_transformation.py new file mode 100644 index 0000000..245f691 --- /dev/null +++ b/situr/transformation/round_transformation.py @@ -0,0 +1,16 @@ +import abc + + +class RoundTransform: + __metaclass__ = abc.ABCMeta + + @abc.abstractmethod + def apply_transformation(self, situ_tile, channel): + """Performs a transformation on one channel, all focus_levels are transformed the same way""" + raise NotImplementedError( + self.__class__.__name__ + '.apply_transformation') + + +class IdentityRoundTransform(RoundTransform): + def apply_transformation(self, situ_tile, channel): + pass