Пример #1
0
    def encode(self):
        """
        Encode the data into RTB format.
        :return:
        """
        result = []

        self.num_elements = (8 * int(
            self.NumBeams)) + 1  # 8 is the number of list plus 1 for NumBeams

        # Generate header
        result += Ensemble.generate_header(self.ds_type, self.num_elements,
                                           self.element_multiplier, self.image,
                                           self.name_len, self.Name)

        # Add the data
        result += Ensemble.float_to_bytes(self.NumBeams)

        for beam in range(len(self.SNR)):
            result += Ensemble.float_to_bytes(self.SNR[beam])

        for beam in range(len(self.Range)):
            result += Ensemble.float_to_bytes(self.Range[beam])

        for beam in range(len(self.Pings)):
            result += Ensemble.float_to_bytes(self.Pings[beam])

        for beam in range(len(self.Amplitude)):
            result += Ensemble.float_to_bytes(self.Amplitude[beam])

        for beam in range(len(self.Correlation)):
            result += Ensemble.float_to_bytes(self.Correlation[beam])

        for beam in range(len(self.BeamVelocity)):
            result += Ensemble.float_to_bytes(self.BeamVelocity[beam])

        for beam in range(len(self.InstrumentVelocity)):
            result += Ensemble.float_to_bytes(self.InstrumentVelocity[beam])

        for beam in range(len(self.EarthVelocity)):
            result += Ensemble.float_to_bytes(self.EarthVelocity[beam])

        return result
Пример #2
0
    def encode(self):
        """
        Encode the data into RTB format.
        :return:
        """
        result = []

        # Generate header
        result += Ensemble.generate_header(self.ds_type, self.num_elements,
                                           self.element_multiplier, self.image,
                                           self.name_len, self.Name)

        # Add the data
        for beam in range(self.element_multiplier):
            for bin_num in range(self.num_elements):
                val = self.Correlation[bin_num][beam]
                result += Ensemble.float_to_bytes(val)

        return result
