Пример #1
0
    def encode_csv(self, dt, ss_code, ss_config, blank=0, bin_size=0):
        """
        Encode into CSV format.
        :param dt: Datetime object.
        :param ss_code: Subsystem code.
        :param ss_config: Subsystem Configuration
        :param blank: Blank or first bin position in meters.
        :param bin_size: Bin size in meters.
        :return: List of CSV lines.
        """
        str_result = []

        # Create the CSV strings
        str_result.append(Ensemble.gen_csv_line(dt, Ensemble.CSV_FIRST_PING_TIME, ss_code, ss_config, 0, 0, blank, bin_size, self.FirstPingTime))
        str_result.append(Ensemble.gen_csv_line(dt, Ensemble.CSV_LAST_PING_TIME, ss_code, ss_config, 0, 0, blank, bin_size, self.LastPingTime))
        str_result.append(Ensemble.gen_csv_line(dt, Ensemble.CSV_HEADING, ss_code, ss_config, 0, 0, blank, bin_size, self.Heading))
        str_result.append(Ensemble.gen_csv_line(dt, Ensemble.CSV_PITCH, ss_code, ss_config, 0, 0, blank, bin_size, self.Pitch))
        str_result.append(Ensemble.gen_csv_line(dt, Ensemble.CSV_ROLL, ss_code, ss_config, 0, 0, blank, bin_size, self.Roll))
        str_result.append(Ensemble.gen_csv_line(dt, Ensemble.CSV_WATER_TEMP, ss_code, ss_config, 0, 0, blank, bin_size, self.WaterTemp))
        str_result.append(Ensemble.gen_csv_line(dt, Ensemble.CSV_SYS_TEMP, ss_code, ss_config, 0, 0, blank, bin_size, self.SystemTemp))
        str_result.append(Ensemble.gen_csv_line(dt, Ensemble.CSV_PRESSURE, ss_code, ss_config, 0, 0, blank, bin_size, self.Pressure))
        str_result.append(Ensemble.gen_csv_line(dt, Ensemble.CSV_XDCR_DEPTH, ss_code, ss_config, 0, 0, blank, bin_size, self.TransducerDepth))
        str_result.append(Ensemble.gen_csv_line(dt, Ensemble.CSV_SOS, ss_code, ss_config, 0, 0, blank, bin_size, self.SpeedOfSound))

        return str_result
Пример #2
0
    def get_csv_data(self, data, awc_key, data_type, last_time):
        """
        Append the data to the CSV file.

        Ex:
        ["datetime", "data_type", "ss_code", "ss_config", "bin_num", "beam_num", "blank", "bin_size", "value"]
        2019/02/23 15:23:22.56, EARTH_VEL, 4, 1, 2, 2, 7.5, 1.245

        :param data: Data for all beams.
        :param awc_key: Key used to give the file an identifier for the subsystem and config.
        :param data_type: Data type to place into the csv line.
        :param last_time: Last time in the average.
        :return:
        """

        # Get the parameters for the data
        blank = self.awc_dict[awc_key].blank
        bin_size = self.awc_dict[awc_key].bin_size
        ss_code = self.awc_dict[awc_key].ss_code
        ss_config = self.awc_dict[awc_key].ss_config

        # Use the current time as a backup
        #dt_time = datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S:%f')
        dt_time = datetime.datetime.now()
        if last_time:
            dt_time = last_time

        # Get the data
        bin_num = 1
        beam_num = 0
        row_data = []

        # Go through each bin and add a line to the csv file
        for bin_data in data:
            if type(bin_data) == list:
                beam_num = 0
                for beam_data in bin_data:
                    val = beam_data
                    row_data.append([
                        (Ensemble.gen_csv_line(dt_time, data_type, ss_code,
                                               ss_config, bin_num, beam_num,
                                               blank, bin_size, val))
                    ])
                    beam_num += 1
            else:
                row_data.append([
                    (Ensemble.gen_csv_line(dt_time, data_type, ss_code,
                                           ss_config, bin_num, beam_num, blank,
                                           bin_size, bin_data))
                ])

            # Increment the bin number
            bin_num += 1

        return row_data
