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 run(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) self.sampling_per = 1 self.min_scale = 1 self.max_scale = 8 self.scale_step = 1 wave_types = pywt.wavelist(kind='continuous') self.scaling = np.arange(self.min_scale, self.max_scale, self.scale_step) for wave_func in wave_types: self.wavelet_type = wave_func 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 self.db_matrix[iter] = Features.insertTableComplex( self, iter, col) w_name = str(self.wavelet_type) table_name = "Db_GTZAN_function_" + w_name + "_Scale_1_to_8_Period_1" Database.create_table( Database.database_name, table_name, self.db_header, "") # creating new table with statistic function 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.add_values_to_table(Database.database_name, table_name, name[-1], self.db_header, self.db_matrix[index], "") Database.add_values_to_table(Database.database_name, table_name, name[-1], self.db_header, self.db_matrix[index], "Comp_") print(table_name)