Module redvox.api900.sensors.evenly_sampled_channel

This module contains classes and methods for working with evenly sampled channels.

Expand source code
"""
This module contains classes and methods for working with evenly sampled channels.
"""

import typing

import redvox.api900.lib.api900_pb2 as api900_pb2
import redvox.api900.reader_utils as reader_utils
import redvox.api900.sensors.interleaved_channel as interleaved_channel


class EvenlySampledChannel(interleaved_channel.InterleavedChannel):
    """
    An evenly sampled channel is an interleaved channel that also has a channel with an even sampling rate.
    """

    def __init__(self, channel: typing.Optional[api900_pb2.EvenlySampledChannel] = None):
        """
        Initializes this evenly sampled channel.
        :param channel: A protobuf evenly sampled channel.
        """
        if channel is None:
            channel = reader_utils.empty_evenly_sampled_channel()

        interleaved_channel.InterleavedChannel.__init__(self, channel)
        self.sample_rate_hz: float = channel.sample_rate_hz
        """The sample rate in hz of this evenly sampled channel"""

        # pylint: disable=invalid-name
        self.first_sample_timestamp_epoch_microseconds_utc: int = \
            channel.first_sample_timestamp_epoch_microseconds_utc
        """The timestamp of the first sample"""

    def set_channel(self, channel: api900_pb2.EvenlySampledChannel):
        """
        sets the channel to an evenly sampled channel
        :param channel: evenly sampled channel
        """
        super().set_channel(channel)
        self.sample_rate_hz = channel.sample_rate_hz
        self.first_sample_timestamp_epoch_microseconds_utc = channel.first_sample_timestamp_epoch_microseconds_utc

    def set_sample_rate_hz(self, rate: float):
        """
        sets the sample rate
        :param rate: sample rate in hz
        """
        self.sample_rate_hz = rate
        self.protobuf_channel.sample_rate_hz = rate

    # pylint: disable=C0103
    def set_first_sample_timestamp_epoch_microseconds_utc(self, time: int):
        """
        set the epoch in microseconds
        :param time: time in microseconds since epoch utc
        """
        self.first_sample_timestamp_epoch_microseconds_utc = time
        self.protobuf_channel.first_sample_timestamp_epoch_microseconds_utc = time

    def __str__(self) -> str:
        """
        Returns a string representation of this evenly sampled channel.
        :return: A string representation of this evenly sampled channel.
        """
        return "{}\nsample_rate_hz: {}\nfirst_sample_timestamp_epoch_microseconds_utc: {}".format(
            super(EvenlySampledChannel, self).__str__(),
            self.sample_rate_hz,
            self.first_sample_timestamp_epoch_microseconds_utc)

Classes

class EvenlySampledChannel (channel: Optional[api900_pb2.EvenlySampledChannel] = None)

An evenly sampled channel is an interleaved channel that also has a channel with an even sampling rate.

Initializes this evenly sampled channel. :param channel: A protobuf evenly sampled channel.

Expand source code
class EvenlySampledChannel(interleaved_channel.InterleavedChannel):
    """
    An evenly sampled channel is an interleaved channel that also has a channel with an even sampling rate.
    """

    def __init__(self, channel: typing.Optional[api900_pb2.EvenlySampledChannel] = None):
        """
        Initializes this evenly sampled channel.
        :param channel: A protobuf evenly sampled channel.
        """
        if channel is None:
            channel = reader_utils.empty_evenly_sampled_channel()

        interleaved_channel.InterleavedChannel.__init__(self, channel)
        self.sample_rate_hz: float = channel.sample_rate_hz
        """The sample rate in hz of this evenly sampled channel"""

        # pylint: disable=invalid-name
        self.first_sample_timestamp_epoch_microseconds_utc: int = \
            channel.first_sample_timestamp_epoch_microseconds_utc
        """The timestamp of the first sample"""

    def set_channel(self, channel: api900_pb2.EvenlySampledChannel):
        """
        sets the channel to an evenly sampled channel
        :param channel: evenly sampled channel
        """
        super().set_channel(channel)
        self.sample_rate_hz = channel.sample_rate_hz
        self.first_sample_timestamp_epoch_microseconds_utc = channel.first_sample_timestamp_epoch_microseconds_utc

    def set_sample_rate_hz(self, rate: float):
        """
        sets the sample rate
        :param rate: sample rate in hz
        """
        self.sample_rate_hz = rate
        self.protobuf_channel.sample_rate_hz = rate

    # pylint: disable=C0103
    def set_first_sample_timestamp_epoch_microseconds_utc(self, time: int):
        """
        set the epoch in microseconds
        :param time: time in microseconds since epoch utc
        """
        self.first_sample_timestamp_epoch_microseconds_utc = time
        self.protobuf_channel.first_sample_timestamp_epoch_microseconds_utc = time

    def __str__(self) -> str:
        """
        Returns a string representation of this evenly sampled channel.
        :return: A string representation of this evenly sampled channel.
        """
        return "{}\nsample_rate_hz: {}\nfirst_sample_timestamp_epoch_microseconds_utc: {}".format(
            super(EvenlySampledChannel, self).__str__(),
            self.sample_rate_hz,
            self.first_sample_timestamp_epoch_microseconds_utc)

Ancestors

Instance variables

var first_sample_timestamp_epoch_microseconds_utc

The timestamp of the first sample

var sample_rate_hz

The sample rate in hz of this evenly sampled channel

Methods

def set_channel(self, channel: api900_pb2.EvenlySampledChannel)

sets the channel to an evenly sampled channel :param channel: evenly sampled channel

Expand source code
def set_channel(self, channel: api900_pb2.EvenlySampledChannel):
    """
    sets the channel to an evenly sampled channel
    :param channel: evenly sampled channel
    """
    super().set_channel(channel)
    self.sample_rate_hz = channel.sample_rate_hz
    self.first_sample_timestamp_epoch_microseconds_utc = channel.first_sample_timestamp_epoch_microseconds_utc
def set_first_sample_timestamp_epoch_microseconds_utc(self, time: int)

set the epoch in microseconds :param time: time in microseconds since epoch utc

Expand source code
def set_first_sample_timestamp_epoch_microseconds_utc(self, time: int):
    """
    set the epoch in microseconds
    :param time: time in microseconds since epoch utc
    """
    self.first_sample_timestamp_epoch_microseconds_utc = time
    self.protobuf_channel.first_sample_timestamp_epoch_microseconds_utc = time
def set_sample_rate_hz(self, rate: float)

sets the sample rate :param rate: sample rate in hz

Expand source code
def set_sample_rate_hz(self, rate: float):
    """
    sets the sample rate
    :param rate: sample rate in hz
    """
    self.sample_rate_hz = rate
    self.protobuf_channel.sample_rate_hz = rate

Inherited members