Skip to content
Snippets Groups Projects
Commit 9cc3a22b authored by Paul Best's avatar Paul Best
Browse files

better plot freq distrib

parent b9a43533
No related branches found
No related tags found
No related merge requests found
No preview for this file type
......@@ -6,27 +6,29 @@ import os, mir_eval
from metadata import species
np.seterr(divide = 'ignore')
fig, ax = plt.subplots(ncols=2, sharex=True, figsize=(10, 4.8))
ax[0].set_ylabel('Frequency (Hz)')
ax[0].set_yscale('log')
ax[1].set_ylabel('# Voiced time bins')
ax[1].set_yscale('log')
fig, ax = plt.subplots(ncols=3, sharey=True, figsize=(10, 4.8))
ax[0].set_title('Frequency (Hz)')
ax[1].set_title('# Voiced time bins')
ax[2].set_title('Modulation rate (Hz/sec)')
for i in range(3):
ax[i].set_xscale('log')
ax[i].grid()
for i, specie in enumerate(species):
wavpath, FS, nfft, downsample = species[specie].values()
dt = nfft / 8 / FS
fdistrib, tdistrib = [], []
for fn in tqdm(glob(wavpath)[:10], desc=specie):
wavpath, FS, nfft, downsample, step = species[specie].values()
dt = nfft * step / FS
fdistrib, tdistrib, moddistrib = [], [], []
for fn in tqdm(glob(wavpath), desc=specie):
annot = pd.read_csv(f'{fn[:-4]}.csv').drop_duplicates(subset='Time').fillna(0)
f0s, mask2 = mir_eval.melody.resample_melody_series(annot.Time, annot.Freq, annot.Freq > 0,\
np.arange(annot.Time.min()+1e-5, annot.Time.max(), dt), kind='linear', verbose=False)
fdistrib.extend(f0s[mask2.astype(bool)])
tdistrib.append(mask2.sum())
ax[0].violinplot(fdistrib, positions=[i])
ax[1].violinplot(tdistrib, positions=[i])
moddistrib.extend(abs(np.diff(f0s[mask2.astype(bool)]))/dt)
ax[0].violinplot(fdistrib, positions=[i], vert=False)
ax[1].violinplot(tdistrib, positions=[i], vert=False)
ax[2].violinplot(moddistrib, positions=[i], vert=False)
plt.xticks(np.arange(len(species)), species.keys(), rotation=22)
ax[0].set_xticklabels(species.keys(), rotation=22)
plt.yticks(np.arange(len(species)), [s.replace('_',' ') for s in species])
plt.tight_layout()
plt.savefig('freq_distrib.pdf')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment