Source code for mosaic.filters.metaIOFilter

# -*- coding: utf-8 -*-
"""
	A meta class that defines the interface for filtering data that is read in by any 
	implementation of metaTrajIO

	:Created:	7/1/2013
 	:Author: 	Arvind Balijepalli <arvind.balijepalli@nist.gov>
	:License:	See LICENSE.TXT
	:ChangeLog:
	.. line-block::
		7/1/13		AB	Initial version
"""
from abc import ABCMeta, abstractmethod
import mosaic.utilities.util as util
from mosaic.utilities.mosaicLogFormat import mosaic_property

__all__ = ["metaIOFilter"]

[docs]class metaIOFilter(object, metaclass=ABCMeta): """ .. warning:: |metaclass| Defines the interface for specific filter implementations. Each filtering algorithm must sub-class metaIOFilter and implement the following abstract function: - `filterData` : apply a filter to self.eventData :Parameters: - `decimate` : sets the downsampling ratio of the filtered data (default:1, no decimation). :Properties: - `filteredData` : list of filtered and decimated data - `filterFs` : sampling frequency after filtering and decimation """ def __init__(self, **kwargs): """ """ self.decimate=int(kwargs.pop('decimate', 1)) # sub-class initialization self._init(**kwargs)
[docs] @abstractmethod def _init(self, **kwargs): """ .. important:: |abstractmethod| """ pass
[docs] @abstractmethod def filterData(self, icurr, Fs): """ .. important:: |abstractmethod| This is the equivalent of a pure virtual function in C++. Implementations of this method MUST store (1) a ref to the raw event data in self.eventData AND (2) the sampling frequency in self.Fs. :Parameters: - `icurr` : ionic current in pA - `Fs` : original sampling frequency in Hz """ pass
[docs] @abstractmethod def formatsettings(self): """ .. important:: |abstractmethod| Return a formatted string of filter settings """ pass
@abstractmethod def _filterCutoffFrequency(self): """ .. important:: |abstractmethod| Return the filter cutoff frequency in Hz """ pass @mosaic_property def filteredData(self): """ Return filtered data """ # return util.decimate(self.eventData, self.decimate) return self.eventData[::self.decimate] @mosaic_property def filterFs(self): """ Return the sampling frequency of filtered data. """ return self.Fs/self.decimate