Пример #3
0
def test_ancillary():
    ss = SystemSetup()

    ss.BtSamplesPerSecond = 1.0
    ss.BtSystemFreqHz = 3.0
    ss.BtCPCE = 1.2
    ss.BtNCE = 2.3
    ss.BtRepeatN = 23.5
    ss.WpSamplesPerSecond = 13.6
    ss.WpSystemFreqHz = 11.25
    ss.WpCPCE = 25.3
    ss.WpNCE = 54.6
    ss.WpRepeatN = 35.0
    ss.WpLagSamples = 23.78
    ss.Voltage = 45.69
    ss.XmtVoltage = 1400.23
    ss.BtBroadband = 3.0
    ss.BtLagLength = 4.0
    ss.BtNarrowband = 5.0
    ss.BtBeamMux = 6.0
    ss.WpBroadband = 6.0
    ss.WpLagLength = 6.0
    ss.WpTransmitBandwidth = 6.0
    ss.WpReceiveBandwidth = 6.0
    ss.TransmitBoostNegVolt = 6.0
    ss.WpBeamMux = 6.0
    ss.Reserved = 6.0
    ss.Reserved1 = 6.0

    # Populate data

    result = ss.encode()

    # Value type
    assert 0xA == result[0]
    assert 0x0 == result[1]
    assert 0x0 == result[2]
    assert 0x0 == result[3]

    # Num Elements
    assert 0x19 == result[4]
    assert 0x0 == result[5]
    assert 0x0 == result[6]
    assert 0x0 == result[7]

    # Element Multiplier
    assert 0x1 == result[8]
    assert 0x0 == result[9]
    assert 0x0 == result[10]
    assert 0x0 == result[11]

    # Imag
    assert 0x0 == result[12]
    assert 0x0 == result[13]
    assert 0x0 == result[14]
    assert 0x0 == result[15]

    # Name Length
    assert 0x8 == result[16]
    assert 0x0 == result[17]
    assert 0x0 == result[18]
    assert 0x0 == result[19]

    # Name
    assert ord('E') == result[20]
    assert ord('0') == result[21]
    assert ord('0') == result[22]
    assert ord('0') == result[23]
    assert ord('0') == result[24]
    assert ord('1') == result[25]
    assert ord('4') == result[26]
    assert ord('\0') == result[27]

    # Length
    assert len(result) == 28 + (25 * Ensemble.BytesInFloat)

    # Data
    # Bottom Track Samples Per Second
    assert Ensemble.float_to_bytes(1.0)[0] == result[28]
    assert Ensemble.float_to_bytes(1.0)[1] == result[29]
    assert Ensemble.float_to_bytes(1.0)[2] == result[30]
    assert Ensemble.float_to_bytes(1.0)[3] == result[31]

    # Bottom Track System Frequency (Hz)
    assert Ensemble.float_to_bytes(3.0)[0] == result[32]
    assert Ensemble.float_to_bytes(3.0)[1] == result[33]
    assert Ensemble.float_to_bytes(3.0)[2] == result[34]
    assert Ensemble.float_to_bytes(3.0)[3] == result[35]

    # Bottom Track Cycles per Code Elements
    assert Ensemble.float_to_bytes(1.2)[0] == result[36]
    assert Ensemble.float_to_bytes(1.2)[1] == result[37]
    assert Ensemble.float_to_bytes(1.2)[2] == result[38]
    assert Ensemble.float_to_bytes(1.2)[3] == result[39]

    # Bottom Track Number of Code Elements
    assert Ensemble.float_to_bytes(2.3)[0] == result[40]
    assert Ensemble.float_to_bytes(2.3)[1] == result[41]
    assert Ensemble.float_to_bytes(2.3)[2] == result[42]
    assert Ensemble.float_to_bytes(2.3)[3] == result[43]

    # Bottom Track Number of Code Repeats
    assert Ensemble.float_to_bytes(23.5)[0] == result[44]
    assert Ensemble.float_to_bytes(23.5)[1] == result[45]
    assert Ensemble.float_to_bytes(23.5)[2] == result[46]
    assert Ensemble.float_to_bytes(23.5)[3] == result[47]

    # Water Profile Samples per Second
    assert Ensemble.float_to_bytes(13.6)[0] == result[48]
    assert Ensemble.float_to_bytes(13.6)[1] == result[49]
    assert Ensemble.float_to_bytes(13.6)[2] == result[50]
    assert Ensemble.float_to_bytes(13.6)[3] == result[51]

    # Water Profile System Frequency (Hz)
    assert Ensemble.float_to_bytes(11.25)[0] == result[52]
    assert Ensemble.float_to_bytes(11.25)[1] == result[53]
    assert Ensemble.float_to_bytes(11.25)[2] == result[54]
    assert Ensemble.float_to_bytes(11.25)[3] == result[55]

    # Water Profile Cycles per Code Element
    assert Ensemble.float_to_bytes(25.3)[0] == result[56]
    assert Ensemble.float_to_bytes(25.3)[1] == result[57]
    assert Ensemble.float_to_bytes(25.3)[2] == result[58]
    assert Ensemble.float_to_bytes(25.3)[3] == result[59]

    # Water Profile Number of Code Element
    assert Ensemble.float_to_bytes(54.6)[0] == result[60]
    assert Ensemble.float_to_bytes(54.6)[1] == result[61]
    assert Ensemble.float_to_bytes(54.6)[2] == result[62]
    assert Ensemble.float_to_bytes(54.6)[3] == result[63]

    # Water Profile Number of Code Repeats
    assert Ensemble.float_to_bytes(35.0)[0] == result[64]
    assert Ensemble.float_to_bytes(35.0)[1] == result[65]
    assert Ensemble.float_to_bytes(35.0)[2] == result[66]
    assert Ensemble.float_to_bytes(35.0)[3] == result[67]

    # Water Profile Lag Samples
    assert Ensemble.float_to_bytes(23.78)[0] == result[68]
    assert Ensemble.float_to_bytes(23.78)[1] == result[69]
    assert Ensemble.float_to_bytes(23.78)[2] == result[70]
    assert Ensemble.float_to_bytes(23.78)[3] == result[71]

    # Voltage input to ADCP
    assert Ensemble.float_to_bytes(45.69)[0] == result[72]
    assert Ensemble.float_to_bytes(45.69)[1] == result[73]
    assert Ensemble.float_to_bytes(45.69)[2] == result[74]
    assert Ensemble.float_to_bytes(45.69)[3] == result[75]

    # Transmit Voltage
    assert Ensemble.float_to_bytes(1400.23)[0] == result[76]
    assert Ensemble.float_to_bytes(1400.23)[1] == result[77]
    assert Ensemble.float_to_bytes(1400.23)[2] == result[78]
    assert Ensemble.float_to_bytes(1400.23)[3] == result[79]

    # Bottom Track Broadband
    assert Ensemble.float_to_bytes(3.0)[0] == result[80]
    assert Ensemble.float_to_bytes(3.0)[1] == result[81]
    assert Ensemble.float_to_bytes(3.0)[2] == result[82]
    assert Ensemble.float_to_bytes(3.0)[3] == result[83]

    # Bottom Track Lag Length
    assert Ensemble.float_to_bytes(4.0)[0] == result[84]
    assert Ensemble.float_to_bytes(4.0)[1] == result[85]
    assert Ensemble.float_to_bytes(4.0)[2] == result[86]
    assert Ensemble.float_to_bytes(4.0)[3] == result[87]

    # Bottom Track Narrowband
    assert Ensemble.float_to_bytes(5.0)[0] == result[88]
    assert Ensemble.float_to_bytes(5.0)[1] == result[89]
    assert Ensemble.float_to_bytes(5.0)[2] == result[90]
    assert Ensemble.float_to_bytes(5.0)[3] == result[91]

    # Bottom Track Beam MUX
    assert Ensemble.float_to_bytes(6.0)[0] == result[92]
    assert Ensemble.float_to_bytes(6.0)[1] == result[93]
    assert Ensemble.float_to_bytes(6.0)[2] == result[94]
    assert Ensemble.float_to_bytes(6.0)[3] == result[95]

    # Water Profile Broadband
    assert Ensemble.float_to_bytes(6.0)[0] == result[96]
    assert Ensemble.float_to_bytes(6.0)[1] == result[97]
    assert Ensemble.float_to_bytes(6.0)[2] == result[98]
    assert Ensemble.float_to_bytes(6.0)[3] == result[99]

    # Water Profile Lag Length
    assert Ensemble.float_to_bytes(6.0)[0] == result[100]
    assert Ensemble.float_to_bytes(6.0)[1] == result[101]
    assert Ensemble.float_to_bytes(6.0)[2] == result[102]
    assert Ensemble.float_to_bytes(6.0)[3] == result[103]

    # Water Profile Transmit Bandwidth
    assert Ensemble.float_to_bytes(6.0)[0] == result[104]
    assert Ensemble.float_to_bytes(6.0)[1] == result[105]
    assert Ensemble.float_to_bytes(6.0)[2] == result[106]
    assert Ensemble.float_to_bytes(6.0)[3] == result[107]

    # Water Profile Receive Bandwidth
    assert Ensemble.float_to_bytes(6.0)[0] == result[108]
    assert Ensemble.float_to_bytes(6.0)[1] == result[109]
    assert Ensemble.float_to_bytes(6.0)[2] == result[110]
    assert Ensemble.float_to_bytes(6.0)[3] == result[111]

    # Transmit Boost Negative Voltage
    assert Ensemble.float_to_bytes(6.0)[0] == result[112]
    assert Ensemble.float_to_bytes(6.0)[1] == result[113]
    assert Ensemble.float_to_bytes(6.0)[2] == result[114]
    assert Ensemble.float_to_bytes(6.0)[3] == result[115]

    # WP Beam Mux
    assert Ensemble.float_to_bytes(6.0)[0] == result[116]
    assert Ensemble.float_to_bytes(6.0)[1] == result[117]
    assert Ensemble.float_to_bytes(6.0)[2] == result[118]
    assert Ensemble.float_to_bytes(6.0)[3] == result[119]

    # Reserved
    assert Ensemble.float_to_bytes(6.0)[0] == result[120]
    assert Ensemble.float_to_bytes(6.0)[1] == result[121]
    assert Ensemble.float_to_bytes(6.0)[2] == result[122]
    assert Ensemble.float_to_bytes(6.0)[3] == result[123]

    # Reserved 1
    assert Ensemble.float_to_bytes(6.0)[0] == result[124]
    assert Ensemble.float_to_bytes(6.0)[1] == result[125]
    assert Ensemble.float_to_bytes(6.0)[2] == result[126]
    assert Ensemble.float_to_bytes(6.0)[3] == result[127]
