def _update_filename(self, text):
     """ """
     if self.auto_checkbox.checkState():
         new_text = hdf54bats.str_to_ascii(text)
         if len(new_text) > 0:
             self._surveyfilename_edit.setText(new_text + '.h5')
         else:
             self._surveyfilename_edit.setText('')
Пример #2
0
 def update_groupname(self, text):
     """ """
     if self.auto_checkbox.checkState():
         new_text = hdf54bats.str_to_ascii(text)
         if len(new_text) > 0:
             self.detectorgroup_edit.setText(new_text)
         else:
             self.detectorgroup_edit.setText('')
     self.enable_buttons()
    def _import_wavefiles(self):
        """ """
        try:
            try:
                detectorgroup = self.detector_combo.currentText()
                self._parentwidget._write_to_status_bar(
                    '- Busy: Importing wave files.')

                h5_wavefiles = hdf54bats.Hdf5Wavefiles(self.dir_path,
                                                       self.survey_name)
                #                 wurb_utils = dsp4bats.WurbFileUtils()

                for rowindex in range(self._items_model.rowCount()):
                    try:
                        item = self._items_model.item(rowindex, 0)
                        if item.checkState() == QtCore.Qt.Checked:
                            wave_file_path = str(item.text())
                            #                     wave.remove_wavefile(item_id)

                            wave_reader = None
                            try:
                                #
                                detector_type = self.detectortype_combo.currentText(
                                )
                                if detector_type == 'CloudedBats-WURB/Pathfinder':
                                    metadata_reader = metadata4bats.MetadataWavefileWurb(
                                        wave_file_path)
                                elif detector_type == 'Generic':
                                    metadata_reader = metadata4bats.MetadataWavefile(
                                        wave_file_path)
                                elif detector_type == '(Generic GUANO)':
                                    metadata_reader = metadata4bats.MetadataWavefile(
                                        wave_file_path)
                                elif detector_type == 'AudioMoth version 1.0':
                                    metadata_reader = metadata4bats.MetadataWavefileAudiomoth(
                                        wave_file_path)
                                elif detector_type == '(AudioMoth version 1.2)':
                                    metadata_reader = metadata4bats.MetadataWavefileAudiomoth(
                                        wave_file_path)
                                elif detector_type == '(Pettersson-M500X)':
                                    metadata_reader = metadata4bats.MetadataWavefile(
                                        wave_file_path)
                                else:
                                    metadata_reader = metadata4bats.MetadataWavefile(
                                        wave_file_path)
                                #
                                metadata_reader.extract_metadata()
                                metadata = metadata_reader.get_metadata()
                                #
                                file_name = metadata['rec_file_name']
                                title = file_name
                                if 'rec_datetime_local' in metadata:
                                    datetime_str = metadata[
                                        'rec_datetime_local'][0:15]
                                    name = 'wave_' + hdf54bats.str_to_ascii(
                                        datetime_str)
                                else:
                                    name = metadata['rec_file_stem'].lower()

                                if self.location_combo.currentText(
                                ) == 'Get from wave files':
                                    pass  # Already done.
                                elif self.location_combo.currentText(
                                ) == 'Enter manually':
                                    metadata[
                                        'rec_latitude_dd'] = self.latitude_dd_edit.text(
                                        )
                                    metadata[
                                        'rec_longitude_dd'] = self.logitude_dd_edit.text(
                                        )
                                elif self.location_combo.currentText(
                                ) == 'Unknown location':
                                    metadata['rec_latitude_dd'] = ''
                                    metadata['rec_longitude_dd'] = ''

                                name = hdf54bats.str_to_ascii(name)
                                self._parentwidget._write_to_status_bar(
                                    '- Busy: Importing: ' + file_name)

                                app_utils.Logging().info(
                                    'Importing wavefile: ' + title)
                                QtWidgets.QApplication.processEvents()

                                wave_reader = dsp4bats.WaveFileReader(
                                    wave_file_path)
                                signal = np.array([], dtype=np.int16)
                                buffer = wave_reader.read_buffer(
                                    convert_to_float=False)
                                while len(buffer) > 0:
                                    signal = np.append(signal, buffer)
                                    buffer = wave_reader.read_buffer(
                                        convert_to_float=False)
                            finally:
                                if wave_reader:
                                    wave_reader.close()

                            wavefile_id = h5_wavefiles.add_wavefile(
                                parent_id=detectorgroup,
                                node_id=name,
                                title=title,
                                array=signal)
                            h5_wavefiles.set_user_metadata(wavefile_id,
                                                           metadata=metadata)
                    #
                    except Exception as e:
                        debug_info = self.__class__.__name__ + ', row  ' + str(
                            sys._getframe().f_lineno)
                        app_utils.Logging().error('Exception: (' + debug_info +
                                                  '): ' + str(e))
            finally:
                self._parentwidget._write_to_status_bar('')
                self.accept()  # Close dialog box.
        #
        except Exception as e:
            debug_info = self.__class__.__name__ + ', row  ' + str(
                sys._getframe().f_lineno)
            app_utils.Logging().error('Exception: (' + debug_info + '): ' +
                                      str(e))