# Module `ammosreader.AmmosIFDataHeader`

I provide a Ammos data header for IF data frames.

Expand source code

    """I provide a Ammos data header for IF data frames."""

    import struct
    import numpy as np

    class AmmosIFDataHeader():
        """I implement an Ammos data header for IF data frames."""

        HEADER_SIZE = 56

        @classmethod
        def from_bytes(cls, bytes):
            """I return an AMMOS data header from given bytes."""
            assert len(bytes) == cls.HEADER_SIZE
            elements = struct.unpack('<IIQIIIQIIIIi', bytes)
            block_count = elements[0]
            block_length = int(elements[1])*4
            timestamp = np.datetime64(int(elements[2])*1000, 'ns')
            status = elements[3]
            source_id = elements[4]
            source_state = elements[5]
            frequency = elements[6]
            bandwidth = elements[7]
            sample_rate = elements[8]
            interpolation = elements[9]
            decimation = elements[10]
            voltage_ref = elements[11]

            return AmmosIFDataHeader(block_count, block_length, timestamp, status, source_id,
                                     source_state, frequency, bandwidth, sample_rate,
                                     interpolation, decimation, voltage_ref)

        def __init__(self, block_count, block_length, timestamp, status, source_id, source_state, frequency,
                     bandwidth, sample_rate, interpolation, decimation, voltage_ref):
            """I create a new instance of myself using the above parameters."""
            self.block_count = block_count
            self.block_length = block_length
            self.timestamp = timestamp
            self.status = status
            self.source_id = source_id
            self.source_state = source_state
            self.frequency = frequency
            self.bandwidth = bandwidth
            self.sample_rate = sample_rate
            self.interpolation = interpolation
            self.decimation = decimation
            self.voltage_ref = voltage_ref

        def __str_(self):
            output = ("\nGlobal frame body data header\n" +
                      "-----------------------------\n" +
                      "Block count:" + str(self.block_count) + "\n" +
                      "Block length:" + str(self.block_length) + "\n" +
                      "Time stamp:" + str(self.timestamp) + "\n" +
                      "Frequency:" + str(self.frequency) + "\n" +
                      "Bandwidth:" + str(self.bandwidth) + "\n" +
                      "Sample rate:" + str(self.sample_rate) + "\n")
            return output

## Classes

`class AmmosIFDataHeader (block_count, block_length, timestamp, status, source_id, source_state, frequency, bandwidth, sample_rate, interpolation, decimation, voltage_ref)`

  I implement an Ammos data header for IF data frames.

  I create a new instance of myself using the above parameters.

  Expand source code

      class AmmosIFDataHeader():
          """I implement an Ammos data header for IF data frames."""

          HEADER_SIZE = 56

          @classmethod
          def from_bytes(cls, bytes):
              """I return an AMMOS data header from given bytes."""
              assert len(bytes) == cls.HEADER_SIZE
              elements = struct.unpack('<IIQIIIQIIIIi', bytes)
              block_count = elements[0]
              block_length = int(elements[1])*4
              timestamp = np.datetime64(int(elements[2])*1000, 'ns')
              status = elements[3]
              source_id = elements[4]
              source_state = elements[5]
              frequency = elements[6]
              bandwidth = elements[7]
              sample_rate = elements[8]
              interpolation = elements[9]
              decimation = elements[10]
              voltage_ref = elements[11]

              return AmmosIFDataHeader(block_count, block_length, timestamp, status, source_id,
                                       source_state, frequency, bandwidth, sample_rate,
                                       interpolation, decimation, voltage_ref)

          def __init__(self, block_count, block_length, timestamp, status, source_id, source_state, frequency,
                       bandwidth, sample_rate, interpolation, decimation, voltage_ref):
              """I create a new instance of myself using the above parameters."""
              self.block_count = block_count
              self.block_length = block_length
              self.timestamp = timestamp
              self.status = status
              self.source_id = source_id
              self.source_state = source_state
              self.frequency = frequency
              self.bandwidth = bandwidth
              self.sample_rate = sample_rate
              self.interpolation = interpolation
              self.decimation = decimation
              self.voltage_ref = voltage_ref

          def __str_(self):
              output = ("\nGlobal frame body data header\n" +
                        "-----------------------------\n" +
                        "Block count:" + str(self.block_count) + "\n" +
                        "Block length:" + str(self.block_length) + "\n" +
                        "Time stamp:" + str(self.timestamp) + "\n" +
                        "Frequency:" + str(self.frequency) + "\n" +
                        "Bandwidth:" + str(self.bandwidth) + "\n" +
                        "Sample rate:" + str(self.sample_rate) + "\n")
              return output

  ### Class variables

  `var HEADER_SIZE`

  ### Static methods

  `def from_bytes(bytes)`

    I return an AMMOS data header from given bytes.

    Expand source code

        @classmethod
        def from_bytes(cls, bytes):
            """I return an AMMOS data header from given bytes."""
            assert len(bytes) == cls.HEADER_SIZE
            elements = struct.unpack('<IIQIIIQIIIIi', bytes)
            block_count = elements[0]
            block_length = int(elements[1])*4
            timestamp = np.datetime64(int(elements[2])*1000, 'ns')
            status = elements[3]
            source_id = elements[4]
            source_state = elements[5]
            frequency = elements[6]
            bandwidth = elements[7]
            sample_rate = elements[8]
            interpolation = elements[9]
            decimation = elements[10]
            voltage_ref = elements[11]

            return AmmosIFDataHeader(block_count, block_length, timestamp, status, source_id,
                                     source_state, frequency, bandwidth, sample_rate,
                                     interpolation, decimation, voltage_ref)