def test_ancillary():
    anc = AncillaryData()
    anc.FirstBinRange = 1.0  # Blank.  Depth to the first bin in meters.
    anc.BinSize = 3.0  # Size of a bin in meters.
    anc.FirstPingTime = 1.2  # First Ping Time in seconds.
    anc.LastPingTime = 2.3  # Last Ping Time in seconds.  (If averaging pings, this will be the last ping)
    anc.Heading = 23.5  # Heading in degrees.
    anc.Pitch = 13.6  # Pitch in degrees.
    anc.Roll = 11.25  # Roll in degrees.
    anc.WaterTemp = 25.3  # Water Temperature in fahrenheit
    anc.SystemTemp = 54.6  # System Temperature in fahrenheit
    anc.Salinity = 35.0  # Water Salinity set by the user in PPT
    anc.Pressure = 23.78  # Pressure from pressure sensor in Pascals
    anc.TransducerDepth = 45.69  # Transducer Depth, used by Pressure sensor in meters
    anc.SpeedOfSound = 1400.23  # Speed of Sound in m/s.
    anc.RawMagFieldStrength = 3.0  # Raw magnetic field strength
    anc.RawMagFieldStrength2 = 4.0  # Raw magnetic field strength
    anc.RawMagFieldStrength3 = 5.0  # Raw magnetic field strength
    anc.PitchGravityVector = 4.0  # Pitch Gravity Vector
    anc.RollGravityVector = 5.0  # Roll Gravity Vector
    anc.VerticalGravityVector = 6.0  # Vertical Gravity Vector

    # Populate data

    result = anc.encode()

    # Value type
    assert 0xA == result[0]
    assert 0x0 == result[1]
    assert 0x0 == result[2]
    assert 0x0 == result[3]

    # Num Elements
    assert 0x13 == result[4]
    assert 0x0 == result[5]
    assert 0x0 == result[6]
    assert 0x0 == result[7]

    # Element Multiplier
    assert 0x1 == result[8]
    assert 0x0 == result[9]
    assert 0x0 == result[10]
    assert 0x0 == result[11]

    # Imag
    assert 0x0 == result[12]
    assert 0x0 == result[13]
    assert 0x0 == result[14]
    assert 0x0 == result[15]

    # Name Length
    assert 0x8 == result[16]
    assert 0x0 == result[17]
    assert 0x0 == result[18]
    assert 0x0 == result[19]

    # Name
    assert ord('E') == result[20]
    assert ord('0') == result[21]
    assert ord('0') == result[22]
    assert ord('0') == result[23]
    assert ord('0') == result[24]
    assert ord('0') == result[25]
    assert ord('9') == result[26]
    assert ord('\0') == result[27]

    # Length
    assert len(result) == 28 + (
        (anc.element_multiplier * anc.num_elements) * Ensemble.BytesInFloat)

    # Data
    # First Bin Range
    assert Ensemble.float_to_bytes(1.0)[0] == result[28]
    assert Ensemble.float_to_bytes(1.0)[1] == result[29]
    assert Ensemble.float_to_bytes(1.0)[2] == result[30]
    assert Ensemble.float_to_bytes(1.0)[3] == result[31]

    # Bin SIze
    assert Ensemble.float_to_bytes(3.0)[0] == result[32]
    assert Ensemble.float_to_bytes(3.0)[1] == result[33]
    assert Ensemble.float_to_bytes(3.0)[2] == result[34]
    assert Ensemble.float_to_bytes(3.0)[3] == result[35]

    # First Ping TIme
    assert Ensemble.float_to_bytes(1.2)[0] == result[36]
    assert Ensemble.float_to_bytes(1.2)[1] == result[37]
    assert Ensemble.float_to_bytes(1.2)[2] == result[38]
    assert Ensemble.float_to_bytes(1.2)[3] == result[39]

    # Last Ping TIme
    assert Ensemble.float_to_bytes(2.3)[0] == result[40]
    assert Ensemble.float_to_bytes(2.3)[1] == result[41]
    assert Ensemble.float_to_bytes(2.3)[2] == result[42]
    assert Ensemble.float_to_bytes(2.3)[3] == result[43]

    # Heading
    assert Ensemble.float_to_bytes(23.5)[0] == result[44]
    assert Ensemble.float_to_bytes(23.5)[1] == result[45]
    assert Ensemble.float_to_bytes(23.5)[2] == result[46]
    assert Ensemble.float_to_bytes(23.5)[3] == result[47]

    # Pitch
    assert Ensemble.float_to_bytes(13.6)[0] == result[48]
    assert Ensemble.float_to_bytes(13.6)[1] == result[49]
    assert Ensemble.float_to_bytes(13.6)[2] == result[50]
    assert Ensemble.float_to_bytes(13.6)[3] == result[51]

    # Roll
    assert Ensemble.float_to_bytes(11.25)[0] == result[52]
    assert Ensemble.float_to_bytes(11.25)[1] == result[53]
    assert Ensemble.float_to_bytes(11.25)[2] == result[54]
    assert Ensemble.float_to_bytes(11.25)[3] == result[55]

    # Water Temp
    assert Ensemble.float_to_bytes(25.3)[0] == result[56]
    assert Ensemble.float_to_bytes(25.3)[1] == result[57]
    assert Ensemble.float_to_bytes(25.3)[2] == result[58]
    assert Ensemble.float_to_bytes(25.3)[3] == result[59]

    # System Temp
    assert Ensemble.float_to_bytes(54.6)[0] == result[60]
    assert Ensemble.float_to_bytes(54.6)[1] == result[61]
    assert Ensemble.float_to_bytes(54.6)[2] == result[62]
    assert Ensemble.float_to_bytes(54.6)[3] == result[63]

    # Salinity
    assert Ensemble.float_to_bytes(35.0)[0] == result[64]
    assert Ensemble.float_to_bytes(35.0)[1] == result[65]
    assert Ensemble.float_to_bytes(35.0)[2] == result[66]
    assert Ensemble.float_to_bytes(35.0)[3] == result[67]

    # Pressure
    assert Ensemble.float_to_bytes(23.78)[0] == result[68]
    assert Ensemble.float_to_bytes(23.78)[1] == result[69]
    assert Ensemble.float_to_bytes(23.78)[2] == result[70]
    assert Ensemble.float_to_bytes(23.78)[3] == result[71]

    # Transducer Depth
    assert Ensemble.float_to_bytes(45.69)[0] == result[72]
    assert Ensemble.float_to_bytes(45.69)[1] == result[73]
    assert Ensemble.float_to_bytes(45.69)[2] == result[74]
    assert Ensemble.float_to_bytes(45.69)[3] == result[75]

    # Speed of Sound
    assert Ensemble.float_to_bytes(1400.23)[0] == result[76]
    assert Ensemble.float_to_bytes(1400.23)[1] == result[77]
    assert Ensemble.float_to_bytes(1400.23)[2] == result[78]
    assert Ensemble.float_to_bytes(1400.23)[3] == result[79]

    # Raw Mag
    assert Ensemble.float_to_bytes(3.0)[0] == result[80]
    assert Ensemble.float_to_bytes(3.0)[1] == result[81]
    assert Ensemble.float_to_bytes(3.0)[2] == result[82]
    assert Ensemble.float_to_bytes(3.0)[3] == result[83]

    # Raw Mag 2
    assert Ensemble.float_to_bytes(4.0)[0] == result[84]
    assert Ensemble.float_to_bytes(4.0)[1] == result[85]
    assert Ensemble.float_to_bytes(4.0)[2] == result[86]
    assert Ensemble.float_to_bytes(4.0)[3] == result[87]

    # Raw Mag 3
    assert Ensemble.float_to_bytes(5.0)[0] == result[88]
    assert Ensemble.float_to_bytes(5.0)[1] == result[89]
    assert Ensemble.float_to_bytes(5.0)[2] == result[90]
    assert Ensemble.float_to_bytes(5.0)[3] == result[91]

    # Raw Pitch
    assert Ensemble.float_to_bytes(4.0)[0] == result[92]
    assert Ensemble.float_to_bytes(4.0)[1] == result[93]
    assert Ensemble.float_to_bytes(4.0)[2] == result[94]
    assert Ensemble.float_to_bytes(4.0)[3] == result[95]

    # Raw Roll
    assert Ensemble.float_to_bytes(5.0)[0] == result[96]
    assert Ensemble.float_to_bytes(5.0)[1] == result[97]
    assert Ensemble.float_to_bytes(5.0)[2] == result[98]
    assert Ensemble.float_to_bytes(5.0)[3] == result[99]

    # Raw Vert
    assert Ensemble.float_to_bytes(6.0)[0] == result[100]
    assert Ensemble.float_to_bytes(6.0)[1] == result[101]
    assert Ensemble.float_to_bytes(6.0)[2] == result[102]
    assert Ensemble.float_to_bytes(6.0)[3] == result[103]
