Plotting and updated .gitignore
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,2 +1,2 @@
|
|||||||
data/*
|
data/*
|
||||||
./_pycache_/
|
./__pycache__/
|
||||||
@@ -6,10 +6,10 @@ from thunderhopper.modeltools import load_data
|
|||||||
from IPython import embed
|
from IPython import embed
|
||||||
|
|
||||||
# GENERAL SETTINGS:
|
# GENERAL SETTINGS:
|
||||||
data_paths = glob.glob('../data/*.npz')
|
data_paths = glob.glob('../data/processed/*.npz')
|
||||||
|
stages = ['filt', 'env', 'log', 'inv',
|
||||||
|
'conv', 'bi', 'feat']
|
||||||
channel = 0
|
channel = 0
|
||||||
stages_pre = ['raw', 'filt', 'env', 'log', 'inv']
|
|
||||||
stages_feat = ['conv', 'bi', 'feat', 'norm']
|
|
||||||
|
|
||||||
# PLOT SETTINGS:
|
# PLOT SETTINGS:
|
||||||
fig_kwargs = dict(
|
fig_kwargs = dict(
|
||||||
@@ -19,42 +19,115 @@ fig_kwargs = dict(
|
|||||||
sharey = 'row'
|
sharey = 'row'
|
||||||
)
|
)
|
||||||
zoom_rel = np.array([0.4, 0.6])
|
zoom_rel = np.array([0.4, 0.6])
|
||||||
colors_pre = ['k' for _ in range(len(stages_pre))]
|
colors = dict(
|
||||||
colors_feat = ['k' for _ in range(len(stages_feat))]
|
filt='k',
|
||||||
|
env='k',
|
||||||
|
log='k',
|
||||||
|
inv='k',
|
||||||
|
conv='k',
|
||||||
|
bi='k',
|
||||||
|
feat='k'
|
||||||
|
)
|
||||||
|
linewidths = dict(
|
||||||
|
filt=0.25,
|
||||||
|
env=0.5,
|
||||||
|
log=0.5,
|
||||||
|
inv=0.5,
|
||||||
|
conv=0.5,
|
||||||
|
bi=1,
|
||||||
|
feat=1
|
||||||
|
)
|
||||||
|
|
||||||
|
# EXECUTION:
|
||||||
for data_path in data_paths:
|
for data_path in data_paths:
|
||||||
|
if 'Gomphocerippus' in data_path:
|
||||||
|
continue
|
||||||
|
print(f'Processing {data_path}')
|
||||||
|
|
||||||
# Load overall data:
|
# Load overall data:
|
||||||
data, config = load_data(data_path)
|
data, config = load_data(data_path, stages)
|
||||||
t_full = np.arange(data['raw'].shape[0]) / config['rate']
|
t_full = np.arange(data['filt'].shape[0]) / config['rate']
|
||||||
|
|
||||||
# Establish zoom frame:
|
# Establish zoom frame:
|
||||||
zoom_abs = zoom_rel * t_full[-1]
|
zoom_abs = zoom_rel * t_full[-1]
|
||||||
zoom_mask = (t_full >= zoom_abs[0]) & (t_full <= zoom_abs[1])
|
zoom_mask = (t_full >= zoom_abs[0]) & (t_full <= zoom_abs[1])
|
||||||
t_zoom = t_full[zoom_mask]
|
t_zoom = t_full[zoom_mask]
|
||||||
|
|
||||||
|
|
||||||
# PART I: PREPROCESSING STAGE
|
# PART I: PREPROCESSING STAGE
|
||||||
fig, axes = plt.subplots(len(stages_pre), 2, **fig_kwargs)
|
fig, axes = plt.subplots(4, 2, **fig_kwargs)
|
||||||
|
fig.supylabel('amplitude', fontsize=plt.rcParams['axes.labelsize'])
|
||||||
|
fig.supxlabel('time [s]', fontsize=plt.rcParams['axes.labelsize'])
|
||||||
|
|
||||||
for i, stage in enumerate(stages_pre):
|
# Bandpass-filtered signal:
|
||||||
signal = data[stage][:, channel]
|
signal = data['filt'][:, channel]
|
||||||
ax_full, ax_zoom = axes[i, :]
|
ax_full, ax_zoom = axes[0, :]
|
||||||
ax_full.plot(t_full, signal, c=colors_pre[i])
|
c, lw = colors['filt'], linewidths['filt']
|
||||||
ax_full.set_ylim(signal.min(), signal.max())
|
ax_full.plot(t_full, signal, c=c, lw=lw)
|
||||||
|
ax_zoom.plot(t_zoom, signal[zoom_mask], c=c, lw=lw)
|
||||||
|
ax_full.set_ylim(signal.min(), signal.max())
|
||||||
|
|
||||||
ax_zoom.plot(t_zoom, signal[zoom_mask], c=colors_pre[i])
|
# Signal envelope:
|
||||||
|
signal = data['env'][:, channel]
|
||||||
|
ax_full, ax_zoom = axes[1, :]
|
||||||
|
c, lw = colors['env'], linewidths['env']
|
||||||
|
ax_full.plot(t_full, signal, c=c, lw=lw)
|
||||||
|
ax_zoom.plot(t_zoom, signal[zoom_mask], c=c, lw=lw)
|
||||||
|
ax_full.set_ylim(0, signal.max())
|
||||||
|
|
||||||
|
# Logarithmic envelope:
|
||||||
|
signal = data['log'][:, channel]
|
||||||
|
ax_full, ax_zoom = axes[2, :]
|
||||||
|
c, lw = colors['log'], linewidths['log']
|
||||||
|
ax_full.plot(t_full, signal, c=c, lw=lw)
|
||||||
|
ax_zoom.plot(t_zoom, signal[zoom_mask], c=c, lw=lw)
|
||||||
|
ax_full.set_ylim(signal.min(), 0)
|
||||||
|
|
||||||
|
# Adapted envelope:
|
||||||
|
signal = data['inv'][:, channel]
|
||||||
|
ax_full, ax_zoom = axes[3, :]
|
||||||
|
c, lw = colors['inv'], linewidths['inv']
|
||||||
|
ax_full.plot(t_full, signal, c=c, lw=lw)
|
||||||
|
ax_zoom.plot(t_zoom, signal[zoom_mask], c=c, lw=lw)
|
||||||
|
ax_full.set_ylim(signal.min(), signal.max())
|
||||||
|
|
||||||
|
# Posthoc adjustments:
|
||||||
ax_full.set_xlim(t_full[0], t_full[-1])
|
ax_full.set_xlim(t_full[0], t_full[-1])
|
||||||
|
ax_zoom.set_xlim(t_zoom[0], t_zoom[-1])
|
||||||
|
|
||||||
|
|
||||||
# PART II: FEATURE EXTRACTION STAGE:
|
# PART II: FEATURE EXTRACTION STAGE:
|
||||||
fig, axes = plt.subplots(len(stages_feat), 2, **fig_kwargs)
|
fig, axes = plt.subplots(3, 2, **fig_kwargs)
|
||||||
|
fig.supylabel('amplitude', fontsize=plt.rcParams['axes.labelsize'])
|
||||||
|
fig.supxlabel('time [s]', fontsize=plt.rcParams['axes.labelsize'])
|
||||||
|
|
||||||
for i, stage in enumerate(stages_feat):
|
# Convolutional filter responses:
|
||||||
signal = data[stage][:, ..., channel]
|
signal = data['conv'][:, :, channel]
|
||||||
ax_full, ax_zoom = axes[i, :]
|
ax_full, ax_zoom = axes[0, :]
|
||||||
ax_full.plot(t_full, signal, c=colors_feat[i])
|
c, lw = colors['conv'], linewidths['conv']
|
||||||
ax_full.set_ylim(signal.min(), signal.max())
|
ax_full.plot(t_full, signal, c=c, lw=lw)
|
||||||
|
ax_zoom.plot(t_zoom, signal[zoom_mask, :], c=c, lw=lw)
|
||||||
|
ax_full.set_ylim(signal.min(), signal.max())
|
||||||
|
|
||||||
ax_zoom.plot(t_zoom, signal[zoom_mask, ...], c=colors_feat[i])
|
# Binary responses:
|
||||||
|
signal = data['bi'][:, :, channel]
|
||||||
|
ax_full, ax_zoom = axes[1, :]
|
||||||
|
c, lw = colors['bi'], linewidths['bi']
|
||||||
|
ax_full.plot(t_full, signal, c=c, lw=lw)
|
||||||
|
ax_zoom.plot(t_zoom, signal[zoom_mask, :], c=c, lw=lw)
|
||||||
|
ax_full.set_ylim(signal.min(), signal.max())
|
||||||
|
|
||||||
|
# Finalized features:
|
||||||
|
signal = data['feat'][:, :, channel]
|
||||||
|
ax_full, ax_zoom = axes[2, :]
|
||||||
|
c, lw = colors['feat'], linewidths['feat']
|
||||||
|
ax_full.plot(t_full, signal, c=c, lw=lw)
|
||||||
|
ax_zoom.plot(t_zoom, signal[zoom_mask, :], c=c, lw=lw)
|
||||||
|
ax_full.set_ylim(0, 1)
|
||||||
|
|
||||||
|
# Posthoc adjustments:
|
||||||
ax_full.set_xlim(t_full[0], t_full[-1])
|
ax_full.set_xlim(t_full[0], t_full[-1])
|
||||||
|
ax_zoom.set_xlim(t_zoom[0], t_zoom[-1])
|
||||||
plt.show()
|
plt.show()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user