Source code for decode.neuralfitter.em_filter
"""
Here we provide some filtering on EmitterSets.
"""
from abc import ABC, abstractmethod
from ..generic import EmitterSet
[docs]class EmitterFilter(ABC):
def __init__(self):
super().__init__()
[docs] @abstractmethod
def forward(self, em: EmitterSet) -> EmitterSet:
"""
Forwards a set of emitters through the filter implementation
Args:
em: emitters
"""
return em
[docs]class NoEmitterFilter(EmitterFilter):
"""The no filter"""
[docs] def forward(self, em):
return em
[docs]class TarEmitterFilter(EmitterFilter):
"""Filters the emitters on the target frame index."""
def __init__(self, tar_ix=0):
"""
Args:
tar_ix: (int) index of the target frame
"""
super().__init__()
self.tar_ix = tar_ix
[docs] def forward(self, em):
"""
Args:
em: (EmitterSet)
Returns:
em: (EmitterSet) filtered set of emitters
"""
ix = em.frame_ix == self.tar_ix
return em[ix]
[docs]class PhotonFilter(EmitterFilter):
"""Filter on the photon count."""
def __init__(self, th):
"""
Args:
th: (int, float) photon threshold
"""
super().__init__()
self.th = th
[docs] def forward(self, em):
"""
Args:
em: (EmitterSet)
Returns:
em: (EmitterSet) filtered set of emitters
"""
ix = em.phot >= self.th
return em[ix]