Skip to content

Commit

Permalink
Make __call__ abstract
Browse files Browse the repository at this point in the history
  • Loading branch information
Hckjs committed Feb 19, 2024
1 parent 38845ae commit d3dd7a1
Showing 1 changed file with 46 additions and 16 deletions.
62 changes: 46 additions & 16 deletions src/ctapipe/image/cleaning.py
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,7 @@ class ImageCleaner(TelescopeComponent):
``ImageCleaner.from_name()`` to construct an instance of a particular algorithm
"""

@abstractmethod
def __call__(self, tel_id: int, event: ArrayEventContainer) -> np.ndarray:
"""
Calls the relevant functions to identify pixels with signal
Expand All @@ -483,12 +484,6 @@ def __call__(self, tel_id: int, event: ArrayEventContainer) -> np.ndarray:
np.ndarray
boolean mask of pixels passing cleaning
"""
mask = self.clean_image(
tel_id=tel_id,
image=event.dl1.tel[tel_id].image,
arrival_times=event.dl1.tel[tel_id].peak_time,
)
return mask

@abstractmethod
def clean_image(
Expand Down Expand Up @@ -538,13 +533,21 @@ class TailcutsImageCleaner(ImageCleaner):
"removed.",
).tag(config=True)

def clean_image(
self, tel_id: int, image: np.ndarray, arrival_times=None
) -> np.ndarray:
def __call__(self, tel_id: int, event: ArrayEventContainer) -> np.ndarray:
"""
Apply standard picture-boundary cleaning. See `ImageCleaner.__call__()`
"""

mask = self.clean_image(
tel_id=tel_id,
image=event.dl1.tel[tel_id].image,
)
return mask

def clean_image(
self, tel_id: int, image: np.ndarray, arrival_times=None
) -> np.ndarray:

return tailcuts_clean(
self.subarray.tel[tel_id].camera.geometry,
image,
Expand All @@ -560,13 +563,21 @@ class MARSImageCleaner(TailcutsImageCleaner):
1st-pass MARS-like Image cleaner (See `ctapipe.image.mars_cleaning_1st_pass`)
"""

def clean_image(
self, tel_id: int, image: np.ndarray, arrival_times=None
) -> np.ndarray:
def __call__(self, tel_id: int, event: ArrayEventContainer) -> np.ndarray:
"""
Apply MARS-style image cleaning. See `ImageCleaner.__call__()`
"""

mask = self.clean_image(
tel_id=tel_id,
image=event.dl1.tel[tel_id].image,
)
return mask

def clean_image(
self, tel_id: int, image: np.ndarray, arrival_times=None
) -> np.ndarray:

return mars_cleaning_1st_pass(
self.subarray.tel[tel_id].camera.geometry,
image,
Expand All @@ -587,10 +598,20 @@ class FACTImageCleaner(TailcutsImageCleaner):
default_value=5.0, help="arrival time limit for neighboring " "pixels, in ns"
).tag(config=True)

def __call__(self, tel_id: int, event: ArrayEventContainer) -> np.ndarray:
"""Apply FACT-style image cleaning. see ImageCleaner.__call__()"""

mask = self.clean_image(
tel_id=tel_id,
image=event.dl1.tel[tel_id].image,
arrival_times=event.dl1.tel[tel_id].peak_time,
)
return mask

def clean_image(
self, tel_id: int, image: np.ndarray, arrival_times=None
) -> np.ndarray:
"""Apply FACT-style image cleaning. see ImageCleaner.__call__()"""

return fact_image_cleaning(
geom=self.subarray.tel[tel_id].camera.geometry,
image=image,
Expand All @@ -616,13 +637,22 @@ class TimeConstrainedImageCleaner(TailcutsImageCleaner):
help="arrival time limit for neighboring " "boundary pixels, in ns",
).tag(config=True)

def clean_image(
self, tel_id: int, image: np.ndarray, arrival_times=None
) -> np.ndarray:
def __call__(self, tel_id: int, event: ArrayEventContainer) -> np.ndarray:
"""
Apply MAGIC-like image cleaning with timing information. See `ImageCleaner.__call__()`
"""

mask = self.clean_image(
tel_id=tel_id,
image=event.dl1.tel[tel_id].image,
arrival_times=event.dl1.tel[tel_id].peak_time,
)
return mask

def clean_image(
self, tel_id: int, image: np.ndarray, arrival_times=None
) -> np.ndarray:

return time_constrained_clean(
self.subarray.tel[tel_id].camera.geometry,
image,
Expand Down

0 comments on commit d3dd7a1

Please sign in to comment.