import numpy as np from thunderhopper.filetools import search_files from thunderhopper.model import process_signal from thunderhopper.modeltools import load_data from IPython import embed ## SETTINGS: # General: stages = ['raw', 'filt', 'env', 'log', 'inv', 'conv', 'feat'] noise_path = search_files('merged_noise', dir='../data/field/processed/noise/')[0] save_path = '../data/inv/field/ref_measures.npz' channels = np.array([0, 1, 2, 3, 4, 5, 6, 7]) # PROCESSING: # Load pure-noise starter representation: noise_data, config = load_data(noise_path, stages[0]) # Accumulate channels in time-major order: starter = noise_data[stages[0]][:, channels].ravel(order='F') # Get song segment to be analyzed: time = np.arange(starter.shape[0]) / config['rate'] start, end = noise_data['songs_0'].ravel() segment = (time >= start) & (time <= end) # Run pipeline: data = process_signal(config, stages, signal=starter, rate=config['rate'])[0] # Get measures: measures = {} for stage in stages: if stage == 'feat': measures[stage] = data[stage][segment, :].mean(axis=0) else: measures[stage] = data[stage][segment, ...].std(axis=0) # Save results: np.savez(save_path, **measures) print('Done.') embed()