1248 lines (1247 with data), 122.7 kB
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n"
]
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import librosa\n",
"import wave as wav\n",
"from scipy import stats\n",
"\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense, Dropout, Conv2D, MaxPooling2D, GlobalAveragePooling2D\n",
"from keras.callbacks.callbacks import EarlyStopping\n",
"from keras import regularizers\n",
"from keras.optimizers import adam\n",
"from keras.utils import to_categorical\n",
"import scipy\n",
"import matplotlib.pyplot as plt\n",
"import librosa.display\n",
"import IPython.display as ipd\n",
"from sklearn import metrics\n",
"from sklearn.model_selection import cross_validate\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.metrics import classification_report, confusion_matrix\n",
"import os\n",
"import statistics\n",
"\n",
"import random\n",
"from random import randint"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"root = \"respiratory_sound_database/\"\n",
"sound_dir = root + \"audio_and_txt_files/\"\n",
"patient_diagnosis = pd.read_csv(root+\"patient_diagnosis.csv\", names=[\"patient\", \"diagnosis\"])\n",
"demographic_info = pd.read_csv(root+\"demographic_info.txt\", delimiter=\" \", names=[\"patient\", \"age\", \"sex\", \"bmi\", \"weight\", \"height\"])\n",
"train_soundfiles = pd.read_csv(root+\"train_soundfiles.csv\")\n",
"test_soundfiles = pd.read_csv(root+\"test_soundfiles.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"patient_diagnosis.set_index(\"patient\", inplace=True)\n",
"train_soundfiles.set_index(\"filename\", inplace=True)\n",
"test_soundfiles.set_index(\"filename\", inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" </tr>\n",
" <tr>\n",
" <th>filename</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>101_1b1_Al_sc_Meditron.wav</th>\n",
" </tr>\n",
" <tr>\n",
" <th>101_1b1_Pr_sc_Meditron.wav</th>\n",
" </tr>\n",
" <tr>\n",
" <th>102_1b1_Ar_sc_Meditron.wav</th>\n",
" </tr>\n",
" <tr>\n",
" <th>104_1b1_Al_sc_Litt3200.wav</th>\n",
" </tr>\n",
" <tr>\n",
" <th>104_1b1_Ar_sc_Litt3200.wav</th>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: []\n",
"Index: [101_1b1_Al_sc_Meditron.wav, 101_1b1_Pr_sc_Meditron.wav, 102_1b1_Ar_sc_Meditron.wav, 104_1b1_Al_sc_Litt3200.wav, 104_1b1_Ar_sc_Litt3200.wav]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_soundfiles.head()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" </tr>\n",
" <tr>\n",
" <th>filename</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>101_1b1_Al_sc_Meditron.wav</th>\n",
" </tr>\n",
" <tr>\n",
" <th>101_1b1_Pr_sc_Meditron.wav</th>\n",
" </tr>\n",
" <tr>\n",
" <th>102_1b1_Ar_sc_Meditron.wav</th>\n",
" </tr>\n",
" <tr>\n",
" <th>104_1b1_Al_sc_Litt3200.wav</th>\n",
" </tr>\n",
" <tr>\n",
" <th>104_1b1_Ar_sc_Litt3200.wav</th>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" </tr>\n",
" <tr>\n",
" <th>224_1b2_Al_sc_Meditron.wav</th>\n",
" </tr>\n",
" <tr>\n",
" <th>225_1b1_Pl_sc_Meditron.wav</th>\n",
" </tr>\n",
" <tr>\n",
" <th>226_1b1_Al_sc_Meditron.wav</th>\n",
" </tr>\n",
" <tr>\n",
" <th>226_1b1_Ll_sc_Meditron.wav</th>\n",
" </tr>\n",
" <tr>\n",
" <th>226_1b1_Pl_sc_LittC2SE.wav</th>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>917 rows × 0 columns</p>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: []\n",
"Index: [101_1b1_Al_sc_Meditron.wav, 101_1b1_Pr_sc_Meditron.wav, 102_1b1_Ar_sc_Meditron.wav, 104_1b1_Al_sc_Litt3200.wav, 104_1b1_Ar_sc_Litt3200.wav, 104_1b1_Ll_sc_Litt3200.wav, 104_1b1_Lr_sc_Litt3200.wav, 104_1b1_Pl_sc_Litt3200.wav, 104_1b1_Pr_sc_Litt3200.wav, 105_1b1_Tc_sc_Meditron.wav, 106_2b1_Pl_mc_LittC2SE.wav, 106_2b1_Pr_mc_LittC2SE.wav, 107_2b3_Al_mc_AKGC417L.wav, 107_2b3_Ar_mc_AKGC417L.wav, 107_2b3_Ll_mc_AKGC417L.wav, 107_2b3_Lr_mc_AKGC417L.wav, 107_2b3_Pl_mc_AKGC417L.wav, 107_2b3_Pr_mc_AKGC417L.wav, 107_2b3_Tc_mc_AKGC417L.wav, 107_2b4_Al_mc_AKGC417L.wav, 107_2b4_Ar_mc_AKGC417L.wav, 107_2b4_Ll_mc_AKGC417L.wav, 107_2b4_Lr_mc_AKGC417L.wav, 107_2b4_Pl_mc_AKGC417L.wav, 107_2b4_Pr_mc_AKGC417L.wav, 107_2b4_Tc_mc_AKGC417L.wav, 107_2b5_Al_mc_AKGC417L.wav, 107_2b5_Ar_mc_AKGC417L.wav, 107_2b5_Ll_mc_AKGC417L.wav, 107_2b5_Lr_mc_AKGC417L.wav, 107_2b5_Pl_mc_AKGC417L.wav, 107_2b5_Pr_mc_AKGC417L.wav, 107_2b5_Tc_mc_AKGC417L.wav, 107_3p2_Al_mc_AKGC417L.wav, 107_3p2_Ar_mc_AKGC417L.wav, 107_3p2_Ll_mc_AKGC417L.wav, 107_3p2_Lr_mc_AKGC417L.wav, 107_3p2_Pl_mc_AKGC417L.wav, 107_3p2_Pr_mc_AKGC417L.wav, 107_3p2_Tc_mc_AKGC417L.wav, 109_1b1_Al_sc_Litt3200.wav, 109_1b1_Ar_sc_Litt3200.wav, 109_1b1_Ll_sc_Litt3200.wav, 109_1b1_Lr_sc_Litt3200.wav, 109_1b1_Pl_sc_Litt3200.wav, 109_1b1_Pr_sc_Litt3200.wav, 110_1b1_Pr_sc_Meditron.wav, 110_1p1_Al_sc_Meditron.wav, 110_1p1_Ll_sc_Meditron.wav, 110_1p1_Lr_sc_Meditron.wav, 110_1p1_Pr_sc_Meditron.wav, 111_1b2_Tc_sc_Meditron.wav, 111_1b3_Tc_sc_Meditron.wav, 112_1b1_Ar_sc_Meditron.wav, 112_1b1_Lr_sc_Meditron.wav, 112_1p1_Ll_sc_Litt3200.wav, 112_1p1_Pl_sc_Litt3200.wav, 112_1p1_Pr_sc_Litt3200.wav, 113_1b1_Al_sc_Litt3200.wav, 113_1b1_Ar_sc_Litt3200.wav, 113_1b1_Ll_sc_Litt3200.wav, 113_1b1_Lr_sc_Litt3200.wav, 113_1b1_Pl_sc_Litt3200.wav, 113_1b1_Pr_sc_Litt3200.wav, 114_1b4_Al_mc_AKGC417L.wav, 114_1b4_Ar_mc_AKGC417L.wav, 114_1b4_Lr_mc_AKGC417L.wav, 114_1b4_Pl_mc_AKGC417L.wav, 114_1b4_Pr_mc_AKGC417L.wav, 116_1b2_Pl_sc_Meditron.wav, 116_1b2_Tc_sc_Meditron.wav, 117_1b2_Tc_mc_LittC2SE.wav, 117_1b3_Tc_mc_LittC2SE.wav, 118_1b1_Al_sc_Litt3200.wav, 118_1b1_Ar_sc_Litt3200.wav, 118_1b1_Ll_sc_Litt3200.wav, 118_1b1_Lr_sc_Litt3200.wav, 118_1b1_Pl_sc_Litt3200.wav, 118_1b1_Pr_sc_Litt3200.wav, 119_1b1_Ar_sc_Meditron.wav, 120_1b1_Al_sc_Meditron.wav, 120_1b1_Ar_sc_Meditron.wav, 120_1b1_Lr_sc_Meditron.wav, 120_1b1_Pl_sc_Meditron.wav, 120_1b1_Pr_sc_Meditron.wav, 121_1b1_Tc_sc_Meditron.wav, 121_1p1_Tc_sc_Meditron.wav, 122_2b1_Al_mc_LittC2SE.wav, 122_2b1_Ar_mc_LittC2SE.wav, 122_2b1_Tc_mc_LittC2SE.wav, 122_2b2_Al_mc_LittC2SE.wav, 122_2b2_Ar_mc_LittC2SE.wav, 122_2b2_Tc_mc_LittC2SE.wav, 122_2b3_Al_mc_LittC2SE.wav, 122_2b3_Ar_mc_LittC2SE.wav, 122_2b3_Tc_mc_LittC2SE.wav, 123_1b1_Al_sc_Meditron.wav, 124_1b1_Al_sc_Litt3200.wav, 124_1b1_Ar_sc_Litt3200.wav, 124_1b1_Ll_sc_Litt3200.wav, ...]\n",
"\n",
"[917 rows x 0 columns]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"soundfiles = pd.concat([train_soundfiles, test_soundfiles])\n",
"soundfiles"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#Creating train feature set"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"class Config(object):\n",
" def __init__(self, n_mfcc, max_frames, sample_rate, max_audio_duration, batch_size, epochs):\n",
" self.n_mfcc = n_mfcc\n",
" self.max_frames = max_frames\n",
" self.sample_rate = sample_rate\n",
" self.max_audio_duration = max_audio_duration\n",
" self.max_audio_length = max_audio_duration * sample_rate\n",
" self.batch_size = batch_size\n",
" self.epochs = epochs"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"config = Config(n_mfcc=40, max_frames=862, sample_rate = 11025, max_audio_duration = 20, batch_size = 64,\n",
"epochs = 700)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Preprocessing"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"def extract_features(filename, config):\n",
" #print(filename) For debugging\n",
" sound_root = root + \"audio_and_txt_files/\"\n",
" raw, sr = librosa.load(sound_root + filename, duration=20, res_type=\"kaiser_fast\")\n",
" mfccs = librosa.feature.mfcc(y=raw, sr=sr, n_mfcc=config.n_mfcc, hop_length=512, fmin=50, fmax=2000)\n",
" pad_width = config.max_frames - mfccs.shape[1]\n",
" mfccs = np.pad(mfccs, pad_width=((0,0), (0, pad_width)), mode='constant')\n",
" return mfccs"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#Silences all sound segments longer than 25ms that have an amplitude less than 5% of max\n",
"def silence(raw, sr):\n",
" minimum = raw.min()\n",
" pos_raw = raw+abs(minimum)\n",
" thresh = pos_raw.max()*0.05\n",
" \n",
" start = 0\n",
" end = 0\n",
" quiet_segment = False\n",
" for idx, val in enumerate(raw):\n",
" if val < thresh and quiet_segment == False:\n",
" quiet_segment = True\n",
" start = idx\n",
" elif val < thresh and quiet_segment == True:\n",
" continue\n",
" elif val >= thresh and quiet_segment == True:\n",
" end = idx\n",
" if (end-start / sr > 0.025):\n",
" raw[start:end] = abs(minimum)\n",
" quiet_segment=False\n",
" elif val >= thresh and quiet_segment == False:\n",
" continue\n",
" \n",
" new_raw = pos_raw-abs(minimum)\n",
" return new_raw"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"154_2b4_Pl_mc_AKGC417L.wav\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[-546.64764 -546.64764 -546.64764 ... -286.8623 -289.67197\n",
" -292.94394 ]\n",
" [ 0. 0. 0. ... 112.28939 105.16373\n",
" 106.74376 ]\n",
" [ 0. 0. 0. ... 61.456947 52.787937\n",
" 51.120117 ]\n",
" ...\n",
" [ 0. 0. 0. ... 5.2202296 -2.8576035\n",
" -4.3707957]\n",
" [ 0. 0. 0. ... -0.9986781 -6.991159\n",
" -11.324665 ]\n",
" [ 0. 0. 0. ... 5.0589476 7.4100876\n",
" 7.800515 ]]\n",
"(40, 862)\n"
]
}
],
"source": [
"sample_mfcc = extract_features(\"154_2b4_Pl_mc_AKGC417L.wav\", config)\n",
"\n",
"plt.figure(figsize=(10,4))\n",
"librosa.display.specshow(sample_mfcc[2:], x_axis='time')\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"print(sample_mfcc)\n",
"print(sample_mfcc.shape)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"COPD 566\n",
"Pneumonia 26\n",
"Healthy 24\n",
"URTI 14\n",
"Bronchiolitis 8\n",
"Bronchiectasis 7\n",
"Name: diagnosis, dtype: int64\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x150f95c9b9b0>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#See what's the distribution right now\n",
"\n",
"train_diagnosis = []\n",
"for i, row in train_soundfiles.iterrows():\n",
" patient = int(i.split(\"_\")[0])\n",
" diagnosis = patient_diagnosis.loc[patient]\n",
" train_diagnosis.append(str(diagnosis[0]))\n",
" \n",
"train_diagnosis = np.array(train_diagnosis)\n",
"train_diagnosis = pd.DataFrame(train_diagnosis, columns=[\"diagnosis\"])\n",
"print(train_diagnosis.diagnosis.value_counts())\n",
"train_diagnosis.diagnosis.value_counts().plot(kind=\"bar\")"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['104_1b1_Al_sc_Litt3200.wav',\n",
" '104_1b1_Ar_sc_Litt3200.wav',\n",
" '104_1b1_Ll_sc_Litt3200.wav',\n",
" '104_1b1_Lr_sc_Litt3200.wav',\n",
" '104_1b1_Pl_sc_Litt3200.wav',\n",
" '104_1b1_Pr_sc_Litt3200.wav',\n",
" '106_2b1_Pl_mc_LittC2SE.wav',\n",
" '106_2b1_Pr_mc_LittC2SE.wav',\n",
" '107_2b3_Al_mc_AKGC417L.wav',\n",
" '107_2b3_Ar_mc_AKGC417L.wav',\n",
" '107_2b3_Ll_mc_AKGC417L.wav',\n",
" '107_2b3_Lr_mc_AKGC417L.wav',\n",
" '107_2b3_Pl_mc_AKGC417L.wav',\n",
" '107_2b3_Pr_mc_AKGC417L.wav',\n",
" '107_2b3_Tc_mc_AKGC417L.wav',\n",
" '107_2b4_Al_mc_AKGC417L.wav',\n",
" '107_2b4_Ar_mc_AKGC417L.wav',\n",
" '107_2b4_Ll_mc_AKGC417L.wav',\n",
" '107_2b4_Lr_mc_AKGC417L.wav',\n",
" '107_2b4_Pl_mc_AKGC417L.wav',\n",
" '107_2b4_Pr_mc_AKGC417L.wav',\n",
" '107_2b4_Tc_mc_AKGC417L.wav',\n",
" '107_2b5_Al_mc_AKGC417L.wav',\n",
" '107_2b5_Ar_mc_AKGC417L.wav',\n",
" '107_2b5_Ll_mc_AKGC417L.wav',\n",
" '107_2b5_Lr_mc_AKGC417L.wav',\n",
" '107_2b5_Pl_mc_AKGC417L.wav',\n",
" '107_2b5_Pr_mc_AKGC417L.wav',\n",
" '107_2b5_Tc_mc_AKGC417L.wav',\n",
" '107_3p2_Al_mc_AKGC417L.wav',\n",
" '107_3p2_Ar_mc_AKGC417L.wav',\n",
" '107_3p2_Ll_mc_AKGC417L.wav',\n",
" '107_3p2_Lr_mc_AKGC417L.wav',\n",
" '107_3p2_Pl_mc_AKGC417L.wav',\n",
" '107_3p2_Pr_mc_AKGC417L.wav',\n",
" '107_3p2_Tc_mc_AKGC417L.wav',\n",
" '109_1b1_Al_sc_Litt3200.wav',\n",
" '109_1b1_Ar_sc_Litt3200.wav',\n",
" '109_1b1_Ll_sc_Litt3200.wav',\n",
" '109_1b1_Lr_sc_Litt3200.wav',\n",
" '109_1b1_Pl_sc_Litt3200.wav',\n",
" '109_1b1_Pr_sc_Litt3200.wav',\n",
" '110_1b1_Pr_sc_Meditron.wav',\n",
" '110_1p1_Al_sc_Meditron.wav',\n",
" '110_1p1_Ll_sc_Meditron.wav',\n",
" '110_1p1_Lr_sc_Meditron.wav',\n",
" '110_1p1_Pr_sc_Meditron.wav',\n",
" '112_1b1_Ar_sc_Meditron.wav',\n",
" '112_1b1_Lr_sc_Meditron.wav',\n",
" '112_1p1_Ll_sc_Litt3200.wav',\n",
" '112_1p1_Pl_sc_Litt3200.wav',\n",
" '112_1p1_Pr_sc_Litt3200.wav',\n",
" '113_1b1_Al_sc_Litt3200.wav',\n",
" '113_1b1_Ar_sc_Litt3200.wav',\n",
" '113_1b1_Ll_sc_Litt3200.wav',\n",
" '113_1b1_Lr_sc_Litt3200.wav',\n",
" '113_1b1_Pl_sc_Litt3200.wav',\n",
" '113_1b1_Pr_sc_Litt3200.wav',\n",
" '114_1b4_Al_mc_AKGC417L.wav',\n",
" '114_1b4_Ar_mc_AKGC417L.wav',\n",
" '114_1b4_Lr_mc_AKGC417L.wav',\n",
" '114_1b4_Pl_mc_AKGC417L.wav',\n",
" '114_1b4_Pr_mc_AKGC417L.wav',\n",
" '117_1b2_Tc_mc_LittC2SE.wav',\n",
" '117_1b3_Tc_mc_LittC2SE.wav',\n",
" '118_1b1_Al_sc_Litt3200.wav',\n",
" '118_1b1_Ar_sc_Litt3200.wav',\n",
" '118_1b1_Ll_sc_Litt3200.wav',\n",
" '118_1b1_Lr_sc_Litt3200.wav',\n",
" '118_1b1_Pl_sc_Litt3200.wav',\n",
" '118_1b1_Pr_sc_Litt3200.wav',\n",
" '120_1b1_Al_sc_Meditron.wav',\n",
" '120_1b1_Ar_sc_Meditron.wav',\n",
" '120_1b1_Lr_sc_Meditron.wav',\n",
" '120_1b1_Pl_sc_Meditron.wav',\n",
" '120_1b1_Pr_sc_Meditron.wav',\n",
" '124_1b1_Al_sc_Litt3200.wav',\n",
" '124_1b1_Ar_sc_Litt3200.wav',\n",
" '124_1b1_Ll_sc_Litt3200.wav',\n",
" '124_1b1_Lr_sc_Litt3200.wav',\n",
" '124_1b1_Pl_sc_Litt3200.wav',\n",
" '124_1b1_Pr_sc_Litt3200.wav',\n",
" '128_1b3_Tc_mc_LittC2SE.wav',\n",
" '130_1p2_Al_mc_AKGC417L.wav',\n",
" '130_1p2_Ar_mc_AKGC417L.wav',\n",
" '130_1p2_Ll_mc_AKGC417L.wav',\n",
" '130_1p2_Lr_mc_AKGC417L.wav',\n",
" '130_1p2_Pl_mc_AKGC417L.wav',\n",
" '130_1p2_Pr_mc_AKGC417L.wav',\n",
" '130_1p2_Tc_mc_AKGC417L.wav',\n",
" '130_1p3_Al_mc_AKGC417L.wav',\n",
" '130_1p3_Ar_mc_AKGC417L.wav',\n",
" '130_1p3_Ll_mc_AKGC417L.wav',\n",
" '130_1p3_Lr_mc_AKGC417L.wav',\n",
" '130_1p3_Pl_mc_AKGC417L.wav',\n",
" '130_1p3_Pr_mc_AKGC417L.wav',\n",
" '130_1p3_Tc_mc_AKGC417L.wav',\n",
" '130_1p4_Al_mc_AKGC417L.wav',\n",
" '130_1p4_Ar_mc_AKGC417L.wav',\n",
" '130_1p4_Ll_mc_AKGC417L.wav',\n",
" '130_1p4_Lr_mc_AKGC417L.wav',\n",
" '130_1p4_Pl_mc_AKGC417L.wav',\n",
" '130_1p4_Pr_mc_AKGC417L.wav',\n",
" '130_1p4_Tc_mc_AKGC417L.wav',\n",
" '130_2b2_Al_mc_AKGC417L.wav',\n",
" '130_2b2_Ar_mc_AKGC417L.wav',\n",
" '130_2b2_Ll_mc_AKGC417L.wav',\n",
" '130_2b2_Lr_mc_AKGC417L.wav',\n",
" '130_2b2_Pl_mc_AKGC417L.wav',\n",
" '130_2b2_Pr_mc_AKGC417L.wav',\n",
" '130_2b2_Tc_mc_AKGC417L.wav',\n",
" '130_2b3_Al_mc_AKGC417L.wav',\n",
" '130_2b3_Ar_mc_AKGC417L.wav',\n",
" '130_2b3_Ll_mc_AKGC417L.wav',\n",
" '130_2b3_Lr_mc_AKGC417L.wav',\n",
" '130_2b3_Pl_mc_AKGC417L.wav',\n",
" '130_2b3_Pr_mc_AKGC417L.wav',\n",
" '130_2b3_Tc_mc_AKGC417L.wav',\n",
" '130_2b4_Al_mc_AKGC417L.wav',\n",
" '130_2b4_Ar_mc_AKGC417L.wav',\n",
" '130_2b4_Ll_mc_AKGC417L.wav',\n",
" '130_2b4_Lr_mc_AKGC417L.wav',\n",
" '130_2b4_Pl_mc_AKGC417L.wav',\n",
" '130_2p3_Pl_mc_AKGC417L.wav',\n",
" '130_2p5_Al_mc_AKGC417L.wav',\n",
" '130_2p5_Ar_mc_AKGC417L.wav',\n",
" '130_2p5_Lr_mc_AKGC417L.wav',\n",
" '130_2p5_Pl_mc_AKGC417L.wav',\n",
" '130_2p5_Pr_mc_AKGC417L.wav',\n",
" '130_2p5_Tc_mc_AKGC417L.wav',\n",
" '130_3b3_Ll_mc_AKGC417L.wav',\n",
" '130_3b4_Al_mc_AKGC417L.wav',\n",
" '130_3b4_Ar_mc_AKGC417L.wav',\n",
" '130_3b4_Lr_mc_AKGC417L.wav',\n",
" '130_3b4_Pl_mc_AKGC417L.wav',\n",
" '130_3b4_Pr_mc_AKGC417L.wav',\n",
" '130_3p2_Al_mc_AKGC417L.wav',\n",
" '130_3p2_Ar_mc_AKGC417L.wav',\n",
" '130_3p2_Pl_mc_AKGC417L.wav',\n",
" '130_3p2_Pr_mc_AKGC417L.wav',\n",
" '130_3p2_Tc_mc_AKGC417L.wav',\n",
" '130_3p3_Al_mc_AKGC417L.wav',\n",
" '130_3p3_Pl_mc_AKGC417L.wav',\n",
" '130_3p3_Pr_mc_AKGC417L.wav',\n",
" '130_3p3_Tc_mc_AKGC417L.wav',\n",
" '130_3p4_Al_mc_AKGC417L.wav',\n",
" '130_3p4_Pl_mc_AKGC417L.wav',\n",
" '130_3p4_Pr_mc_AKGC417L.wav',\n",
" '130_3p4_Tc_mc_AKGC417L.wav',\n",
" '132_2b1_Lr_mc_LittC2SE.wav',\n",
" '132_2b2_Lr_mc_LittC2SE.wav',\n",
" '133_2p2_Al_mc_AKGC417L.wav',\n",
" '133_2p2_Ar_mc_AKGC417L.wav',\n",
" '133_2p2_Pl_mc_AKGC417L.wav',\n",
" '133_2p2_Tc_mc_AKGC417L.wav',\n",
" '133_2p3_Al_mc_AKGC417L.wav',\n",
" '133_2p3_Ar_mc_AKGC417L.wav',\n",
" '133_2p3_Pl_mc_AKGC417L.wav',\n",
" '133_2p3_Pr_mc_AKGC417L.wav',\n",
" '133_2p3_Tc_mc_AKGC417L.wav',\n",
" '133_2p4_Al_mc_AKGC417L.wav',\n",
" '133_2p4_Ar_mc_AKGC417L.wav',\n",
" '133_2p4_Pl_mc_AKGC417L.wav',\n",
" '133_2p4_Pr_mc_AKGC417L.wav',\n",
" '133_2p4_Tc_mc_AKGC417L.wav',\n",
" '133_3p2_Al_mc_AKGC417L.wav',\n",
" '133_3p2_Ar_mc_AKGC417L.wav',\n",
" '133_3p2_Pl_mc_AKGC417L.wav',\n",
" '133_3p2_Pr_mc_AKGC417L.wav',\n",
" '133_3p4_Tc_mc_AKGC417L.wav',\n",
" '134_2b1_Al_mc_LittC2SE.wav',\n",
" '134_2b1_Ar_mc_LittC2SE.wav',\n",
" '134_2b2_Al_mc_LittC2SE.wav',\n",
" '134_2b2_Ar_mc_LittC2SE.wav',\n",
" '134_2b3_Ar_mc_LittC2SE.wav',\n",
" '138_1p2_Al_mc_AKGC417L.wav',\n",
" '138_1p2_Ar_mc_AKGC417L.wav',\n",
" '138_1p2_Ll_mc_AKGC417L.wav',\n",
" '138_1p2_Lr_mc_AKGC417L.wav',\n",
" '138_1p2_Pl_mc_AKGC417L.wav',\n",
" '138_1p2_Pr_mc_AKGC417L.wav',\n",
" '138_1p2_Tc_mc_AKGC417L.wav',\n",
" '138_1p3_Al_mc_AKGC417L.wav',\n",
" '138_1p3_Ar_mc_AKGC417L.wav',\n",
" '138_1p3_Ll_mc_AKGC417L.wav',\n",
" '138_1p3_Lr_mc_AKGC417L.wav',\n",
" '138_1p3_Pl_mc_AKGC417L.wav',\n",
" '138_1p3_Pr_mc_AKGC417L.wav',\n",
" '138_1p3_Tc_mc_AKGC417L.wav',\n",
" '138_1p4_Ar_mc_AKGC417L.wav',\n",
" '138_1p4_Ll_mc_AKGC417L.wav',\n",
" '138_1p4_Lr_mc_AKGC417L.wav',\n",
" '138_1p4_Pl_mc_AKGC417L.wav',\n",
" '138_1p4_Pr_mc_AKGC417L.wav',\n",
" '138_1p4_Tc_mc_AKGC417L.wav',\n",
" '138_2p2_Al_mc_AKGC417L.wav',\n",
" '138_2p2_Ar_mc_AKGC417L.wav',\n",
" '138_2p2_Ll_mc_AKGC417L.wav',\n",
" '138_2p2_Lr_mc_AKGC417L.wav',\n",
" '138_2p2_Pl_mc_AKGC417L.wav',\n",
" '138_2p2_Pr_mc_AKGC417L.wav',\n",
" '138_2p2_Tc_mc_AKGC417L.wav',\n",
" '139_1b1_Al_sc_Litt3200.wav',\n",
" '139_1b1_Ar_sc_Litt3200.wav',\n",
" '139_1b1_Ll_sc_Litt3200.wav',\n",
" '139_1b1_Lr_sc_Litt3200.wav',\n",
" '139_1b1_Pl_sc_Litt3200.wav',\n",
" '139_1b1_Pr_sc_Litt3200.wav',\n",
" '141_1b1_Pr_mc_LittC2SE.wav',\n",
" '141_1b2_Ar_mc_LittC2SE.wav',\n",
" '141_1b2_Lr_mc_LittC2SE.wav',\n",
" '141_1b2_Pr_mc_LittC2SE.wav',\n",
" '141_1b2_Tc_mc_LittC2SE.wav',\n",
" '141_1b3_Al_mc_LittC2SE.wav',\n",
" '141_1b3_Ar_mc_LittC2SE.wav',\n",
" '141_1b3_Pr_mc_LittC2SE.wav',\n",
" '142_1b1_Pl_mc_LittC2SE.wav',\n",
" '145_2b2_Al_mc_AKGC417L.wav',\n",
" '145_2b2_Ar_mc_AKGC417L.wav',\n",
" '145_2b2_Lr_mc_AKGC417L.wav',\n",
" '145_2b2_Pr_mc_AKGC417L.wav',\n",
" '145_3b2_Ar_mc_AKGC417L.wav',\n",
" '145_3b2_Lr_mc_AKGC417L.wav',\n",
" '145_3b4_Pl_mc_AKGC417L.wav',\n",
" '146_2b2_Pl_mc_AKGC417L.wav',\n",
" '146_2b4_Al_mc_AKGC417L.wav',\n",
" '146_2b4_Ar_mc_AKGC417L.wav',\n",
" '146_2b4_Ll_mc_AKGC417L.wav',\n",
" '146_2b4_Lr_mc_AKGC417L.wav',\n",
" '146_2b4_Pr_mc_AKGC417L.wav',\n",
" '146_8p3_Al_mc_AKGC417L.wav',\n",
" '146_8p3_Ar_mc_AKGC417L.wav',\n",
" '146_8p3_Lr_mc_AKGC417L.wav',\n",
" '146_8p3_Pl_mc_AKGC417L.wav',\n",
" '146_8p3_Pr_mc_AKGC417L.wav',\n",
" '147_1b2_Tc_mc_AKGC417L.wav',\n",
" '147_1b3_Tc_mc_AKGC417L.wav',\n",
" '147_1b4_Tc_mc_AKGC417L.wav',\n",
" '147_2b2_Al_mc_AKGC417L.wav',\n",
" '147_2b2_Ar_mc_AKGC417L.wav',\n",
" '147_2b2_Pl_mc_AKGC417L.wav',\n",
" '147_2b3_Al_mc_AKGC417L.wav',\n",
" '147_2b3_Ar_mc_AKGC417L.wav',\n",
" '147_2b3_Ll_mc_AKGC417L.wav',\n",
" '147_2b3_Lr_mc_AKGC417L.wav',\n",
" '147_2b3_Pl_mc_AKGC417L.wav',\n",
" '147_2b4_Al_mc_AKGC417L.wav',\n",
" '147_2b4_Ar_mc_AKGC417L.wav',\n",
" '147_2b4_Ll_mc_AKGC417L.wav',\n",
" '147_2b4_Lr_mc_AKGC417L.wav',\n",
" '147_2b4_Pl_mc_AKGC417L.wav',\n",
" '151_2p2_Al_mc_AKGC417L.wav',\n",
" '151_2p2_Ar_mc_AKGC417L.wav',\n",
" '151_2p2_Ll_mc_AKGC417L.wav',\n",
" '151_2p2_Lr_mc_AKGC417L.wav',\n",
" '151_2p2_Pl_mc_AKGC417L.wav',\n",
" '151_2p2_Pr_mc_AKGC417L.wav',\n",
" '151_2p2_Tc_mc_AKGC417L.wav',\n",
" '151_2p3_Al_mc_AKGC417L.wav',\n",
" '151_2p3_Ar_mc_AKGC417L.wav',\n",
" '151_2p3_Ll_mc_AKGC417L.wav',\n",
" '151_2p3_Lr_mc_AKGC417L.wav',\n",
" '151_2p3_Pl_mc_AKGC417L.wav',\n",
" '151_2p3_Pr_mc_AKGC417L.wav',\n",
" '151_2p3_Tc_mc_AKGC417L.wav',\n",
" '151_2p4_Al_mc_AKGC417L.wav',\n",
" '151_2p4_Ar_mc_AKGC417L.wav',\n",
" '151_2p4_Ll_mc_AKGC417L.wav',\n",
" '151_2p4_Lr_mc_AKGC417L.wav',\n",
" '151_2p4_Pl_mc_AKGC417L.wav',\n",
" '151_2p4_Pr_mc_AKGC417L.wav',\n",
" '151_2p4_Tc_mc_AKGC417L.wav',\n",
" '151_3p2_Al_mc_AKGC417L.wav',\n",
" '151_3p2_Ar_mc_AKGC417L.wav',\n",
" '151_3p2_Lr_mc_AKGC417L.wav',\n",
" '151_3p2_Pl_mc_AKGC417L.wav',\n",
" '151_3p2_Pr_mc_AKGC417L.wav',\n",
" '151_3p2_Tc_mc_AKGC417L.wav',\n",
" '151_3p3_Ll_mc_AKGC417L.wav',\n",
" '154_1b3_Al_mc_AKGC417L.wav',\n",
" '154_1b3_Ar_mc_AKGC417L.wav',\n",
" '154_1b3_Ll_mc_AKGC417L.wav',\n",
" '154_1b3_Lr_mc_AKGC417L.wav',\n",
" '154_1b3_Pl_mc_AKGC417L.wav',\n",
" '154_1b3_Pr_mc_AKGC417L.wav',\n",
" '154_1b3_Tc_mc_AKGC417L.wav',\n",
" '154_2b4_Al_mc_AKGC417L.wav',\n",
" '154_2b4_Ar_mc_AKGC417L.wav',\n",
" '154_2b4_Ll_mc_AKGC417L.wav',\n",
" '154_2b4_Lr_mc_AKGC417L.wav',\n",
" '154_2b4_Pl_mc_AKGC417L.wav',\n",
" '154_2b4_Pr_mc_AKGC417L.wav',\n",
" '154_2b4_Tc_mc_AKGC417L.wav',\n",
" '154_3b3_Al_mc_AKGC417L.wav',\n",
" '154_3b3_Ar_mc_AKGC417L.wav',\n",
" '154_3b3_Ll_mc_AKGC417L.wav',\n",
" '154_4b4_Al_mc_AKGC417L.wav',\n",
" '154_4b4_Ar_mc_AKGC417L.wav',\n",
" '154_4b4_Ll_mc_AKGC417L.wav',\n",
" '154_4b4_Lr_mc_AKGC417L.wav',\n",
" '154_4b4_Pl_mc_AKGC417L.wav',\n",
" '154_4b4_Pr_mc_AKGC417L.wav',\n",
" '155_2b1_Al_mc_LittC2SE.wav',\n",
" '156_2b3_Al_mc_AKGC417L.wav',\n",
" '156_2b3_Ar_mc_AKGC417L.wav',\n",
" '156_2b3_Ll_mc_AKGC417L.wav',\n",
" '156_2b3_Lr_mc_AKGC417L.wav',\n",
" '156_2b3_Pl_mc_AKGC417L.wav',\n",
" '156_2b3_Pr_mc_AKGC417L.wav',\n",
" '156_5b3_Al_mc_AKGC417L.wav',\n",
" '156_5b3_Ar_mc_AKGC417L.wav',\n",
" '156_5b3_Ll_mc_AKGC417L.wav',\n",
" '156_5b3_Lr_mc_AKGC417L.wav',\n",
" '156_5b3_Pl_mc_AKGC417L.wav',\n",
" '156_5b3_Pr_mc_AKGC417L.wav',\n",
" '156_8b3_Al_mc_AKGC417L.wav',\n",
" '156_8b3_Ar_mc_AKGC417L.wav',\n",
" '156_8b3_Ll_mc_AKGC417L.wav',\n",
" '156_8b3_Lr_mc_AKGC417L.wav',\n",
" '156_8b3_Pl_mc_AKGC417L.wav',\n",
" '157_1b1_Al_sc_Meditron.wav',\n",
" '157_1b1_Ar_sc_Meditron.wav',\n",
" '157_1b1_Lr_sc_Meditron.wav',\n",
" '157_1b1_Pl_sc_Meditron.wav',\n",
" '157_1b1_Pr_sc_Meditron.wav',\n",
" '158_1b3_Ar_mc_LittC2SE.wav',\n",
" '158_1p2_Al_mc_AKGC417L.wav',\n",
" '158_1p2_Ar_mc_AKGC417L.wav',\n",
" '158_1p2_Ll_mc_AKGC417L.wav',\n",
" '158_1p2_Lr_mc_AKGC417L.wav',\n",
" '158_1p2_Pl_mc_AKGC417L.wav',\n",
" '158_1p2_Pr_mc_AKGC417L.wav',\n",
" '158_1p2_Tc_mc_AKGC417L.wav',\n",
" '158_1p3_Al_mc_AKGC417L.wav',\n",
" '158_1p3_Ar_mc_AKGC417L.wav',\n",
" '158_1p3_Ll_mc_AKGC417L.wav',\n",
" '158_1p3_Lr_mc_AKGC417L.wav',\n",
" '158_1p3_Pl_mc_AKGC417L.wav',\n",
" '158_1p3_Pr_mc_AKGC417L.wav',\n",
" '158_1p3_Tc_mc_AKGC417L.wav',\n",
" '158_1p4_Al_mc_AKGC417L.wav',\n",
" '158_1p4_Ar_mc_AKGC417L.wav',\n",
" '158_1p4_Lr_mc_AKGC417L.wav',\n",
" '158_1p4_Pl_mc_AKGC417L.wav',\n",
" '158_1p4_Pr_mc_AKGC417L.wav',\n",
" '158_1p4_Tc_mc_AKGC417L.wav',\n",
" '158_2p2_Ar_mc_AKGC417L.wav',\n",
" '158_2p3_Lr_mc_AKGC417L.wav',\n",
" '158_2p3_Tc_mc_AKGC417L.wav',\n",
" '160_1b2_Al_mc_AKGC417L.wav',\n",
" '160_1b2_Ar_mc_AKGC417L.wav',\n",
" '160_1b2_Lr_mc_AKGC417L.wav',\n",
" '160_1b2_Pl_mc_AKGC417L.wav',\n",
" '160_1b2_Pr_mc_AKGC417L.wav',\n",
" '160_1b2_Tc_mc_AKGC417L.wav',\n",
" '160_1b3_Al_mc_AKGC417L.wav',\n",
" '160_1b3_Ar_mc_AKGC417L.wav',\n",
" '160_1b3_Lr_mc_AKGC417L.wav',\n",
" '160_1b3_Pl_mc_AKGC417L.wav',\n",
" '160_1b3_Pr_mc_AKGC417L.wav',\n",
" '160_1b3_Tc_mc_AKGC417L.wav',\n",
" '160_1b4_Al_mc_AKGC417L.wav',\n",
" '160_1b4_Ar_mc_AKGC417L.wav',\n",
" '160_1b4_Lr_mc_AKGC417L.wav',\n",
" '160_1b4_Pl_mc_AKGC417L.wav',\n",
" '160_1b4_Pr_mc_AKGC417L.wav',\n",
" '160_1b4_Tc_mc_AKGC417L.wav',\n",
" '160_2b3_Lr_mc_AKGC417L.wav',\n",
" '160_2b4_Ar_mc_AKGC417L.wav',\n",
" '160_2b4_Pl_mc_AKGC417L.wav',\n",
" '160_2b4_Pr_mc_AKGC417L.wav',\n",
" '160_2b4_Tc_mc_AKGC417L.wav',\n",
" '162_1b2_Al_mc_AKGC417L.wav',\n",
" '162_1b2_Ar_mc_AKGC417L.wav',\n",
" '162_1b2_Ll_mc_AKGC417L.wav',\n",
" '162_1b2_Lr_mc_AKGC417L.wav',\n",
" '162_1b2_Pl_mc_AKGC417L.wav',\n",
" '162_1b2_Pr_mc_AKGC417L.wav',\n",
" '162_1b2_Tc_mc_AKGC417L.wav',\n",
" '162_2b2_Al_mc_AKGC417L.wav',\n",
" '162_2b2_Ar_mc_AKGC417L.wav',\n",
" '162_2b2_Pl_mc_AKGC417L.wav',\n",
" '162_2b2_Pr_mc_AKGC417L.wav',\n",
" '162_2b2_Tc_mc_AKGC417L.wav',\n",
" '162_2b3_Al_mc_AKGC417L.wav',\n",
" '162_2b3_Ar_mc_AKGC417L.wav',\n",
" '162_2b3_Lr_mc_AKGC417L.wav',\n",
" '162_2b3_Pl_mc_AKGC417L.wav',\n",
" '162_2b3_Pr_mc_AKGC417L.wav',\n",
" '162_2b3_Tc_mc_AKGC417L.wav',\n",
" '162_2b4_Al_mc_AKGC417L.wav',\n",
" '162_2b4_Ar_mc_AKGC417L.wav',\n",
" '162_2b4_Lr_mc_AKGC417L.wav',\n",
" '162_2b4_Pl_mc_AKGC417L.wav',\n",
" '162_2b4_Pr_mc_AKGC417L.wav',\n",
" '162_2b4_Tc_mc_AKGC417L.wav',\n",
" '163_2b2_Al_mc_AKGC417L.wav',\n",
" '163_2b2_Ar_mc_AKGC417L.wav',\n",
" '163_2b2_Ll_mc_AKGC417L.wav',\n",
" '163_2b2_Lr_mc_AKGC417L.wav',\n",
" '163_2b2_Pl_mc_AKGC417L.wav',\n",
" '163_2b2_Pr_mc_AKGC417L.wav',\n",
" '163_2b2_Tc_mc_AKGC417L.wav',\n",
" '163_8b3_Al_mc_AKGC417L.wav',\n",
" '163_8b3_Ar_mc_AKGC417L.wav',\n",
" '163_8b3_Ll_mc_AKGC417L.wav',\n",
" '163_8b3_Lr_mc_AKGC417L.wav',\n",
" '163_8b3_Pl_mc_AKGC417L.wav',\n",
" '163_8b3_Pr_mc_AKGC417L.wav',\n",
" '166_1p1_Al_sc_Meditron.wav',\n",
" '166_1p1_Ar_sc_Meditron.wav',\n",
" '166_1p1_Ll_sc_Meditron.wav',\n",
" '166_1p1_Pl_sc_Meditron.wav',\n",
" '166_1p1_Pr_sc_Meditron.wav',\n",
" '170_1b2_Al_mc_AKGC417L.wav',\n",
" '170_1b2_Ar_mc_AKGC417L.wav',\n",
" '170_1b2_Lr_mc_AKGC417L.wav',\n",
" '170_1b2_Pl_mc_AKGC417L.wav',\n",
" '170_1b2_Pr_mc_AKGC417L.wav',\n",
" '170_1b2_Tc_mc_AKGC417L.wav',\n",
" '170_1b3_Al_mc_AKGC417L.wav',\n",
" '170_1b3_Ar_mc_AKGC417L.wav',\n",
" '170_1b3_Ll_mc_AKGC417L.wav',\n",
" '170_1b3_Lr_mc_AKGC417L.wav',\n",
" '170_1b3_Pl_mc_AKGC417L.wav',\n",
" '170_1b3_Pr_mc_AKGC417L.wav',\n",
" '170_1b3_Tc_mc_AKGC417L.wav',\n",
" '170_1b4_Al_mc_AKGC417L.wav',\n",
" '170_1b4_Ar_mc_AKGC417L.wav',\n",
" '170_1b4_Lr_mc_AKGC417L.wav',\n",
" '170_1b4_Pl_mc_AKGC417L.wav',\n",
" '170_1b4_Pr_mc_AKGC417L.wav',\n",
" '170_1b4_Tc_mc_AKGC417L.wav',\n",
" '170_2b2_Al_mc_AKGC417L.wav',\n",
" '170_2b2_Ar_mc_AKGC417L.wav',\n",
" '170_2b2_Lr_mc_AKGC417L.wav',\n",
" '170_2b2_Pl_mc_AKGC417L.wav',\n",
" '170_2b2_Pr_mc_AKGC417L.wav',\n",
" '170_2b2_Tc_mc_AKGC417L.wav',\n",
" '172_1b3_Al_mc_AKGC417L.wav',\n",
" '172_1b3_Ar_mc_AKGC417L.wav',\n",
" '172_1b3_Ll_mc_AKGC417L.wav',\n",
" '172_1b3_Lr_mc_AKGC417L.wav',\n",
" '172_1b3_Pl_mc_AKGC417L.wav',\n",
" '172_1b3_Pr_mc_AKGC417L.wav',\n",
" '172_1b3_Tc_mc_AKGC417L.wav',\n",
" '172_1b4_Al_mc_AKGC417L.wav',\n",
" '172_1b4_Ar_mc_AKGC417L.wav',\n",
" '172_1b4_Ll_mc_AKGC417L.wav',\n",
" '172_1b4_Lr_mc_AKGC417L.wav',\n",
" '172_1b4_Pl_mc_AKGC417L.wav',\n",
" '172_1b4_Pr_mc_AKGC417L.wav',\n",
" '172_1b4_Tc_mc_AKGC417L.wav',\n",
" '172_1b5_Al_mc_AKGC417L.wav',\n",
" '172_1b5_Ar_mc_AKGC417L.wav',\n",
" '172_1b5_Ll_mc_AKGC417L.wav',\n",
" '172_1b5_Lr_mc_AKGC417L.wav',\n",
" '172_1b5_Pl_mc_AKGC417L.wav',\n",
" '172_1b5_Pr_mc_AKGC417L.wav',\n",
" '172_1b5_Tc_mc_AKGC417L.wav',\n",
" '172_2b5_Al_mc_AKGC417L.wav',\n",
" '172_2b5_Ar_mc_AKGC417L.wav',\n",
" '172_2b5_Lr_mc_AKGC417L.wav',\n",
" '172_2b5_Pl_mc_AKGC417L.wav',\n",
" '172_2b5_Pr_mc_AKGC417L.wav',\n",
" '172_2b5_Tc_mc_AKGC417L.wav',\n",
" '174_1p2_Ar_mc_AKGC417L.wav',\n",
" '174_1p2_Ll_mc_AKGC417L.wav',\n",
" '174_1p2_Lr_mc_AKGC417L.wav',\n",
" '174_1p2_Pl_mc_AKGC417L.wav',\n",
" '174_1p2_Pr_mc_AKGC417L.wav',\n",
" '174_1p2_Tc_mc_AKGC417L.wav',\n",
" '174_1p3_Ar_mc_AKGC417L.wav',\n",
" '174_1p3_Ll_mc_AKGC417L.wav',\n",
" '174_1p3_Lr_mc_AKGC417L.wav',\n",
" '174_1p3_Pl_mc_AKGC417L.wav',\n",
" '174_1p3_Pr_mc_AKGC417L.wav',\n",
" '174_1p3_Tc_mc_AKGC417L.wav',\n",
" '174_1p4_Ar_mc_AKGC417L.wav',\n",
" '174_1p4_Ll_mc_AKGC417L.wav',\n",
" '174_1p4_Lr_mc_AKGC417L.wav',\n",
" '174_1p4_Pl_mc_AKGC417L.wav',\n",
" '174_1p4_Pr_mc_AKGC417L.wav',\n",
" '174_1p4_Tc_mc_AKGC417L.wav',\n",
" '174_2p3_Al_mc_AKGC417L.wav',\n",
" '174_2p3_Ar_mc_AKGC417L.wav',\n",
" '174_2p3_Pl_mc_AKGC417L.wav',\n",
" '174_2p3_Pr_mc_AKGC417L.wav',\n",
" '174_2p3_Tc_mc_AKGC417L.wav',\n",
" '175_1b1_Al_sc_Litt3200.wav',\n",
" '175_1b1_Ar_sc_Litt3200.wav',\n",
" '175_1b1_Ll_sc_Litt3200.wav',\n",
" '175_1b1_Lr_sc_Litt3200.wav',\n",
" '175_1b1_Pl_sc_Litt3200.wav',\n",
" '175_1b1_Pr_sc_Litt3200.wav',\n",
" '176_1b3_Al_mc_AKGC417L.wav',\n",
" '176_1b3_Ar_mc_AKGC417L.wav',\n",
" '176_1b3_Ll_mc_AKGC417L.wav',\n",
" '176_1b3_Lr_mc_AKGC417L.wav',\n",
" '176_1b3_Pl_mc_AKGC417L.wav',\n",
" '176_1b3_Pr_mc_AKGC417L.wav',\n",
" '176_1b3_Tc_mc_AKGC417L.wav',\n",
" '176_1b4_Al_mc_AKGC417L.wav',\n",
" '176_1b4_Ar_mc_AKGC417L.wav',\n",
" '176_1b4_Ll_mc_AKGC417L.wav',\n",
" '176_1b4_Lr_mc_AKGC417L.wav',\n",
" '176_1b4_Pl_mc_AKGC417L.wav',\n",
" '176_1b4_Pr_mc_AKGC417L.wav',\n",
" '176_1b4_Tc_mc_AKGC417L.wav',\n",
" '176_2b3_Al_mc_AKGC417L.wav',\n",
" '176_2b3_Ar_mc_AKGC417L.wav',\n",
" '176_2b3_Ll_mc_AKGC417L.wav',\n",
" '176_2b3_Lr_mc_AKGC417L.wav',\n",
" '176_2b3_Pl_mc_AKGC417L.wav',\n",
" '176_2b3_Pr_mc_AKGC417L.wav',\n",
" '176_2b3_Tc_mc_AKGC417L.wav',\n",
" '177_1b2_Al_mc_AKGC417L.wav',\n",
" '177_1b2_Ar_mc_AKGC417L.wav',\n",
" '177_1b2_Lr_mc_AKGC417L.wav',\n",
" '177_1b2_Pl_mc_AKGC417L.wav',\n",
" '177_1b2_Pr_mc_AKGC417L.wav',\n",
" '177_1b2_Tc_mc_AKGC417L.wav',\n",
" '177_1b4_Al_mc_AKGC417L.wav',\n",
" '177_1b4_Ar_mc_AKGC417L.wav',\n",
" '177_1b4_Lr_mc_AKGC417L.wav',\n",
" '177_1b4_Pl_mc_AKGC417L.wav',\n",
" '177_1b4_Pr_mc_AKGC417L.wav',\n",
" '177_1b4_Tc_mc_AKGC417L.wav',\n",
" '177_2b4_Al_mc_AKGC417L.wav',\n",
" '177_2b4_Lr_mc_AKGC417L.wav',\n",
" '177_2b4_Pl_mc_AKGC417L.wav',\n",
" '177_2b4_Pr_mc_AKGC417L.wav',\n",
" '177_2b4_Tc_mc_AKGC417L.wav',\n",
" '178_1b2_Al_mc_AKGC417L.wav',\n",
" '178_1b2_Ar_mc_AKGC417L.wav',\n",
" '178_1b2_Lr_mc_AKGC417L.wav',\n",
" '178_1b2_Pl_mc_AKGC417L.wav',\n",
" '178_1b2_Pr_mc_AKGC417L.wav',\n",
" '178_1b2_Tc_mc_AKGC417L.wav',\n",
" '178_1b3_Al_mc_AKGC417L.wav',\n",
" '178_1b3_Ar_mc_AKGC417L.wav',\n",
" '178_1b3_Lr_mc_AKGC417L.wav',\n",
" '178_1b3_Pl_mc_AKGC417L.wav',\n",
" '178_1b3_Pr_mc_AKGC417L.wav',\n",
" '178_1b3_Tc_mc_AKGC417L.wav',\n",
" '178_1b6_Al_mc_AKGC417L.wav',\n",
" '178_1b6_Ar_mc_AKGC417L.wav',\n",
" '178_1b6_Ll_mc_AKGC417L.wav',\n",
" '178_1b6_Lr_mc_AKGC417L.wav',\n",
" '178_1b6_Pl_mc_AKGC417L.wav',\n",
" '178_1b6_Pr_mc_AKGC417L.wav',\n",
" '178_1b6_Tc_mc_AKGC417L.wav',\n",
" '178_2b2_Al_mc_AKGC417L.wav',\n",
" '178_2b2_Ar_mc_AKGC417L.wav',\n",
" '178_2b2_Lr_mc_AKGC417L.wav',\n",
" '178_2b2_Pr_mc_AKGC417L.wav',\n",
" '178_2b2_Tc_mc_AKGC417L.wav',\n",
" '180_1b4_Al_mc_AKGC417L.wav',\n",
" '180_1b4_Ar_mc_AKGC417L.wav',\n",
" '180_1b4_Lr_mc_AKGC417L.wav',\n",
" '180_1b4_Pl_mc_AKGC417L.wav',\n",
" '180_1b4_Pr_mc_AKGC417L.wav',\n",
" '181_1b1_Ar_mc_LittC2SE.wav',\n",
" '181_1b1_Tc_mc_LittC2SE.wav',\n",
" '181_1b2_Ar_mc_LittC2SE.wav',\n",
" '181_1b3_Tc_mc_LittC2SE.wav']"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Iterate through all indexes and save those that have COPD\n",
"\n",
"train_soundfiles.sort_values(by=\"filename\", ascending=True, inplace=True)\n",
"copd_pats = [i\n",
" for i, row in train_soundfiles.iterrows() \n",
" if patient_diagnosis.loc[int(i[:3])].diagnosis == 'COPD']\n",
"copd_pats"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"copd_pats = pd.DataFrame(np.array(copd_pats), columns=[\"soundfile\"])\n",
"copd_pats.set_index(\"soundfile\", inplace=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Extract MFCCs from soundfiles (X sets)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#Split patients into 5 folds\n",
"\n",
"def get_patient_folds(n_folds = 5):\n",
" n_folds = 5\n",
" patients_list = list(patient_diagnosis.index)\n",
" random_seed = random.Random(41)\n",
" random_seed.shuffle(patients_list)\n",
" fold_length = int(len(patients_list)/n_folds)\n",
" patient_folds = []\n",
" for i in range(n_folds-1):\n",
" patient_folds += [patients_list[i*fold_length : (i+1)*fold_length]]\n",
" patient_folds += [patients_list[(n_folds-1)*fold_length:]]\n",
" return patient_folds"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def get_soundfiles_for_patients(patient_list):\n",
" patient_soundfiles = []\n",
" for soundfile in soundfiles.index:\n",
" soundfiles_patient = int(soundfile[:3])\n",
" if (soundfiles_patient in patient_list):\n",
" patient_soundfiles.append(soundfile)\n",
" return patient_soundfiles"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#Let's see what the data distribution is right now\n",
"\n",
"def get_data_distribution(soundfiles, patient_diagnosis):\n",
" train_diagnosis = []\n",
" for i in soundfiles:\n",
" patient = int(i.split(\"_\")[0])\n",
" diagnosis = get_patient_diagnosis(patient=patient)\n",
" train_diagnosis.append(diagnosis)\n",
"\n",
" train_diagnosis = np.array(train_diagnosis)\n",
" train_diagnosis = pd.DataFrame(train_diagnosis, columns=[\"diagnosis\"])\n",
" return train_diagnosis.diagnosis.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#Given the patient number, return their diagnosis\n",
"def get_patient_diagnosis(patient):\n",
" return patient_diagnosis.loc[patient].diagnosis"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#Input is the audio time series\n",
"def extract_features_from_sound(raw, config, verbose = 0):\n",
" if (verbose == 1):\n",
" print(\"Extracting features from sound...\")\n",
" print(\"Length of raw is\", len(raw))\n",
" \n",
" max_audio_length = config.max_audio_length\n",
" \n",
" #Random padding\n",
" if len(raw) < config.max_audio_length:\n",
" maximum_padding = config.max_audio_length - len(raw)\n",
" begin_padding = randint(a = 0, b = maximum_padding)\n",
" end_padding = maximum_padding - begin_padding\n",
" raw = np.pad(raw, pad_width=(begin_padding, end_padding), mode=\"constant\")\n",
" if (verbose == 1):\n",
" print(len(raw))\n",
" mfccs = librosa.feature.mfcc(y=raw, sr=config.sample_rate, n_mfcc=config.n_mfcc, hop_length=512, fmin=50, fmax=2000) \n",
" \n",
" if (verbose == 1):\n",
" print(\"Padding complete, length of raw is\", len(raw))\n",
" print(\"Padding, complete, shape of MFCCs is\", np.array(mfccs).shape)\n",
" print(\"Features from sound extracted!\")\n",
" \n",
" return mfccs"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def get_data_for_cnn(soundfiles, directory, verbose = 0):\n",
" all_features = [] #X\n",
" all_diagnosis = [] #y\n",
" \n",
" for soundfile in soundfiles:\n",
" raw, sr = librosa.load(directory + soundfile, sr=config.sample_rate, duration=config.max_audio_duration)\n",
" if (verbose == 1):\n",
" print(\"Soundfile\", soundfile)\n",
" print(\"Sample rate is\", sr)\n",
" print(\"Just loaded sound. Length is\", len(raw))\n",
" \n",
" if (verbose == 1):\n",
" print(\"Exctracting features...\")\n",
" features = extract_features_from_sound(raw, config, verbose = verbose)\n",
" all_features.append(features)\n",
" \n",
" diagnosis = get_patient_diagnosis(int(soundfile[:3]))\n",
" all_diagnosis.append(diagnosis)\n",
" \n",
" if(verbose ==1):\n",
" print(\"Features extracted!\")\n",
" \n",
" X = np.expand_dims(np.array(all_features), -1)\n",
" return X, all_diagnosis\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#Generating data\n",
"#We have split the patients into 5 folds already here\n",
"#And will generate data separately for each fold\n",
"#Alternatively it is possible to modify the code and generate data for all patients at once\n",
"#And then split them info folds later\n",
"\n",
"patient_folds = get_patient_folds()\n",
"all_results = []\n",
"\n",
"for i in range(5):\n",
" print(\"We're at fold\", i+1)\n",
" test_patients = patient_folds[i]\n",
" train_patients = patient_folds.copy()\n",
" del train_patients[i]\n",
" train_patients = [item for sublist in train_patients for item in sublist] #flatten list\n",
" \n",
" test_soundfiles = get_soundfiles_for_patients(test_patients)\n",
" train_soundfiles = get_soundfiles_for_patients(train_patients)\n",
"\n",
" X_train, labels_train = get_data_for_cnn(train_soundfiles, sound_dir)\n",
" X_test, labels_test = get_data_for_cnn(test_soundfiles, sound_dir)\n",
" \n",
" all_labels = labels_train + labels_test\n",
" test_labels_start = len(labels_train)\n",
" factorized_labels, classes = pd.factorize(all_labels)\n",
" print(classes)\n",
" categorical_labels = to_categorical(factorized_labels)\n",
" y_train = categorical_labels[:test_labels_start]\n",
" y_test = categorical_labels[test_labels_start:]\n",
" \n",
" np.save(root + \"dataframes/X_train_no_aug_04_08_split_\" + str(i), X_train)\n",
" np.save(root + \"dataframes/X_test_no_aug_04_08_split_\" + str(i), X_test)\n",
" np.save(root + \"dataframes/y_train_no_aug_04_08_split_\" + str(i), y_train)\n",
" np.save(root + \"dataframes/y_test_no_aug_04_08_split_\" + str(i), y_test)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python (venv)",
"language": "python",
"name": "venv"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}