Holiday syncing :)

This commit is contained in:
j-hartling
2026-04-02 16:00:56 +02:00
parent 298969a067
commit 0b9264b1e1
14 changed files with 627 additions and 667 deletions

View File

@@ -0,0 +1,65 @@
import numpy as np
from thunderhopper.filters import decibel, sosfilter
from thunderhopper.model import convolve_kernels, process_signal
from thunderhopper.modeltools import load_data
from IPython import embed
## SETTINGS:
# General:
mode = ['log_hp', 'thresh_lp', 'full'][2]
noise_path = '../data/processed/white_noise_sd-1.npz'
save_path = '../data/inv/'
pad = np.array([0.1, 0.9])
stages = dict(
log_hp=['filt', 'env', 'log', 'inv'],
thresh_lp=['inv', 'conv', 'feat'],
full=['raw', 'filt', 'env', 'log', 'inv', 'conv', 'feat']
)[mode]
# PROCESSING:
print(f'Fetching references for {mode} invariance...')
# Load pure-noise starter representation:
noise_data, config = load_data(noise_path, stages[0])
starter = noise_data[stages[0]]
# Prepare buffered measurement segment:
pad = (pad * starter.shape[0]).astype(int)
segment = np.arange(starter.shape[0])[pad[0]:pad[1]]
# Normalize starter:
starter /= starter[segment].std()
# Run pipeline:
if mode == 'log_hp':
data = {'filt': starter}
data['env'] = sosfilter(np.abs(data['filt']), config['rate'], config['env_fcut'],
'lp', padtype='even', padlen=config['padlen'])
data['log'] = decibel(data['env'], ref=1)
data['inv'] = sosfilter(data['log'], config['env_rate'], config['inv_fcut'],
'hp', padtype='constant', padlen=config['padlen'])
elif mode == 'thresh_lp':
data = {'inv': starter}
data['conv'] = convolve_kernels(data['inv'], config['kernels'], config['k_specs'])
data['feat'] = sosfilter((data['conv'] > config['feat_thresh']).astype(float),
config['env_rate'], config['feat_fcut'], 'lp',
padtype='fixed', padlen=config['padlen'])
elif mode == 'full':
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 + f'{mode}/ref_measures.npz', **measures)
print('Done.')
embed()