def analyze_cont(self): self.average, self.entropy, self.kurtosis, self.max_v, self.median, self.min_v, self.skewness, self.standart_dev = Features.check_statistics(self) self.wavelet_type, self.sampling_per, self.min_scale, self.max_scale, self.scale_step = Features.cont_check_wavelet(self) if (self.load_check and ( self.average or self.entropy or self.kurtosis or self.max_v or self.median or self.min_v or self.skewness or self.standart_dev)): # işlenecek müzik olması durumu self.scaling = np.arange(int(self.min_scale), int(self.max_scale), int(self.scale_step)) self.analyze_check = True self.wavelet_level = len(self.scaling) - 1 col, self.header, self.db_header = Features.init_table(self, len(self.all_signals)) self.db_matrix = np.zeros((len(self.all_signals), 8 * (self.wavelet_level + 1)), dtype=complex) for iter in range(0, len(self.all_signals)): print(self.all_signals[iter]) self.signals.clear() self.audio, self.sample = librosa.load(self.all_signals[iter]) self.signals.append(self.audio) self.time = np.arange(0, len(self.audio)) / self.sample coef, freqs = pywt.cwt(self.audio, self.scaling, self.wavelet_type, int(self.sampling_per)) for i in range(0, self.wavelet_level + 1): self.signals.append(coef[i]) # adding signals array to coeffs if (iter == 0): # plotting first signal only self.plot_original_signal() firstau = self.audio time = self.time self.db_matrix[iter] = Features.insertTableComplex(self, iter, col) self.plot_wavelet(firstau,time) else: if not self.load_check: Features.message("You have to load at least 1 signal !", QMessageBox.Warning) else: Features.message("You have to pick at least 1 statistic function !", QMessageBox.Warning)
def analyze_signal(self): if(self.selected_table_name != ""): table_name = self.selected_table_name if(table_name.find('Comp_') != -1) : table_name = table_name.replace('Comp_','') matrix = ClassifyMusic.run(table_name, int(self.comboBox_kfold.currentText()), Features.checked_functions(self), self.checkBox_printConf.isChecked()) Features.init_results_table(self) Features.fill_result_table(self, matrix) else : Features.message("You have to choose a table", QMessageBox.Warning)
def load_signal(self): self.all_signals, self.filter, self.load_check = Features.load_signal(self) if (self.load_check): if (len(self.all_signals) > 1): # Multiple file self.label_1DCont_DataName.setText("Multiple Signals") # Data name else: name = self.all_signals[0].split(sep='/') self.label_1DCont_DataName.setText(name[-1]) # Setting data name else: Features.message("You have to load at least 1 signal !", QMessageBox.Warning) self.label_1DCont_DataName.setText("No signal selected")
def load_folder(self): self.all_signals, self.load_check = Features.load_folder(self) if (self.load_check): Features.message(str(len(self.all_signals)) + " signals ready to be processed !", QMessageBox.Information) if (len(self.all_signals) > 1): # Multiple file self.label_1DCont_DataName.setText("Multiple Signals") # Data name else: name = self.all_signals[0].split(sep='/') self.label_1DCont_DataName.setText(name[-1]) # Setting data name else: Features.message("You have to load at least 1 signal !", QMessageBox.Warning) self.label_1DCont_DataName.setText("No signal selected")
def load_folder(self): #Dosya Yükleme self.all_signals, self.load_check = Features.load_folder(self) if (self.load_check): Features.message( str(len(self.all_signals)) + " signals ready to be processed !", QMessageBox.Information) if (len(self.all_signals) > 1): self.label_1D_DataName.setText("Multiple Signals") else: name = self.all_signals[0].split(sep='/') self.label_1D_DataName.setText(name[-1]) else: Features.message("You have to load at least 1 signal", QMessageBox.Warning)
def load_signal(self): self.all_signals, self.filter, self.load_check = Features.load_signal( self) self.progressBar.setValue(0) if (self.load_check): if (len(self.all_signals) > 1): #Çoklu Veri Girişi self.label_1D_DataName.setText("Multiple Signals") #Veri Adı else: name = self.all_signals[0].split(sep='/') self.label_1D_DataName.setText(name[-1]) #Veri Adını oluşturma else: Features.message("You have to load at least 1 signal", QMessageBox.Warning) self.label_1D_DataName.setText("No signal selected")
def analyze_signal(self): #Veriyi Analiz Etme self.average, self.entropy, self.kurtosis, self.max_v, self.median, self.min_v, self.skewness, self.standart_dev = Features.check_statistics( self) self.wavelet_type, self.wavelet_level = Features.discrete_check_wavelet( self) if (self.load_check and (self.average or self.entropy or self.kurtosis or self.max_v or self.median or self.min_v or self.skewness or self.standart_dev)): #işlenecek müzik olması durumu self.analyze_check = True col, self.header, self.db_header = Features.init_table( self, len(self.all_signals)) self.db_matrix = np.zeros( (len(self.all_signals), 8 * (self.wavelet_level + 1))) for iter in range(0, len(self.all_signals)): print(self.all_signals[iter]) self.signals.clear() self.audio, self.sample = librosa.load(self.all_signals[iter]) self.signals.append(self.audio) self.time = np.arange(0, len(self.audio)) / self.sample coeffs = pywt.wavedec( self.audio, self.wavelet_type, level=self.wavelet_level) #Wavelet Analiz for i in range(0, self.wavelet_level + 1): self.signals.append(coeffs[i]) #Sinyalleri Coef içine atma if (iter == 0 and self.wavelet_level < 8): #İlk sinyali yazdırma Features.discrete_plot_signal(self) self.db_matrix[iter] = Features.insertTable(self, iter, col) self.progressBar.setValue( ((iter + 1) / len(self.all_signals)) * 100) #level = 3 ise signals içinde 5 (4 analiz edilmiş + 1 source) else: if not self.load_check: Features.message("You have to load at least 1 signal", QMessageBox.Warning) else: Features.message( "You have to pick at least 1 statistic function", QMessageBox.Warning)
def save_to_db(self): if (self.load_check and self.analyze_check): w_name = str(self.wavelet_type) table_name = "Db_GTZAN_function_" + w_name + "_Degree_" + str( self.wavelet_level) Database.create_table( Database.database_name, table_name, self.db_header, "") # İstatistiksel fonksiyonlar için tablo oluşturma for index in range(0, len(self.all_signals)): name = self.all_signals[index].split(sep='/') #Sinyalin adı Database.delete_row(Database.database_name, table_name, name[-1], "") Database.add_values_to_table(Database.database_name, table_name, name[-1], self.db_header, self.db_matrix[index], "") #Db'ye değerleri girme Features.message("Your Data Saved Succesfully", QMessageBox.Information) else: if (self.load_check): Features.message("You have to analyze the signals first", QMessageBox.Warning) else: Features.message("You have to load at least 1 signal", QMessageBox.Warning)
def save_to_db(self): if (self.load_check and self.analyze_check): w_name = str(self.wavelet_type) table_name = "Db_GTZAN_function_" + w_name + "_Degree_" + str( self.wavelet_level) Database.create_table( Database.database_name, table_name, self.db_header, "") # creating new table with statistic function for index in range(0, len(self.all_signals)): name = self.all_signals[index].split(sep='/') #name of signal Database.delete_row(Database.database_name, table_name, name[-1], "") Database.add_values_to_table(Database.database_name, table_name, name[-1], self.db_header, self.db_matrix[index], "") #adding db to values Features.message("Your Data Saved Succesfully", QMessageBox.Information) else: if (self.load_check): Features.message("You have to analyze the signals first", QMessageBox.Warning) else: Features.message("You have to load at least 1 signal", QMessageBox.Warning)
def save_to_db(self): if (self.load_check and self.analyze_check): w_name = str(self.wavelet_type) table_name = "Db_GTZAN_function_" + w_name + "_Scale_" + self.min_scale + "_to_" + self.max_scale + "_Period_" + self.sampling_per Database.create_table( Database.database_name, table_name, self.db_header, "") #İstatistiksel fonksiyonlar ile yeni tablo oluşturma Database.create_table(Database.database_name, table_name, self.db_header, "Comp_") for index in range(0, len(self.all_signals)): name = self.all_signals[index].split(sep='/') Database.delete_row(Database.database_name, table_name, name[-1], "") Database.add_values_to_table(Database.database_name, table_name, name[-1], self.db_header, self.db_matrix[index], "") Database.delete_row(Database.database_name, table_name, name[-1], "Comp_") Database.add_values_to_table(Database.database_name, table_name, name[-1], self.db_header, self.db_matrix[index], "Comp_") Features.message("Your Data Saved Succesfully !", QMessageBox.Warning) else: if (self.load_check): Features.message("You have to analyze the signals first !", QMessageBox.Warning) else: Features.message("You have to load at least 1 signal !", QMessageBox.Warning)
def on_combobox_changed(self, value): if (value >= 7): Features.message( "Plotting is not supported on levels higher than 5", QMessageBox.Information)