Пример #3
0
    def generate_csv_data_no_avg(self, ens):
        """
        Generate the CSV and Dataframe data from the ensemble.
        This is only called if the user is not averaging the data.
        :param ens: Ensemble data
        :return:
        """
        csv_rows = []

        dt = datetime.datetime.now()
        ss_code = 0
        ss_config = 0
        blank = 0.0
        bin_size = 0.0

        if ens.IsEnsembleData:
            dt = ens.EnsembleData.datetime()
            ss_code = ens.EnsembleData.SysFirmwareSubsystemCode
            ss_config = ens.EnsembleData.SubsystemConfig

        if ens.IsAncillaryData:
            blank = ens.AncillaryData.FirstBinRange
            bin_size = ens.AncillaryData.BinSize
            pressure = ens.AncillaryData.Pressure
            xdcr_depth = ens.AncillaryData.TransducerDepth

            # Pressure
            csv_rows.append([
                Ensemble.gen_csv_line(dt, Ensemble.CSV_PRESSURE, ss_code,
                                      ss_config, 0, 0, blank, bin_size,
                                      pressure)
            ])

            # Transducer Depth
            csv_rows.append([
                Ensemble.gen_csv_line(dt, Ensemble.CSV_XDCR_DEPTH, ss_code,
                                      ss_config, 0, 0, blank, bin_size,
                                      xdcr_depth)
            ])

        if ens.IsRangeTracking:
            for beam_num in range(len(ens.RangeTracking.Range)):
                # Range Tracking
                csv_rows.append([
                    Ensemble.gen_csv_line(dt, Ensemble.CSV_RT_RANGE, ss_code,
                                          ss_config, 0, beam_num, blank,
                                          bin_size,
                                          ens.RangeTracking.Range[beam_num])
                ])

        if ens.IsEarthVelocity:
            csv_rows += (ens.EarthVelocity.encode_csv(dt, ss_code, ss_config,
                                                      blank, bin_size))

        return csv_rows
Пример #4
0
    def encode_csv(self, dt, ss_code, ss_config, blank=0, bin_size=0):
        """
        Encode into CSV format.
        :param dt: Datetime object.
        :param ss_code: Subsystem code.
        :param ss_config: Subsystem Configuration
        :param blank: Blank or first bin position in meters.
        :param bin_size: Bin size in meters.
        :return: List of CSV lines.
        """
        str_result = []

        # Create the CSV strings
        for beams in range(len(self.Range)):
            str_result.append(
                Ensemble.gen_csv_line(dt, Ensemble.CSV_RT_RANGE, ss_code,
                                      ss_config, 0, beams, blank, bin_size,
                                      self.Range[beams]))

        for beams in range(len(self.Pings)):
            str_result.append(
                Ensemble.gen_csv_line(dt, Ensemble.CSV_RT_PINGS, ss_code,
                                      ss_config, 0, beams, blank, bin_size,
                                      self.Pings[beams]))

        for beams in range(len(self.BeamVelocity)):
            str_result.append(
                Ensemble.gen_csv_line(dt, Ensemble.CSV_RT_BEAM_VEL, ss_code,
                                      ss_config, 0, beams, blank, bin_size,
                                      self.BeamVelocity[beams]))

        for beams in range(len(self.InstrumentVelocity)):
            str_result.append(
                Ensemble.gen_csv_line(dt, Ensemble.CSV_RT_INSTR_VEL, ss_code,
                                      ss_config, 0, beams, blank, bin_size,
                                      self.InstrumentVelocity[beams]))

        for beams in range(len(self.EarthVelocity)):
            str_result.append(
                Ensemble.gen_csv_line(dt, Ensemble.CSV_RT_EARTH_VEL, ss_code,
                                      ss_config, 0, beams, blank, bin_size,
                                      self.EarthVelocity[beams]))

        return str_result
    def encode_csv(self, dt, ss_code, ss_config, blank, bin_size):
        """
        Encode into CSV format.
        :param dt: Datetime object.
        :param ss_code: Subsystem code.
        :param ss_config: Subsystem Configuration
        :param blank: Blank or first bin position in meters.
        :param bin_size: Bin size in meters.
        :return: List of CSV lines.
        """
        str_result = []

        for beam in range(self.element_multiplier):
            for bin_num in range(self.num_elements):
                # Get the value
                val = self.Velocities[bin_num][beam]

                # Create the CSV string
                str_result.append([
                    Ensemble.gen_csv_line(dt, Ensemble.CSV_EARTH_VEL, ss_code,
                                          ss_config, bin_num, beam, blank,
                                          bin_size, val)
                ])

        # Generate Magnitude and Direction CSV
        for bin_num in range(self.num_elements):
            mag = self.Magnitude[bin_num]
            dir = self.Direction[bin_num]
            str_result.append([
                Ensemble.gen_csv_line(dt, Ensemble.CSV_MAG, ss_code, ss_config,
                                      bin_num, 0, blank, bin_size, mag)
            ])
            str_result.append([
                Ensemble.gen_csv_line(dt, Ensemble.CSV_DIR, ss_code, ss_config,
                                      bin_num, 0, blank, bin_size, dir)
            ])

        return str_result
Пример #6
0
    def encode_csv(self, dt, ss_code, ss_config, blank=0, bin_size=0):
        """
        Encode into CSV format.
        :param dt: Datetime object.
        :param ss_code: Subsystem code.
        :param ss_config: Subsystem Configuration
        :param blank: Blank or first bin position in meters.
        :param bin_size: Bin size in meters.
        :return: List of CSV lines.
        """
        str_result = []

        # Create the CSV strings
        str_result.append(
            Ensemble.gen_csv_line(dt, Ensemble.CSV_STATUS, ss_code, ss_config,
                                  0, 0, blank, bin_size, self.Status))

        return str_result