Пример #5
0
    def encode(self):
        """
        Encode the data into RTB format.
        :return:
        """
        result = []

        # Generate header
        result += Ensemble.generate_header(self.ds_type,
                                           self.num_elements,
                                           self.element_multiplier,
                                           self.image,
                                           self.name_len,
                                           self.Name)

        # Add the data
        result += Ensemble.float_to_bytes(self.FirstBinRange)
        result += Ensemble.float_to_bytes(self.BinSize)
        result += Ensemble.float_to_bytes(self.FirstPingTime)
        result += Ensemble.float_to_bytes(self.LastPingTime)
        result += Ensemble.float_to_bytes(self.Heading)
        result += Ensemble.float_to_bytes(self.Pitch)
        result += Ensemble.float_to_bytes(self.Roll)
        result += Ensemble.float_to_bytes(self.WaterTemp)
        result += Ensemble.float_to_bytes(self.SystemTemp)
        result += Ensemble.float_to_bytes(self.Salinity)
        result += Ensemble.float_to_bytes(self.Pressure)
        result += Ensemble.float_to_bytes(self.TransducerDepth)
        result += Ensemble.float_to_bytes(self.SpeedOfSound)
        result += Ensemble.float_to_bytes(self.RawMagFieldStrength)
        result += Ensemble.float_to_bytes(self.RawMagFieldStrength2)
        result += Ensemble.float_to_bytes(self.RawMagFieldStrength3)
        result += Ensemble.float_to_bytes(self.PitchGravityVector)
        result += Ensemble.float_to_bytes(self.RollGravityVector)
        result += Ensemble.float_to_bytes(self.VerticalGravityVector)

        return result
Пример #6
0
    def encode(self):
        """
        Encode the data into RTB format.
        :return:
        """
        result = []

        # Generate header
        result += Ensemble.generate_header(self.ds_type, self.num_elements,
                                           self.element_multiplier, self.image,
                                           self.name_len, self.Name)

        # Add the data
        result += Ensemble.float_to_bytes(self.BtSamplesPerSecond)
        result += Ensemble.float_to_bytes(self.BtSystemFreqHz)
        result += Ensemble.float_to_bytes(self.BtCPCE)
        result += Ensemble.float_to_bytes(self.BtNCE)
        result += Ensemble.float_to_bytes(self.BtRepeatN)
        result += Ensemble.float_to_bytes(self.WpSamplesPerSecond)
        result += Ensemble.float_to_bytes(self.WpSystemFreqHz)
        result += Ensemble.float_to_bytes(self.WpCPCE)
        result += Ensemble.float_to_bytes(self.WpNCE)
        result += Ensemble.float_to_bytes(self.WpRepeatN)
        result += Ensemble.float_to_bytes(self.WpLagSamples)
        result += Ensemble.float_to_bytes(self.Voltage)
        result += Ensemble.float_to_bytes(self.XmtVoltage)
        result += Ensemble.float_to_bytes(self.BtBroadband)
        result += Ensemble.float_to_bytes(self.BtLagLength)
        result += Ensemble.float_to_bytes(self.BtNarrowband)
        result += Ensemble.float_to_bytes(self.BtBeamMux)
        result += Ensemble.float_to_bytes(self.WpBroadband)
        result += Ensemble.float_to_bytes(self.WpLagLength)
        result += Ensemble.float_to_bytes(self.WpTransmitBandwidth)
        result += Ensemble.float_to_bytes(self.WpReceiveBandwidth)
        result += Ensemble.float_to_bytes(self.TransmitBoostNegVolt)
        result += Ensemble.float_to_bytes(self.WpBeamMux)
        result += Ensemble.float_to_bytes(self.Reserved)
        result += Ensemble.float_to_bytes(self.Reserved1)

        return result
Пример #7
0
    def encode(self):
        """
        Encode the data into RTB format.
        :return:
        """
        result = []

        self.num_elements = (15 * int(self.NumBeams)) + 14

        # Generate header
        result += Ensemble.generate_header(self.ds_type, self.num_elements,
                                           self.element_multiplier, self.image,
                                           self.name_len, self.Name)

        # Add the data
        result += Ensemble.float_to_bytes(self.FirstPingTime)
        result += Ensemble.float_to_bytes(self.LastPingTime)
        result += Ensemble.float_to_bytes(self.Heading)
        result += Ensemble.float_to_bytes(self.Pitch)
        result += Ensemble.float_to_bytes(self.Roll)
        result += Ensemble.float_to_bytes(self.WaterTemp)
        result += Ensemble.float_to_bytes(self.SystemTemp)
        result += Ensemble.float_to_bytes(self.Salinity)
        result += Ensemble.float_to_bytes(self.Pressure)
        result += Ensemble.float_to_bytes(self.TransducerDepth)
        result += Ensemble.float_to_bytes(self.SpeedOfSound)
        result += Ensemble.float_to_bytes(self.Status)
        result += Ensemble.float_to_bytes(self.NumBeams)
        result += Ensemble.float_to_bytes(self.ActualPingCount)

        for beam in range(len(self.Range)):
            result += Ensemble.float_to_bytes(self.Range[beam])

        for beam in range(len(self.SNR)):
            result += Ensemble.float_to_bytes(self.SNR[beam])

        for beam in range(len(self.Amplitude)):
            result += Ensemble.float_to_bytes(self.Amplitude[beam])

        for beam in range(len(self.Correlation)):
            result += Ensemble.float_to_bytes(self.Correlation[beam])

        for beam in range(len(self.BeamVelocity)):
            result += Ensemble.float_to_bytes(self.BeamVelocity[beam])

        for beam in range(len(self.BeamGood)):
            result += Ensemble.float_to_bytes(self.BeamGood[beam])

        for beam in range(len(self.InstrumentVelocity)):
            result += Ensemble.float_to_bytes(self.InstrumentVelocity[beam])

        for beam in range(len(self.InstrumentGood)):
            result += Ensemble.float_to_bytes(self.InstrumentGood[beam])

        for beam in range(len(self.EarthVelocity)):
            result += Ensemble.float_to_bytes(self.EarthVelocity[beam])

        for beam in range(len(self.EarthGood)):
            result += Ensemble.float_to_bytes(self.EarthGood[beam])

        for beam in range(len(self.SNR_PulseCoherent)):
            result += Ensemble.float_to_bytes(self.SNR_PulseCoherent[beam])

        for beam in range(len(self.Amp_PulseCoherent)):
            result += Ensemble.float_to_bytes(self.Amp_PulseCoherent[beam])

        for beam in range(len(self.Vel_PulseCoherent)):
            result += Ensemble.float_to_bytes(self.Vel_PulseCoherent[beam])

        for beam in range(len(self.Noise_PulseCoherent)):
            result += Ensemble.float_to_bytes(self.Vel_PulseCoherent[beam])

        for beam in range(len(self.Corr_PulseCoherent)):
            result += Ensemble.float_to_bytes(self.Vel_PulseCoherent[beam])

        return result
