# Module `redvox.api1000.wrapped_redvox_packet.sensors.xyz`

This module contains functionality for working with XYZ channeled API M sensors.

Expand source code

    """
    This module contains functionality for working with XYZ channeled API M sensors.
    """

    from typing import List, Optional

    import redvox.api1000.common.common as common
    import redvox.api1000.common.typing
    import redvox.api1000.proto.redvox_api_m_pb2 as redvox_api_m_pb2
    import redvox.api1000.common.generic

    class Xyz(
        redvox.api1000.common.generic.ProtoBase[redvox_api_m_pb2.RedvoxPacketM.Sensors.Xyz]
    ):
        """
        Encapsulates a sensor with x, y, and z data and metadata
        """

        def __init__(self, proto: redvox_api_m_pb2.RedvoxPacketM.Sensors.Xyz):
            super().__init__(proto)
            self._timestamps: common.TimingPayload = common.TimingPayload(proto.timestamps)
            self._x_samples: common.SamplePayload = common.SamplePayload(proto.x_samples)
            self._y_samples: common.SamplePayload = common.SamplePayload(proto.y_samples)
            self._z_samples: common.SamplePayload = common.SamplePayload(proto.z_samples)

        @staticmethod
        def new() -> "Xyz":
            """
            :return: A new, empty Xyz sensor instance
            """
            return Xyz(redvox_api_m_pb2.RedvoxPacketM.Sensors.Xyz())

        def set_unit_xyz(self, unit: common.Unit) -> "Xyz":
            """
            Sets the unit of the x, y, and z channels
            :param unit: Unit to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(unit, [common.Unit])
            self._x_samples.set_unit(unit)
            self._y_samples.set_unit(unit)
            self._z_samples.set_unit(unit)
            return self

        def get_sensor_description(self) -> str:
            """
            :return: This sensor's description
            """
            return self._proto.sensor_description

        def set_sensor_description(self, sensor_description: str) -> "Xyz":
            """
            Sets this sensor's description
            :param sensor_description: Description to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(sensor_description, [str])
            self._proto.sensor_description = sensor_description
            return self

        def get_timestamps(self) -> common.TimingPayload:
            """
            :return: TimingPayload with timestamps associated with each sample
            """
            return self._timestamps

        def set_timestamps(self, timestamps: common.TimingPayload) -> "Xyz":
            """
            Sets the timestamps.
            :param timestamps: Timestamps to set.
            :return: A modified instance of self.
            """
            common.check_type(timestamps, [common.TimingPayload])
            self.get_proto().timestamps.CopyFrom(timestamps.get_proto())
            self._timestamps = common.TimingPayload(self.get_proto().timestamps)
            return self

        def get_x_samples(self) -> common.SamplePayload:
            """
            :return: SamplePayload associated with x channel
            """
            return self._x_samples

        def set_x_samples(self, x_samples: common.SamplePayload) -> "Xyz":
            """
            Sets the X channel samples.
            :param x_samples: Samples to set.
            :return: A modified instance of self.
            """
            common.check_type(x_samples, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().x_samples.CopyFrom(x_samples.get_proto())
            self._x_samples = common.SamplePayload(self.get_proto().x_samples)
            return self

        def get_y_samples(self) -> common.SamplePayload:
            """
            :return: SamplePayload associated with y channel
            """
            return self._y_samples

        def set_y_samples(self, y_samples: common.SamplePayload) -> "Xyz":
            """
            Sets the Y channel samples.
            :param y_samples: Samples to set.
            :return: A modified instance of self.
            """
            common.check_type(y_samples, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().x_samples.CopyFrom(y_samples.get_proto())
            self._y_samples = common.SamplePayload(self.get_proto().x_samples)
            return self

        def get_z_samples(self) -> common.SamplePayload:
            """
            :return: SamplePayload associated with z channel
            """
            return self._z_samples

        def set_z_samples(self, z_samples: common.SamplePayload) -> "Xyz":
            """
            Sets the Z channel samples.
            :param z_samples: Samples to set.
            :return: A modified instance of self.
            """
            common.check_type(z_samples, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().x_samples.CopyFrom(z_samples.get_proto())
            self._z_samples = common.SamplePayload(self.get_proto().x_samples)
            return self

    def validate_xyz(
        xyz_sensor: Xyz, payload_unit: Optional[common.Unit] = None
    ) -> List[str]:
        """
        Validates the XYZ sensor.
        :param xyz_sensor: Sensor to validate.
        :param payload_unit: A list of validation errors.
        :return:
        """
        errors_list = common.validate_timing_payload(xyz_sensor.get_timestamps())
        errors_list.extend(
            common.validate_sample_payload(
                xyz_sensor.get_x_samples(),
                xyz_sensor.get_sensor_description(),
                payload_unit,
            )
        )
        errors_list.extend(
            common.validate_sample_payload(
                xyz_sensor.get_y_samples(),
                xyz_sensor.get_sensor_description(),
                payload_unit,
            )
        )
        errors_list.extend(
            common.validate_sample_payload(
                xyz_sensor.get_z_samples(),
                xyz_sensor.get_sensor_description(),
                payload_unit,
            )
        )
        return errors_list

## Functions

`def validate_xyz(xyz_sensor: Xyz, payload_unit: Optional[Unit] = None) ‑> List[str]`

  Validates the XYZ sensor. :param xyz_sensor: Sensor to validate. :param payload_unit: A list of validation errors. :return:

  Expand source code

      def validate_xyz(
          xyz_sensor: Xyz, payload_unit: Optional[common.Unit] = None
      ) -> List[str]:
          """
          Validates the XYZ sensor.
          :param xyz_sensor: Sensor to validate.
          :param payload_unit: A list of validation errors.
          :return:
          """
          errors_list = common.validate_timing_payload(xyz_sensor.get_timestamps())
          errors_list.extend(
              common.validate_sample_payload(
                  xyz_sensor.get_x_samples(),
                  xyz_sensor.get_sensor_description(),
                  payload_unit,
              )
          )
          errors_list.extend(
              common.validate_sample_payload(
                  xyz_sensor.get_y_samples(),
                  xyz_sensor.get_sensor_description(),
                  payload_unit,
              )
          )
          errors_list.extend(
              common.validate_sample_payload(
                  xyz_sensor.get_z_samples(),
                  xyz_sensor.get_sensor_description(),
                  payload_unit,
              )
          )
          return errors_list

## Classes

`class Xyz (proto: src.redvox_api_m.redvox_api_m_pb2.Xyz)`

  Encapsulates a sensor with x, y, and z data and metadata

  Expand source code

      class Xyz(
          redvox.api1000.common.generic.ProtoBase[redvox_api_m_pb2.RedvoxPacketM.Sensors.Xyz]
      ):
          """
          Encapsulates a sensor with x, y, and z data and metadata
          """

          def __init__(self, proto: redvox_api_m_pb2.RedvoxPacketM.Sensors.Xyz):
              super().__init__(proto)
              self._timestamps: common.TimingPayload = common.TimingPayload(proto.timestamps)
              self._x_samples: common.SamplePayload = common.SamplePayload(proto.x_samples)
              self._y_samples: common.SamplePayload = common.SamplePayload(proto.y_samples)
              self._z_samples: common.SamplePayload = common.SamplePayload(proto.z_samples)

          @staticmethod
          def new() -> "Xyz":
              """
              :return: A new, empty Xyz sensor instance
              """
              return Xyz(redvox_api_m_pb2.RedvoxPacketM.Sensors.Xyz())

          def set_unit_xyz(self, unit: common.Unit) -> "Xyz":
              """
              Sets the unit of the x, y, and z channels
              :param unit: Unit to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(unit, [common.Unit])
              self._x_samples.set_unit(unit)
              self._y_samples.set_unit(unit)
              self._z_samples.set_unit(unit)
              return self

          def get_sensor_description(self) -> str:
              """
              :return: This sensor's description
              """
              return self._proto.sensor_description

          def set_sensor_description(self, sensor_description: str) -> "Xyz":
              """
              Sets this sensor's description
              :param sensor_description: Description to set
              :return: A modified instance of self
              """
              redvox.api1000.common.typing.check_type(sensor_description, [str])
              self._proto.sensor_description = sensor_description
              return self

          def get_timestamps(self) -> common.TimingPayload:
              """
              :return: TimingPayload with timestamps associated with each sample
              """
              return self._timestamps

          def set_timestamps(self, timestamps: common.TimingPayload) -> "Xyz":
              """
              Sets the timestamps.
              :param timestamps: Timestamps to set.
              :return: A modified instance of self.
              """
              common.check_type(timestamps, [common.TimingPayload])
              self.get_proto().timestamps.CopyFrom(timestamps.get_proto())
              self._timestamps = common.TimingPayload(self.get_proto().timestamps)
              return self

          def get_x_samples(self) -> common.SamplePayload:
              """
              :return: SamplePayload associated with x channel
              """
              return self._x_samples

          def set_x_samples(self, x_samples: common.SamplePayload) -> "Xyz":
              """
              Sets the X channel samples.
              :param x_samples: Samples to set.
              :return: A modified instance of self.
              """
              common.check_type(x_samples, [common.SamplePayload])
              # noinspection Mypy
              self.get_proto().x_samples.CopyFrom(x_samples.get_proto())
              self._x_samples = common.SamplePayload(self.get_proto().x_samples)
              return self

          def get_y_samples(self) -> common.SamplePayload:
              """
              :return: SamplePayload associated with y channel
              """
              return self._y_samples

          def set_y_samples(self, y_samples: common.SamplePayload) -> "Xyz":
              """
              Sets the Y channel samples.
              :param y_samples: Samples to set.
              :return: A modified instance of self.
              """
              common.check_type(y_samples, [common.SamplePayload])
              # noinspection Mypy
              self.get_proto().x_samples.CopyFrom(y_samples.get_proto())
              self._y_samples = common.SamplePayload(self.get_proto().x_samples)
              return self

          def get_z_samples(self) -> common.SamplePayload:
              """
              :return: SamplePayload associated with z channel
              """
              return self._z_samples

          def set_z_samples(self, z_samples: common.SamplePayload) -> "Xyz":
              """
              Sets the Z channel samples.
              :param z_samples: Samples to set.
              :return: A modified instance of self.
              """
              common.check_type(z_samples, [common.SamplePayload])
              # noinspection Mypy
              self.get_proto().x_samples.CopyFrom(z_samples.get_proto())
              self._z_samples = common.SamplePayload(self.get_proto().x_samples)
              return self

  ### Ancestors

  - ProtoBase
  - typing.Generic

  ### Static methods

  `def new() ‑> Xyz`

    :return: A new, empty Xyz sensor instance

    Expand source code

        @staticmethod
        def new() -> "Xyz":
            """
            :return: A new, empty Xyz sensor instance
            """
            return Xyz(redvox_api_m_pb2.RedvoxPacketM.Sensors.Xyz())

  ### Methods

  `def get_sensor_description(self) ‑> str`

    :return: This sensor's description

    Expand source code

        def get_sensor_description(self) -> str:
            """
            :return: This sensor's description
            """
            return self._proto.sensor_description

  `def get_timestamps(self) ‑> TimingPayload`

    :return: TimingPayload with timestamps associated with each sample

    Expand source code

        def get_timestamps(self) -> common.TimingPayload:
            """
            :return: TimingPayload with timestamps associated with each sample
            """
            return self._timestamps

  `def get_x_samples(self) ‑> SamplePayload`

    :return: SamplePayload associated with x channel

    Expand source code

        def get_x_samples(self) -> common.SamplePayload:
            """
            :return: SamplePayload associated with x channel
            """
            return self._x_samples

  `def get_y_samples(self) ‑> SamplePayload`

    :return: SamplePayload associated with y channel

    Expand source code

        def get_y_samples(self) -> common.SamplePayload:
            """
            :return: SamplePayload associated with y channel
            """
            return self._y_samples

  `def get_z_samples(self) ‑> SamplePayload`

    :return: SamplePayload associated with z channel

    Expand source code

        def get_z_samples(self) -> common.SamplePayload:
            """
            :return: SamplePayload associated with z channel
            """
            return self._z_samples

  `def set_sensor_description(self, sensor_description: str) ‑> Xyz`

    Sets this sensor's description :param sensor_description: Description to set :return: A modified instance of self

    Expand source code

        def set_sensor_description(self, sensor_description: str) -> "Xyz":
            """
            Sets this sensor's description
            :param sensor_description: Description to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(sensor_description, [str])
            self._proto.sensor_description = sensor_description
            return self

  `def set_timestamps(self, timestamps: TimingPayload) ‑> Xyz`

    Sets the timestamps. :param timestamps: Timestamps to set. :return: A modified instance of self.

    Expand source code

        def set_timestamps(self, timestamps: common.TimingPayload) -> "Xyz":
            """
            Sets the timestamps.
            :param timestamps: Timestamps to set.
            :return: A modified instance of self.
            """
            common.check_type(timestamps, [common.TimingPayload])
            self.get_proto().timestamps.CopyFrom(timestamps.get_proto())
            self._timestamps = common.TimingPayload(self.get_proto().timestamps)
            return self

  `def set_unit_xyz(self, unit: Unit) ‑> Xyz`

    Sets the unit of the x, y, and z channels :param unit: Unit to set :return: A modified instance of self

    Expand source code

        def set_unit_xyz(self, unit: common.Unit) -> "Xyz":
            """
            Sets the unit of the x, y, and z channels
            :param unit: Unit to set
            :return: A modified instance of self
            """
            redvox.api1000.common.typing.check_type(unit, [common.Unit])
            self._x_samples.set_unit(unit)
            self._y_samples.set_unit(unit)
            self._z_samples.set_unit(unit)
            return self

  `def set_x_samples(self, x_samples: SamplePayload) ‑> Xyz`

    Sets the X channel samples. :param x_samples: Samples to set. :return: A modified instance of self.

    Expand source code

        def set_x_samples(self, x_samples: common.SamplePayload) -> "Xyz":
            """
            Sets the X channel samples.
            :param x_samples: Samples to set.
            :return: A modified instance of self.
            """
            common.check_type(x_samples, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().x_samples.CopyFrom(x_samples.get_proto())
            self._x_samples = common.SamplePayload(self.get_proto().x_samples)
            return self

  `def set_y_samples(self, y_samples: SamplePayload) ‑> Xyz`

    Sets the Y channel samples. :param y_samples: Samples to set. :return: A modified instance of self.

    Expand source code

        def set_y_samples(self, y_samples: common.SamplePayload) -> "Xyz":
            """
            Sets the Y channel samples.
            :param y_samples: Samples to set.
            :return: A modified instance of self.
            """
            common.check_type(y_samples, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().x_samples.CopyFrom(y_samples.get_proto())
            self._y_samples = common.SamplePayload(self.get_proto().x_samples)
            return self

  `def set_z_samples(self, z_samples: SamplePayload) ‑> Xyz`

    Sets the Z channel samples. :param z_samples: Samples to set. :return: A modified instance of self.

    Expand source code

        def set_z_samples(self, z_samples: common.SamplePayload) -> "Xyz":
            """
            Sets the Z channel samples.
            :param z_samples: Samples to set.
            :return: A modified instance of self.
            """
            common.check_type(z_samples, [common.SamplePayload])
            # noinspection Mypy
            self.get_proto().x_samples.CopyFrom(z_samples.get_proto())
            self._z_samples = common.SamplePayload(self.get_proto().x_samples)
            return self

  ### Inherited members

  - `ProtoBase`:
    - `as_bytes`
    - `as_compressed_bytes`
    - `as_dict`
    - `as_json`
    - `get_metadata`
    - `get_proto`