Пример #7
0
    def encode_csv(self, dt, ss_code, ss_config, blank, bin_size):
        """
        Encode into CSV format.
        :param dt: Datetime object.
        :param ss_code: Subsystem code.
        :param ss_config: Subsystem Configuration
        :param blank: Blank or first bin position in meters.
        :param bin_size: Bin size in meters.
        :return: List of CSV lines.
        """
        str_result = []

        for beam in range(self.element_multiplier):
            for bin_num in range(self.num_elements):
                # Get the value
                val = self.Velocities[bin_num][beam]

                # Create the CSV string
                str_result.append(Ensemble.gen_csv_line(dt, Ensemble.CSV_BEAM_VEL, ss_code, ss_config, bin_num, beam, blank, bin_size, val))

        return str_result
Пример #8
0
    def encode_csv(self, dt, ss_code, ss_config, blank=0, bin_size=0):
        """
        Encode into CSV format.
        :param dt: Datetime object.
        :param ss_code: Subsystem code.
        :param ss_config: Subsystem Configuration
        :param blank: Blank or first bin position in meters.
        :param bin_size: Bin size in meters.
        :return: List of CSV lines.
        """
        str_result = []

        # Create the CSV strings
        str_result.append(
            Ensemble.gen_csv_line(dt, Ensemble.CSV_BT_HEADING, ss_code,
                                  ss_config, 0, 0, blank, bin_size,
                                  self.Heading))
        str_result.append(
            Ensemble.gen_csv_line(dt, Ensemble.CSV_BT_PITCH, ss_code,
                                  ss_config, 0, 0, blank, bin_size,
                                  self.Pitch))
        str_result.append(
            Ensemble.gen_csv_line(dt, Ensemble.CSV_BT_ROLL, ss_code, ss_config,
                                  0, 0, blank, bin_size, self.Roll))
        str_result.append(
            Ensemble.gen_csv_line(dt, Ensemble.CSV_BT_PRESSURE, ss_code,
                                  ss_config, 0, 0, blank, bin_size,
                                  self.Pressure))
        str_result.append(
            Ensemble.gen_csv_line(dt, Ensemble.CSV_BT_XDCR_DEPTH, ss_code,
                                  ss_config, 0, 0, blank, bin_size,
                                  self.TransducerDepth))
        str_result.append(
            Ensemble.gen_csv_line(dt, Ensemble.CSV_BT_STATUS, ss_code,
                                  ss_config, 0, 0, blank, bin_size,
                                  self.Status))

        for beams in range(len(self.Range)):
            str_result.append(
                Ensemble.gen_csv_line(dt, Ensemble.CSV_BT_RANGE, ss_code,
                                      ss_config, 0, beams, blank, bin_size,
                                      self.Range[beams]))

        for beams in range(len(self.BeamVelocity)):
            str_result.append(
                Ensemble.gen_csv_line(dt, Ensemble.CSV_BT_BEAM_VEL, ss_code,
                                      ss_config, 0, beams, blank, bin_size,
                                      self.BeamVelocity[beams]))

        for beams in range(len(self.BeamGood)):
            str_result.append(
                Ensemble.gen_csv_line(dt, Ensemble.CSV_BT_BEAM_GOOD, ss_code,
                                      ss_config, 0, beams, blank, bin_size,
                                      self.BeamGood[beams]))

        for beams in range(len(self.InstrumentVelocity)):
            str_result.append(
                Ensemble.gen_csv_line(dt, Ensemble.CSV_BT_INSTR_VEL, ss_code,
                                      ss_config, 0, beams, blank, bin_size,
                                      self.InstrumentVelocity[beams]))

        for beams in range(len(self.InstrumentGood)):
            str_result.append(
                Ensemble.gen_csv_line(dt, Ensemble.CSV_BT_INSTR_GOOD, ss_code,
                                      ss_config, 0, beams, blank, bin_size,
                                      self.InstrumentGood[beams]))

        for beams in range(len(self.EarthVelocity)):
            str_result.append(
                Ensemble.gen_csv_line(dt, Ensemble.CSV_BT_EARTH_VEL, ss_code,
                                      ss_config, 0, beams, blank, bin_size,
                                      self.EarthVelocity[beams]))

        for beams in range(len(self.EarthGood)):
            str_result.append(
                Ensemble.gen_csv_line(dt, Ensemble.CSV_BT_EARTH_GOOD, ss_code,
                                      ss_config, 0, beams, blank, bin_size,
                                      self.EarthGood[beams]))

        return str_result