def test_range_tracking_data():
    rt = RangeTracking()
    rt.NumBeams = 4.0
    rt.Range = [1.1, 2.2, 3.3, 4.4]
    rt.Pings = [1, 2, 3, 4]
    rt.SNR = [1.1, 2.2, 3.3, 4.4]
    rt.Amplitude = [1.1, 2.2, 3.3, 4.4]
    rt.Correlation = [1.1, 2.2, 3.3, 4.4]
    rt.BeamVelocity = [1.1, 2.2, 3.3, 4.4]
    rt.InstrumentVelocity = [1.1, 2.2, 3.3, 4.4]
    rt.EarthVelocity = [1.1, 2.2, 3.3, 4.4]

    # Populate data

    result = rt.encode()

    # Value type
    assert 0x0A == result[0]
    assert 0x0 == result[1]
    assert 0x0 == result[2]
    assert 0x0 == result[3]

    # Num Elements
    assert 0x21 == result[4]
    assert 0x0 == result[5]
    assert 0x0 == result[6]
    assert 0x0 == result[7]

    # Element Multiplier
    assert 0x1 == result[8]
    assert 0x0 == result[9]
    assert 0x0 == result[10]
    assert 0x0 == result[11]

    # Imag
    assert 0x0 == result[12]
    assert 0x0 == result[13]
    assert 0x0 == result[14]
    assert 0x0 == result[15]

    # Name Length
    assert 0x8 == result[16]
    assert 0x0 == result[17]
    assert 0x0 == result[18]
    assert 0x0 == result[19]

    # Name
    assert ord('E') == result[20]
    assert ord('0') == result[21]
    assert ord('0') == result[22]
    assert ord('0') == result[23]
    assert ord('0') == result[24]
    assert ord('1') == result[25]
    assert ord('5') == result[26]
    assert ord('\0') == result[27]

    # Length
    assert len(result) == (33 * Ensemble.BytesInFloat) + 28

    # Data

    # Number of Beams
    assert Ensemble.float_to_bytes(4)[0] == result[28]
    assert Ensemble.float_to_bytes(4)[1] == result[29]
    assert Ensemble.float_to_bytes(4)[2] == result[30]
    assert Ensemble.float_to_bytes(4)[3] == result[31]

    index = 32

    # SNR Beam 0
    assert Ensemble.float_to_bytes(1.1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[3] == result[index]
    index += 1
    # SNR Beam 1
    assert Ensemble.float_to_bytes(2.2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[3] == result[index]
    index += 1
    # SNR Beam 2
    assert Ensemble.float_to_bytes(3.3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[3] == result[index]
    index += 1
    # SNR Beam 3
    assert Ensemble.float_to_bytes(4.4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[3] == result[index]
    index += 1

    # Range Beam 0
    assert Ensemble.float_to_bytes(1.1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[3] == result[index]
    index += 1
    # Range Beam 1
    assert Ensemble.float_to_bytes(2.2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[3] == result[index]
    index += 1
    # Range Beam 2
    assert Ensemble.float_to_bytes(3.3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[3] == result[index]
    index += 1
    # Range Beam 3
    assert Ensemble.float_to_bytes(4.4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[3] == result[index]
    index += 1

    # Pings Beam 0
    assert Ensemble.float_to_bytes(1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[3] == result[index]
    index += 1
    # Pings Beam 1
    assert Ensemble.float_to_bytes(2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[3] == result[index]
    index += 1
    # Pings Beam 2
    assert Ensemble.float_to_bytes(3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[3] == result[index]
    index += 1
    # Pings Beam 3
    assert Ensemble.float_to_bytes(4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[3] == result[index]
    index += 1

    # Amplitude Beam 0
    assert Ensemble.float_to_bytes(1.1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[3] == result[index]
    index += 1
    # Amplitude Beam 1
    assert Ensemble.float_to_bytes(2.2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[3] == result[index]
    index += 1
    # Amplitude Beam 2
    assert Ensemble.float_to_bytes(3.3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[3] == result[index]
    index += 1
    # Amplitude Beam 3
    assert Ensemble.float_to_bytes(4.4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[3] == result[index]
    index += 1

    # Correlation Beam 0
    assert Ensemble.float_to_bytes(1.1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[3] == result[index]
    index += 1
    # Correlation Beam 1
    assert Ensemble.float_to_bytes(2.2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[3] == result[index]
    index += 1
    # Correlation Beam 2
    assert Ensemble.float_to_bytes(3.3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[3] == result[index]
    index += 1
    # Correlation Beam 3
    assert Ensemble.float_to_bytes(4.4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[3] == result[index]
    index += 1

    # Beam Velocity Beam 0
    assert Ensemble.float_to_bytes(1.1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[3] == result[index]
    index += 1
    # Beam Velocity Beam 1
    assert Ensemble.float_to_bytes(2.2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[3] == result[index]
    index += 1
    # Beam Velocity Beam 2
    assert Ensemble.float_to_bytes(3.3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[3] == result[index]
    index += 1
    # Beam Velocity Beam 3
    assert Ensemble.float_to_bytes(4.4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[3] == result[index]
    index += 1

    # Instrument Velocity Beam 0
    assert Ensemble.float_to_bytes(1.1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[3] == result[index]
    index += 1
    # Instrument Velocity Beam 1
    assert Ensemble.float_to_bytes(2.2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[3] == result[index]
    index += 1
    # Instrument Velocity Beam 2
    assert Ensemble.float_to_bytes(3.3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[3] == result[index]
    index += 1
    # Instrument Velocity Beam 3
    assert Ensemble.float_to_bytes(4.4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[3] == result[index]
    index += 1

    # Earth Velocity Beam 0
    assert Ensemble.float_to_bytes(1.1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[3] == result[index]
    index += 1
    # Earth Velocity Beam 1
    assert Ensemble.float_to_bytes(2.2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[3] == result[index]
    index += 1
    # Earth Velocity Beam 2
    assert Ensemble.float_to_bytes(3.3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[3] == result[index]
    index += 1
    # Earth Velocity Beam 3
    assert Ensemble.float_to_bytes(4.4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[3] == result[index]
    index += 1
Пример #9
0
def test_BottomTrackdata():
    bt = BottomTrack()
    bt.FirstPingTime = 12.5
    bt.LastPingTime = 12.8
    bt.Heading = 152.36
    bt.Pitch = 12.6
    bt.Roll = 223.1
    bt.WaterTemp = 15.23
    bt.SystemTemp = 78.58
    bt.Salinity = 35.0
    bt.Pressure = 23.36
    bt.TransducerDepth = 156.2
    bt.SpeedOfSound = 1402.36
    bt.Status = 9.0
    bt.NumBeams = 4.0
    bt.ActualPingCount = 23
    bt.Range = [1.1, 2.2, 3.3, 4.4]
    bt.SNR = [1.1, 2.2, 3.3, 4.4]
    bt.Amplitude = [1.1, 2.2, 3.3, 4.4]
    bt.Correlation = [1.1, 2.2, 3.3, 4.4]
    bt.BeamVelocity = [1.1, 2.2, 3.3, 4.4]
    bt.BeamGood = [1, 2, 3, 4]
    bt.InstrumentVelocity = [1.1, 2.2, 3.3, 4.4]
    bt.InstrumentGood = [1, 2, 3, 4]
    bt.EarthVelocity = [1.1, 2.2, 3.3, 4.4]
    bt.EarthGood = [1, 2, 3, 4]
    bt.SNR_PulseCoherent = [1, 2, 3, 4]
    bt.Amp_PulseCoherent = [1, 2, 3, 4]
    bt.Vel_PulseCoherent = [1, 2, 3, 4]
    bt.Noise_PulseCoherent = [1, 2, 3, 4]
    bt.Corr_PulseCoherent = [1, 2, 3, 4]

    # Populate data

    result = bt.encode()

    # Value type
    assert 0x0A == result[0]
    assert 0x0 == result[1]
    assert 0x0 == result[2]
    assert 0x0 == result[3]

    # Num Elements
    assert 0x4A == result[4]
    assert 0x0 == result[5]
    assert 0x0 == result[6]
    assert 0x0 == result[7]

    # Element Multiplier
    assert 0x1 == result[8]
    assert 0x0 == result[9]
    assert 0x0 == result[10]
    assert 0x0 == result[11]

    # Imag
    assert 0x0 == result[12]
    assert 0x0 == result[13]
    assert 0x0 == result[14]
    assert 0x0 == result[15]

    # Name Length
    assert 0x8 == result[16]
    assert 0x0 == result[17]
    assert 0x0 == result[18]
    assert 0x0 == result[19]

    # Name
    assert ord('E') == result[20]
    assert ord('0') == result[21]
    assert ord('0') == result[22]
    assert ord('0') == result[23]
    assert ord('0') == result[24]
    assert ord('1') == result[25]
    assert ord('0') == result[26]
    assert ord('\0') == result[27]

    # Length
    assert len(result) == (74 * Ensemble.BytesInFloat) + 28

    # Data
    # First Ping Time
    assert Ensemble.float_to_bytes(12.5)[0] == result[28]
    assert Ensemble.float_to_bytes(12.5)[1] == result[29]
    assert Ensemble.float_to_bytes(12.5)[2] == result[30]
    assert Ensemble.float_to_bytes(12.5)[3] == result[31]

    # Last Ping Time
    assert Ensemble.float_to_bytes(12.8)[0] == result[32]
    assert Ensemble.float_to_bytes(12.8)[1] == result[33]
    assert Ensemble.float_to_bytes(12.8)[2] == result[34]
    assert Ensemble.float_to_bytes(12.8)[3] == result[35]

    # Heading
    assert Ensemble.float_to_bytes(152.36)[0] == result[36]
    assert Ensemble.float_to_bytes(152.36)[1] == result[37]
    assert Ensemble.float_to_bytes(152.36)[2] == result[38]
    assert Ensemble.float_to_bytes(152.36)[3] == result[39]

    # Pitch
    assert Ensemble.float_to_bytes(12.6)[0] == result[40]
    assert Ensemble.float_to_bytes(12.6)[1] == result[41]
    assert Ensemble.float_to_bytes(12.6)[2] == result[42]
    assert Ensemble.float_to_bytes(12.6)[3] == result[43]

    # Roll
    assert Ensemble.float_to_bytes(223.1)[0] == result[44]
    assert Ensemble.float_to_bytes(223.1)[1] == result[45]
    assert Ensemble.float_to_bytes(223.1)[2] == result[46]
    assert Ensemble.float_to_bytes(223.1)[3] == result[47]

    # Water Temp
    assert Ensemble.float_to_bytes(15.23)[0] == result[48]
    assert Ensemble.float_to_bytes(15.23)[1] == result[49]
    assert Ensemble.float_to_bytes(15.23)[2] == result[50]
    assert Ensemble.float_to_bytes(15.23)[3] == result[51]

    # System Temp
    assert Ensemble.float_to_bytes(78.58)[0] == result[52]
    assert Ensemble.float_to_bytes(78.58)[1] == result[53]
    assert Ensemble.float_to_bytes(78.58)[2] == result[54]
    assert Ensemble.float_to_bytes(78.58)[3] == result[55]

    # Salinity
    assert Ensemble.float_to_bytes(35)[0] == result[56]
    assert Ensemble.float_to_bytes(35)[1] == result[57]
    assert Ensemble.float_to_bytes(35)[2] == result[58]
    assert Ensemble.float_to_bytes(35)[3] == result[59]

    # Pressure
    assert Ensemble.float_to_bytes(23.36)[0] == result[60]
    assert Ensemble.float_to_bytes(23.36)[1] == result[61]
    assert Ensemble.float_to_bytes(23.36)[2] == result[62]
    assert Ensemble.float_to_bytes(23.36)[3] == result[63]

    # XDCR Depth
    assert Ensemble.float_to_bytes(156.2)[0] == result[64]
    assert Ensemble.float_to_bytes(156.2)[1] == result[65]
    assert Ensemble.float_to_bytes(156.2)[2] == result[66]
    assert Ensemble.float_to_bytes(156.2)[3] == result[67]

    # Speed of Sound
    assert Ensemble.float_to_bytes(1402.36)[0] == result[68]
    assert Ensemble.float_to_bytes(1402.36)[1] == result[69]
    assert Ensemble.float_to_bytes(1402.36)[2] == result[70]
    assert Ensemble.float_to_bytes(1402.36)[3] == result[71]

    # Status
    assert Ensemble.float_to_bytes(9.0)[0] == result[72]
    assert Ensemble.float_to_bytes(9.0)[1] == result[73]
    assert Ensemble.float_to_bytes(9.0)[2] == result[74]
    assert Ensemble.float_to_bytes(9.0)[3] == result[75]

    # Number of Beams
    assert Ensemble.float_to_bytes(4)[0] == result[76]
    assert Ensemble.float_to_bytes(4)[1] == result[77]
    assert Ensemble.float_to_bytes(4)[2] == result[78]
    assert Ensemble.float_to_bytes(4)[3] == result[79]

    # Ping Count
    assert Ensemble.float_to_bytes(23)[0] == result[80]
    assert Ensemble.float_to_bytes(23)[1] == result[81]
    assert Ensemble.float_to_bytes(23)[2] == result[82]
    assert Ensemble.float_to_bytes(23)[3] == result[83]

    # Range Beam 0
    assert Ensemble.float_to_bytes(1.1)[0] == result[84]
    assert Ensemble.float_to_bytes(1.1)[1] == result[85]
    assert Ensemble.float_to_bytes(1.1)[2] == result[86]
    assert Ensemble.float_to_bytes(1.1)[3] == result[87]
    # Range Beam 1
    assert Ensemble.float_to_bytes(2.2)[0] == result[88]
    assert Ensemble.float_to_bytes(2.2)[1] == result[89]
    assert Ensemble.float_to_bytes(2.2)[2] == result[90]
    assert Ensemble.float_to_bytes(2.2)[3] == result[91]
    # Range Beam 2
    assert Ensemble.float_to_bytes(3.3)[0] == result[92]
    assert Ensemble.float_to_bytes(3.3)[1] == result[93]
    assert Ensemble.float_to_bytes(3.3)[2] == result[94]
    assert Ensemble.float_to_bytes(3.3)[3] == result[95]
    # Range Beam 3
    assert Ensemble.float_to_bytes(4.4)[0] == result[96]
    assert Ensemble.float_to_bytes(4.4)[1] == result[97]
    assert Ensemble.float_to_bytes(4.4)[2] == result[98]
    assert Ensemble.float_to_bytes(4.4)[3] == result[99]

    # SNR Beam 0
    assert Ensemble.float_to_bytes(1.1)[0] == result[100]
    assert Ensemble.float_to_bytes(1.1)[1] == result[101]
    assert Ensemble.float_to_bytes(1.1)[2] == result[102]
    assert Ensemble.float_to_bytes(1.1)[3] == result[103]
    # SNR Beam 1
    assert Ensemble.float_to_bytes(2.2)[0] == result[104]
    assert Ensemble.float_to_bytes(2.2)[1] == result[105]
    assert Ensemble.float_to_bytes(2.2)[2] == result[106]
    assert Ensemble.float_to_bytes(2.2)[3] == result[107]
    # SNR Beam 2
    assert Ensemble.float_to_bytes(3.3)[0] == result[108]
    assert Ensemble.float_to_bytes(3.3)[1] == result[109]
    assert Ensemble.float_to_bytes(3.3)[2] == result[110]
    assert Ensemble.float_to_bytes(3.3)[3] == result[111]
    # SNR Beam 3
    assert Ensemble.float_to_bytes(4.4)[0] == result[112]
    assert Ensemble.float_to_bytes(4.4)[1] == result[113]
    assert Ensemble.float_to_bytes(4.4)[2] == result[114]
    assert Ensemble.float_to_bytes(4.4)[3] == result[115]

    # Amp Beam 0
    assert Ensemble.float_to_bytes(1.1)[0] == result[116]
    assert Ensemble.float_to_bytes(1.1)[1] == result[117]
    assert Ensemble.float_to_bytes(1.1)[2] == result[118]
    assert Ensemble.float_to_bytes(1.1)[3] == result[119]
    # Amp Beam 1
    assert Ensemble.float_to_bytes(2.2)[0] == result[120]
    assert Ensemble.float_to_bytes(2.2)[1] == result[121]
    assert Ensemble.float_to_bytes(2.2)[2] == result[122]
    assert Ensemble.float_to_bytes(2.2)[3] == result[123]
    # Amp Beam 2
    assert Ensemble.float_to_bytes(3.3)[0] == result[124]
    assert Ensemble.float_to_bytes(3.3)[1] == result[125]
    assert Ensemble.float_to_bytes(3.3)[2] == result[126]
    assert Ensemble.float_to_bytes(3.3)[3] == result[127]
    # Amp Beam 3
    assert Ensemble.float_to_bytes(4.4)[0] == result[128]
    assert Ensemble.float_to_bytes(4.4)[1] == result[129]
    assert Ensemble.float_to_bytes(4.4)[2] == result[130]
    assert Ensemble.float_to_bytes(4.4)[3] == result[131]

    # Corr Beam 0
    assert Ensemble.float_to_bytes(1.1)[0] == result[132]
    assert Ensemble.float_to_bytes(1.1)[1] == result[133]
    assert Ensemble.float_to_bytes(1.1)[2] == result[134]
    assert Ensemble.float_to_bytes(1.1)[3] == result[135]
    # Corr Beam 1
    assert Ensemble.float_to_bytes(2.2)[0] == result[136]
    assert Ensemble.float_to_bytes(2.2)[1] == result[137]
    assert Ensemble.float_to_bytes(2.2)[2] == result[138]
    assert Ensemble.float_to_bytes(2.2)[3] == result[139]
    # Corr Beam 2
    assert Ensemble.float_to_bytes(3.3)[0] == result[140]
    assert Ensemble.float_to_bytes(3.3)[1] == result[141]
    assert Ensemble.float_to_bytes(3.3)[2] == result[142]
    assert Ensemble.float_to_bytes(3.3)[3] == result[143]
    # Corr Beam 3
    assert Ensemble.float_to_bytes(4.4)[0] == result[144]
    assert Ensemble.float_to_bytes(4.4)[1] == result[145]
    assert Ensemble.float_to_bytes(4.4)[2] == result[146]
    assert Ensemble.float_to_bytes(4.4)[3] == result[147]

    # Beam Velocity Beam 0
    assert Ensemble.float_to_bytes(1.1)[0] == result[148]
    assert Ensemble.float_to_bytes(1.1)[1] == result[149]
    assert Ensemble.float_to_bytes(1.1)[2] == result[150]
    assert Ensemble.float_to_bytes(1.1)[3] == result[151]
    # Beam Velocity Beam 1
    assert Ensemble.float_to_bytes(2.2)[0] == result[152]
    assert Ensemble.float_to_bytes(2.2)[1] == result[153]
    assert Ensemble.float_to_bytes(2.2)[2] == result[154]
    assert Ensemble.float_to_bytes(2.2)[3] == result[155]
    # Beam Velocity Beam 2
    assert Ensemble.float_to_bytes(3.3)[0] == result[156]
    assert Ensemble.float_to_bytes(3.3)[1] == result[157]
    assert Ensemble.float_to_bytes(3.3)[2] == result[158]
    assert Ensemble.float_to_bytes(3.3)[3] == result[159]
    # Beam Velocity Beam 3
    assert Ensemble.float_to_bytes(4.4)[0] == result[160]
    assert Ensemble.float_to_bytes(4.4)[1] == result[161]
    assert Ensemble.float_to_bytes(4.4)[2] == result[162]
    assert Ensemble.float_to_bytes(4.4)[3] == result[163]

    # Beam Good Beam 0
    assert Ensemble.float_to_bytes(1)[0] == result[164]
    assert Ensemble.float_to_bytes(1)[1] == result[165]
    assert Ensemble.float_to_bytes(1)[2] == result[166]
    assert Ensemble.float_to_bytes(1)[3] == result[167]
    # Beam Good Beam 1
    assert Ensemble.float_to_bytes(2)[0] == result[168]
    assert Ensemble.float_to_bytes(2)[1] == result[169]
    assert Ensemble.float_to_bytes(2)[2] == result[170]
    assert Ensemble.float_to_bytes(2)[3] == result[171]
    # Beam Good Beam 2
    assert Ensemble.float_to_bytes(3)[0] == result[172]
    assert Ensemble.float_to_bytes(3)[1] == result[173]
    assert Ensemble.float_to_bytes(3)[2] == result[174]
    assert Ensemble.float_to_bytes(3)[3] == result[175]
    # Beam Good Beam 3
    assert Ensemble.float_to_bytes(4)[0] == result[176]
    assert Ensemble.float_to_bytes(4)[1] == result[177]
    assert Ensemble.float_to_bytes(4)[2] == result[178]
    assert Ensemble.float_to_bytes(4)[3] == result[179]

    index = 180

    # Instrument Velocity Beam 0
    assert Ensemble.float_to_bytes(1.1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[3] == result[index]
    index += 1
    # Instrument Velocity Beam 1
    assert Ensemble.float_to_bytes(2.2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[3] == result[index]
    index += 1
    # Instrument Velocity Beam 2
    assert Ensemble.float_to_bytes(3.3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[3] == result[index]
    index += 1
    # Instrument Velocity Beam 3
    assert Ensemble.float_to_bytes(4.4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[3] == result[index]
    index += 1

    # Instrument Good Beam 0
    assert Ensemble.float_to_bytes(1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[3] == result[index]
    index += 1
    # Instrument Good Beam 1
    assert Ensemble.float_to_bytes(2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[3] == result[index]
    index += 1
    # Instrument Good Beam 2
    assert Ensemble.float_to_bytes(3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[3] == result[index]
    index += 1
    # Instrument Good Beam 3
    assert Ensemble.float_to_bytes(4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[3] == result[index]
    index += 1

    # Earth Velocity Beam 0
    assert Ensemble.float_to_bytes(1.1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1.1)[3] == result[index]
    index += 1
    # Earth Velocity Beam 1
    assert Ensemble.float_to_bytes(2.2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2.2)[3] == result[index]
    index += 1
    # Earth Velocity Beam 2
    assert Ensemble.float_to_bytes(3.3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3.3)[3] == result[index]
    index += 1
    # Earth Velocity Beam 3
    assert Ensemble.float_to_bytes(4.4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4.4)[3] == result[index]
    index += 1

    # Earth Good Beam 0
    assert Ensemble.float_to_bytes(1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[3] == result[index]
    index += 1
    # Earth Good Beam 1
    assert Ensemble.float_to_bytes(2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[3] == result[index]
    index += 1
    # Earth Good Beam 2
    assert Ensemble.float_to_bytes(3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[3] == result[index]
    index += 1
    # Earth Good Beam 3
    assert Ensemble.float_to_bytes(4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[3] == result[index]
    index += 1

    # SNR Pulse Coherent Beam 0
    assert Ensemble.float_to_bytes(1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[3] == result[index]
    index += 1
    # SNR Pulse Coherent Beam 1
    assert Ensemble.float_to_bytes(2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[3] == result[index]
    index += 1
    # SNR Pulse Coherent Beam 2
    assert Ensemble.float_to_bytes(3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[3] == result[index]
    index += 1
    # SNR Pulse Coherent Beam 3
    assert Ensemble.float_to_bytes(4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[3] == result[index]
    index += 1

    # Amp Pulse Coherent Beam 0
    assert Ensemble.float_to_bytes(1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[3] == result[index]
    index += 1
    # Amp Pulse Coherent Beam 1
    assert Ensemble.float_to_bytes(2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[3] == result[index]
    index += 1
    # Amp Pulse Coherent Beam 2
    assert Ensemble.float_to_bytes(3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[3] == result[index]
    index += 1
    # Amp Pulse Coherent Beam 3
    assert Ensemble.float_to_bytes(4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[3] == result[index]
    index += 1

    # Vel Pulse Coherent Beam 0
    assert Ensemble.float_to_bytes(1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[3] == result[index]
    index += 1
    # Vel Pulse Coherent Beam 1
    assert Ensemble.float_to_bytes(2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[3] == result[index]
    index += 1
    # Vel Pulse Coherent Beam 2
    assert Ensemble.float_to_bytes(3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[3] == result[index]
    index += 1
    # Vel Pulse Coherent Beam 3
    assert Ensemble.float_to_bytes(4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[3] == result[index]
    index += 1

    # Noise Pulse Coherent Beam 0
    assert Ensemble.float_to_bytes(1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[3] == result[index]
    index += 1
    # Noise Pulse Coherent Beam 1
    assert Ensemble.float_to_bytes(2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[3] == result[index]
    index += 1
    # Noise Pulse Coherent Beam 2
    assert Ensemble.float_to_bytes(3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[3] == result[index]
    index += 1
    # Noise Pulse Coherent Beam 3
    assert Ensemble.float_to_bytes(4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[3] == result[index]
    index += 1

    # Corr Pulse Coherent Beam 0
    assert Ensemble.float_to_bytes(1)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(1)[3] == result[index]
    index += 1
    # Corr Pulse Coherent Beam 1
    assert Ensemble.float_to_bytes(2)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(2)[3] == result[index]
    index += 1
    # Corr Pulse Coherent Beam 2
    assert Ensemble.float_to_bytes(3)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(3)[3] == result[index]
    index += 1
    # Corr Pulse Coherent Beam 3
    assert Ensemble.float_to_bytes(4)[0] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[1] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[2] == result[index]
    index += 1
    assert Ensemble.float_to_bytes(4)[3] == result[index]
    index += 1