From 193dc059a5f2dcc2123929357f040ec026a77a93 Mon Sep 17 00:00:00 2001 From: "Hannes F. Kuchelmeister" Date: Wed, 14 Jul 2021 11:03:16 +0200 Subject: [PATCH] add tile registration, however no all methods are implemented yet --- situr/image/situ_tile.py | 10 ++++++++- situr/registration/__init__.py | 3 +++ situr/registration/tile_registration.py | 29 +++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 situr/registration/tile_registration.py diff --git a/situr/image/situ_tile.py b/situr/image/situ_tile.py index 131ef6d..9d8e215 100644 --- a/situr/image/situ_tile.py +++ b/situr/image/situ_tile.py @@ -21,10 +21,18 @@ class Tile: SituImage(situ_image_list, nucleaus_channel=nucleaus_channel)) self.round_transformations.append(IdentityRoundTransform()) - def apply_transformations(): + def apply_transformations(self): # TODO: implement (first apply channel transformations then round transformations) pass + def apply_channel_transformations(self): + # TODO: implement + pass + + def apply_round_transformations(self): + # TODO: implement + pass + def get_image_round(self, round): return self.images[round] diff --git a/situr/registration/__init__.py b/situr/registration/__init__.py index d8912c1..1d11602 100644 --- a/situr/registration/__init__.py +++ b/situr/registration/__init__.py @@ -1 +1,4 @@ from .registration import Registration, RegistrationFunction, FilterregRegistrationFunction +from .channel_registration import ChannelRegistration +from .round_registration import RoundRegistration +from .tile_registration import TileRegistration diff --git a/situr/registration/tile_registration.py b/situr/registration/tile_registration.py new file mode 100644 index 0000000..5d54ed0 --- /dev/null +++ b/situr/registration/tile_registration.py @@ -0,0 +1,29 @@ +from situr.image.situ_tile import Tile +from situr.registration import RoundRegistration, ChannelRegistration, round_registration + + +class CombinedRegistration: + def __init__(self, round_registration: RoundRegistration = RoundRegistration(), channel_registration: ChannelRegistration = ChannelRegistration(), reference_channel=0) -> None: + self.round_registration = round_registration + self.channel_registration = channel_registration + + def do_registration_and_transform(self, tile: Tile): + """ This function applies the registration in the following order: + 1. Register the channels for each round of each tile. + 2. Apply transformations + 3. Register the rounds + 4. Apply transformation + + Args: + tile (Tile): The tile that the registration and transformations are to be performed on. + """ + # Do channel registration + for round in range(tile.get_roundcount()): + img = tile.get_image_round(round) + self.channel_registration + + tile.apply_channel_transformations() + + round_registration.do_round_registration(tile) + + tile.apply_round_transformations()