Source code for NuRadioReco.framework.channel

from __future__ import absolute_import, division, print_function
import NuRadioReco.framework.base_trace
import NuRadioReco.framework.parameters as parameters
import NuRadioReco.framework.parameter_serialization
try:
    import cPickle as pickle
except ImportError:
    import pickle
import logging
logger = logging.getLogger('NuRadioReco.Channel')


[docs]class Channel(NuRadioReco.framework.base_trace.BaseTrace): def __init__(self, channel_id, channel_group_id=None): """ Parameters ---------- channel_id: int the id of the channel channel_group_id: int (default None) optionally, several channels can belong to a "channel group". Use case is to identify the channels of a single dual or triple polarized antenna as common in air shower arrays. """ NuRadioReco.framework.base_trace.BaseTrace.__init__(self) self._parameters = {} self._id = channel_id self._group_id = channel_group_id
[docs] def get_parameter(self, key): if not isinstance(key, parameters.channelParameters): logger.error("parameter key needs to be of type NuRadioReco.framework.parameters.channelParameters") raise ValueError("parameter key needs to be of type NuRadioReco.framework.parameters.channelParameters") return self._parameters[key]
[docs] def get_parameters(self): return self._parameters
[docs] def set_parameter(self, key, value): if not isinstance(key, parameters.channelParameters): logger.error("parameter key needs to be of type NuRadioReco.framework.parameters.channelParameters") raise ValueError("parameter key needs to be of type NuRadioReco.framework.parameters.channelParameters") self._parameters[key] = value
[docs] def has_parameter(self, key): if not isinstance(key, parameters.channelParameters): logger.error("parameter key needs to be of type NuRadioReco.framework.parameters.channelParameters") raise ValueError("parameter key needs to be of type NuRadioReco.framework.parameters.channelParameters") return key in self._parameters
def __setitem__(self, key, value): self.set_parameter(key, value) def __getitem__(self, key): return self.get_parameter(key)
[docs] def get_id(self): return self._id
[docs] def get_group_id(self): """ channel group id If no group id is specified, the channel id is returned. This allows using modules that use the `group_id` feature also on detector setups that don't use this feature. """ if self._group_id is None: return self._id else: return self._group_id
[docs] def serialize(self, save_trace): if save_trace: base_trace_pkl = NuRadioReco.framework.base_trace.BaseTrace.serialize(self) else: base_trace_pkl = None data = {'parameters': NuRadioReco.framework.parameter_serialization.serialize(self._parameters), 'id': self.get_id(), 'group_id': self._group_id, 'base_trace': base_trace_pkl} return pickle.dumps(data, protocol=4)
[docs] def deserialize(self, data_pkl): data = pickle.loads(data_pkl) if(data['base_trace'] is not None): NuRadioReco.framework.base_trace.BaseTrace.deserialize(self, data['base_trace']) self._parameters = NuRadioReco.framework.parameter_serialization.deserialize(data['parameters'], parameters.channelParameters) self._id = data['id'] self._group_id = data.get('group_id') # Attempts to load group_id, returns None if not found