├── images ├── ablation.PNG └── table_results.PNG ├── class_balanced_loss.py ├── SoundLoader.py ├── README.md ├── utils.py ├── model.py ├── Blocks.py ├── train_test.csv ├── Att_Network.ipynb ├── test.csv └── Creating_Database.ipynb /images/ablation.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdcneto/Lung-Sound-Classification/HEAD/images/ablation.PNG -------------------------------------------------------------------------------- /images/table_results.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdcneto/Lung-Sound-Classification/HEAD/images/table_results.PNG -------------------------------------------------------------------------------- /class_balanced_loss.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import torch 3 | import torch.nn.functional as F 4 | import torch.nn as nn 5 | 6 | def CB_loss(device, samples_per_cls, no_of_classes, beta): 7 | """Compute the Class Balanced Loss between `logits` and the ground truth `labels`. 8 | Class Balanced Loss: ((1-beta)/(1-beta^n))*Loss(labels, logits) 9 | where Loss is one of the standard losses used for Neural Networks. 10 | Args: 11 | labels: A int tensor of size [batch]. 12 | logits: A float tensor of size [batch, no_of_classes]. 13 | samples_per_cls: A python list of size [no_of_classes]. 14 | no_of_classes: total number of classes. int 15 | loss_type: string. One of "sigmoid", "focal", "softmax". 16 | beta: float. Hyperparameter for Class balanced loss. 17 | gamma: float. Hyperparameter for Focal loss. 18 | Returns: 19 | cb_loss: A float tensor representing class balanced loss 20 | """ 21 | effective_num = 1.0 - np.power(beta, samples_per_cls) 22 | weights = (1.0 - beta) / np.array(effective_num) 23 | weights = torch.from_numpy(weights / np.sum(weights)*no_of_classes) 24 | weights = weights.float().to(device) 25 | loss_weighted = nn.CrossEntropyLoss(weight=weights) 26 | #cb_loss = loss_weighted(logits, labels) 27 | 28 | # retuning criterion 29 | return loss_weighted -------------------------------------------------------------------------------- /SoundLoader.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import torch 3 | from torch.utils.data import Dataset 4 | import librosa 5 | import os 6 | 7 | """ 8 | -------------------------------------------------- 9 | Sound Dataset 10 | -------------------------------------------------- 11 | """ 12 | class LungSoundDS(Dataset): 13 | def __init__(self, df, data_path, transform=None): 14 | self.df = df 15 | self.data_path = data_path 16 | self.transform = transform 17 | self.sr = 22050 18 | self.n_bins = 96 19 | # ---------------------------- 20 | # Number of items in dataset 21 | # ---------------------------- 22 | def __len__(self): 23 | return len(self.df) 24 | 25 | # ---------------------------- 26 | # Get i'th item in dataset 27 | # ---------------------------- 28 | def __getitem__(self, idx): 29 | # File path of the audio file 30 | # full path 31 | audio_path = os.path.join(self.data_path,self.df.filename.iloc[idx]) 32 | 33 | # Get the Class ID 34 | class_id = self.df.id.iloc[idx] 35 | 36 | # Load an audio file. Return the signal and the sample rate 37 | x, _ = librosa.load(audio_path) 38 | 39 | mfcc = librosa.power_to_db(librosa.feature.mfcc(x, sr=self.sr, n_mfcc=self.n_bins, hop_length=512, htk=True),ref=np.max) 40 | mel = librosa.power_to_db(librosa.feature.melspectrogram(x, sr=self.sr, n_mels=self.n_bins),ref=np.max) 41 | cqt_abs = np.abs(librosa.cqt(x, sr=self.sr, hop_length=512, n_bins=self.n_bins)) 42 | cqt = librosa.amplitude_to_db(cqt_abs,ref=np.max) 43 | image = np.stack((mfcc, mel, cqt), axis=0) 44 | 45 | image = torch.from_numpy(image) 46 | 47 | # Applying Transformations 48 | if self.transform: 49 | image = self.transform(image) 50 | 51 | return image, class_id -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Classifying Respiratory Diseases with Deep Learning 2 | Classifying Respiratory diseases with Pre trained Neuro Network using Attention and Vision Transformer on respiratory sound data. 3 | 4 | ## Objective 5 | 6 | Respiratory sounds are important indicators of respiratory health and respiratory disorders. The sound emitted when a person breathes is directly related to air movement, changes within lung tissue and the position of secretions within the lung. A wheezing sound, for example, is a common sign that a patient has an obstructive airway disease like asthma or chronic obstructive pulmonary disease (COPD). 7 | These sounds can be recorded using digital stethoscopes and other recording techniques. This digital data opens up the possibility of using machine learning to automatically diagnose respiratory disorders like asthma, pneumonia and bronchiolitis, to name a few. 8 | 9 | ## Dataset 10 | 11 | Link to oficial repository: https://bhichallenge.med.auth.gr/ICBHI_2017_Challenge 12 | Link to dataset from Kaggle: https://www.kaggle.com/vbookshelf/respiratory-sound-database 13 | 14 | The Respiratory Sound Database was created by two research teams in Portugal and Greece. It includes 920 annotated recordings of varying length - 10s to 90s. These recordings were taken from 126 patients. There are a total of 5.5 hours of recordings containing 6898 respiratory cycles - 1864 contain crackles, 886 contain wheezes and 506 contain both crackles and wheezes. 15 | 16 | The data includes both clean respiratory sounds as well as noisy recordings that simulate real life conditions. The patients span all age groups - children, adults and the elderly. 17 | 18 | 19 | ### Results 20 | 21 | 22 | 23 | ### Ablation Studies 24 | 25 | 26 | 27 | ### Our paper 28 | You can find our paper [here](https://ieeexplore.ieee.org/document/9991756) 29 | 30 | ### Citation 31 | If you use this work or code, please kindly cite this paper: 32 | ``` 33 | @INPROCEEDINGS{9991756, 34 | author={Neto, José and Arrais, Nicksson and Vinuto, Tiago and Lucena, João}, 35 | booktitle={2022 35th SIBGRAPI Conference on Graphics, Patterns and Images (SIBGRAPI)}, 36 | title={Convolution-Vision Transformer for Automatic Lung Sound Classification}, 37 | year={2022}, 38 | } 39 | ``` 40 | -------------------------------------------------------------------------------- /utils.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | from torch import Tensor 4 | from torchaudio import functional as F 5 | from torch.utils.data import Dataset 6 | import librosa 7 | import torchaudio.transforms as T 8 | import numpy as np 9 | 10 | class Compose: 11 | ''' 12 | Data augmentation module that transforms any given data 13 | example with a chain of audio augmentations. 14 | ''' 15 | 16 | def __init__(self, transforms): 17 | self.transforms = transforms 18 | 19 | def __call__(self, x): 20 | x = self.transform(x) 21 | return x 22 | 23 | def __repr__(self): 24 | format_string = self.__class__.__name__ + "(" 25 | for t in self.transforms: 26 | format_string += "\n" 27 | format_string += "\t{0}".format(t) 28 | format_string += "\n)" 29 | return format_string 30 | 31 | def transform(self, x): 32 | for t in self.transforms: 33 | x = t(x) 34 | return x 35 | 36 | class DataFromSubset(Dataset): 37 | def __init__(self, subset, transform=None): 38 | self.subset = subset 39 | self.transform = transform 40 | 41 | def __len__(self): 42 | return len(self.subset) 43 | 44 | def __getitem__(self, index): 45 | x, y = self.subset[index] 46 | if self.transform: 47 | x = self.transform(x) 48 | return x, y 49 | 50 | """ class SelectSamples(Dataset): 51 | def __init__(self, subset, samples=None, transform=None): 52 | ''' 53 | samples must be a list of labels which some transformation 54 | will be applied 55 | ''' 56 | self.subset = subset 57 | self.transform = transform 58 | 59 | def __len__(self): 60 | return len(self.subset) 61 | 62 | def __getitem__(self, idx): 63 | x, y = self.subset[idx] 64 | if y in samples: 65 | x = self.transform(x) 66 | else: 67 | pass 68 | 69 | return x, y """ 70 | 71 | class SpecPermute(torch.nn.Module): 72 | def __init__(self): 73 | super(SpecPermute, self).__init__() 74 | 75 | def forward(self, x): 76 | 77 | return torch.permute(x, (0, 2, 1)) 78 | 79 | class Permute(torch.nn.Module): 80 | def __init__(self): 81 | super(Permute, self).__init__() 82 | 83 | def forward(self, x): 84 | 85 | return torch.permute(x, (1, 0, 2)) 86 | 87 | class addChannel(object): 88 | def __init__(self): 89 | self.channels 90 | 91 | def __cal__(self,x): 92 | x = x.unsqueeze(dim=0) 93 | return x 94 | 95 | def __repr__(self): 96 | return print("Add two channel in a gray scaled imaged") 97 | 98 | # extracting mel features 99 | class Mel(object): 100 | def __init__(self, sr = 22050, n_mels=96): 101 | self.sr = sr 102 | self.n_mels = n_mels 103 | super(Mel, self).__init__() 104 | 105 | def __cal__(self,x): 106 | return librosa.feature.melspectrogram(x, sr=self.sr, n_mels=self.n_mels, fmax=8000) 107 | 108 | def __repr__(self): 109 | return print("Mel Features") 110 | 111 | # decibel scale 112 | class dbScale(object): 113 | def __init__(self): 114 | super(dbScale, self).__init__() 115 | 116 | def __cal__(self,x): 117 | return librosa.power_to_db(x,) 118 | 119 | def __repr__(self): 120 | return print("Decibel Scale") 121 | 122 | # extracting mfcc features 123 | class MFCC(object): 124 | def __init__(self, sr=22050, n_mfcc=96): 125 | self.sr = sr 126 | self.n_mfcc = n_mfcc 127 | 128 | def __call__(self, x): 129 | x = librosa.feature.mfcc(x, sr=self.sr, n_mfcc=self.n_mfcc, hop_length=512, htk=True) 130 | x = torch.from_numpy(x) 131 | return x.unsqueeze(dim=0) 132 | 133 | def __repr__(self): 134 | return self.__class__.__name__ + '()' 135 | 136 | # extracting mfcc features 137 | class MakeImage(object): 138 | def __init__(self, sr=22050, n_bins=96): 139 | self.sr = sr 140 | self.n_bins = n_bins 141 | 142 | def __call__(self, x): 143 | mfcc = librosa.power_to_db(librosa.feature.mfcc(x, sr=self.sr, n_mfcc=self.n_bins, hop_length=512, htk=True),ref=np.max) 144 | mel = librosa.power_to_db(librosa.feature.melspectrogram(x, sr=self.sr, n_mels=self.n_bins),ref=np.max) 145 | cqt_abs = np.abs(librosa.cqt(x, sr=self.sr, hop_length=512, n_bins=self.n_bins)) 146 | cqt = librosa.amplitude_to_db(cqt_abs,ref=np.max) 147 | image = np.stack((mfcc, mel, cqt), axis=0) 148 | 149 | return torch.from_numpy(image) 150 | 151 | def __repr__(self): 152 | return self.__class__.__name__ + '()' 153 | 154 | 155 | def mel_layer(n_mels=96, sample_rate=22050, f_min=0, f_max=8000, n_fft=2048, win_length=2048, hop_length=512): 156 | """extract Mel Spectrogram features""" 157 | return T.MelSpectrogram(sample_rate=sample_rate,n_fft=n_fft,win_length=win_length,hop_length=hop_length, 158 | center=True,pad_mode="reflect",power=2.0,norm="slaney",onesided=True,n_mels=n_mels,mel_scale="htk",) 159 | 160 | 161 | def mfcc_layer(n_mfcc=96, n_mels=96, sample_rate=22050, f_min=0, f_max=8000, n_fft=2048, win_length=2048, hop_length=512): 162 | """Extract MFCC features""" 163 | return T.MFCC(sample_rate=sample_rate,n_mfcc=n_mfcc,melkwargs={"n_fft": n_fft,"n_mels": n_mels,"hop_length": hop_length, 164 | "mel_scale": "htk",},) -------------------------------------------------------------------------------- /model.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | from Blocks import AttentionBlock, ResidualAttention 4 | from utils import mel_layer, mfcc_layer 5 | from timm.models import vit_base_patch16_224_in21k 6 | 7 | # DeiT transformer 8 | def DeiT(num_classes=1000, pretrained=False, model="small", freeze=False): 9 | if model == "small": 10 | deit = torch.hub.load('facebookresearch/deit:main', 'deit_small_patch16_224', pretrained=pretrained) 11 | elif model == "base": 12 | deit = torch.hub.load('facebookresearch/deit:main', 'deit_base_patch16_224', pretrained=pretrained) 13 | else: 14 | raise NotImplemented 15 | 16 | if freeze: 17 | for param in deit.parameters(): 18 | param.requires_grad = False 19 | 20 | n_inputs = deit.head.in_features 21 | deit.head = nn.Sequential( 22 | nn.Linear(n_inputs, 512), 23 | nn.ReLU(), 24 | nn.Dropout(0.2), 25 | nn.Linear(512, num_classes)) 26 | return deit 27 | 28 | # Vision Transformer 29 | def ViT(num_classes=1000, pretrained=False, freeze=False): 30 | vit = vit_base_patch16_224_in21k(pretrained=pretrained) 31 | 32 | if freeze: 33 | for param in vit.parameters(): 34 | param.requires_grad = False 35 | 36 | n_inputs = vit.head.in_features 37 | vit.head = nn.Sequential( 38 | nn.Linear(n_inputs, 512), 39 | nn.ReLU(), 40 | nn.Dropout(0.5), 41 | nn.Linear(512, num_classes)) 42 | return vit 43 | 44 | 45 | # Attention Model 46 | class AttentionModel(nn.Module): 47 | def __init__(self, attention=True, channelAtt="CBAM", spatialAtt=False, op=None, num_classes=4): 48 | super(AttentionModel, self).__init__() 49 | self.mel = mel_layer() 50 | self.mfcc = mfcc_layer() 51 | self.relu = nn.ReLU(inplace=True) 52 | self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1) 53 | 54 | self.conv1 = nn.Conv2d(1, 16, kernel_size=7, stride=1, padding=3, bias=False) 55 | self.bn1 = nn.BatchNorm2d(16) 56 | self.ResAtt = ResidualAttention(16,16, attention=attention, channelAtt=channelAtt, op=op) 57 | 58 | self.conv2 = nn.Conv2d(32, 64, kernel_size=7, stride=1, padding=3, bias=False) 59 | self.bn2 = nn.BatchNorm2d(64) 60 | self.ResAtt2 = ResidualAttention(64,64, attention=attention, channelAtt=channelAtt, op=op) 61 | 62 | self.attBlock = AttentionBlock(128, channelAtt=channelAtt, spatialAtt=spatialAtt, op=op) 63 | #self.conv3 = nn.Conv2d(64, 128, kernel_size=7, stride=2, padding=3, bias=False) 64 | #self.bn3 = nn.BatchNorm2d(128) 65 | #self.ResAtt2 = ResidualAttention(32,64, op=self.op) 66 | 67 | self.avgpool = nn.AdaptiveAvgPool2d((1, 1)) 68 | self.fc = nn.Linear(128, 32) 69 | self.fc2 = nn.Linear(32, num_classes) 70 | 71 | for m in self.modules(): 72 | if isinstance(m, nn.Conv2d): 73 | nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') 74 | elif isinstance(m, (nn.BatchNorm2d, nn.GroupNorm)): 75 | nn.init.constant_(m.weight, 1) 76 | nn.init.constant_(m.bias, 0) 77 | 78 | def forward(self, x): 79 | x1 = self.mfcc(x) 80 | x2 = self.mel(x) 81 | 82 | x = self.bn1(self.conv1(x1)) 83 | x = self.maxpool(self.relu(x)) 84 | x2 = self.maxpool(x2) 85 | x = self.ResAtt(x, x2) 86 | 87 | x = self.bn2(self.conv2(x)) 88 | x = self.maxpool(self.relu(x)) 89 | x2 = self.maxpool(x2) 90 | x = self.ResAtt2(x, x2) 91 | 92 | x = self.attBlock(x) 93 | #x = self.bn3(self.conv3(x)) 94 | x = self.avgpool(self.relu(x)) 95 | x = torch.flatten(x, 1) 96 | x = self.fc(x) 97 | 98 | x = self.fc2(x) 99 | 100 | return x 101 | 102 | # ViT Cnn Model 103 | class ViTCnn(nn.Module): 104 | def __init__(self, num_classes, pretrained=True, attention=True, channelAtt="CBAM", spatialAtt=False, freeze=False): 105 | super(ViTCnn, self).__init__() 106 | self.att = attention 107 | self.cnn = nn.Conv2d(3, 16, kernel_size=5, stride=1, padding=2, bias=False) 108 | self.attention = AttentionBlock(16, channelAtt=channelAtt, spatialAtt=spatialAtt) 109 | self.cnn2 = nn.Sequential(nn.Conv2d(16, 3, kernel_size=5, stride=1, padding=2, bias=False), 110 | nn.BatchNorm2d(3) 111 | ) 112 | self.vit = ViT(num_classes=num_classes, pretrained=pretrained, freeze=freeze) 113 | 114 | def forward(self, x): 115 | out = self.cnn(x) 116 | att = (self.attention(out) if self.att else out) 117 | out = self.cnn2(att) 118 | out = self.vit(out) 119 | 120 | return out 121 | 122 | # DeiT Cnn with braches 123 | class DeiTCnn(nn.Module): 124 | def __init__(self, num_classes, pretrained=True, model="small", freeze=False, attention=True, channelAtt="CBAM", spatialAtt=True): 125 | super(DeiTCnn, self).__init__() 126 | self.att = attention 127 | self.conv1 = nn.Conv2d(1, 1, kernel_size=3, stride=1, padding=1, bias=False) 128 | 129 | self.attBlock = nn.Sequential(nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1, bias=False), 130 | AttentionBlock(16, channelAtt=channelAtt, spatialAtt=spatialAtt), 131 | nn.Conv2d(16,3, kernel_size=3, stride=1, padding=1, bias=False)) 132 | 133 | self.deit = DeiT(num_classes=num_classes, pretrained=pretrained, model=model, freeze=freeze) 134 | 135 | def forward(self, x): 136 | x1 = self.conv1(x[:,0,:,:].unsqueeze(dim=1)) 137 | x2 = self.conv1(x[:,1,:,:].unsqueeze(dim=1)) 138 | x3 = self.conv1(x[:,2,:,:].unsqueeze(dim=1)) 139 | out = torch.cat([x1,x2,x3], dim=1) 140 | att = (self.attBlock(out) if self.att else out) 141 | out = self.deit(att) 142 | 143 | return out -------------------------------------------------------------------------------- /Blocks.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | import torch.nn.functional as F 4 | 5 | """Implementation of some channel attention blocks such as: 6 | SEBlock from squeeze and excitation in https://arxiv.org/pdf/1709.01507v4.pdf 7 | CBAMBlock from Convolution Block Attention Module in https://arxiv.org/pdf/1807.06521.pdf 8 | ECABlock from Efficient Channel Attention for Deep Convolutional Neural Networks in https://arxiv.org/pdf/1910.03151.pdf 9 | 10 | Obs: The last one have some changes from the original. 11 | """ 12 | 13 | ## channel attention from squeeze and excitation paper https://arxiv.org/pdf/1709.01507v4.pdf 14 | class SEBlock(nn.Module): 15 | def __init__(self, inplanes, reduction_ratio=16): 16 | super().__init__() 17 | self.squeeze = nn.AdaptiveAvgPool2d(1) 18 | self.excitation = nn.Sequential( 19 | nn.Linear(inplanes, inplanes//reduction_ratio, bias=False), 20 | nn.ReLU(inplace=False), 21 | nn.Linear(inplanes//reduction_ratio, inplanes, bias=False), 22 | nn.Sigmoid() 23 | ) 24 | 25 | def forward(self, x): 26 | bs, c, _, _ = x.shape 27 | y = self.squeeze(x).view(bs, c) 28 | y = self.excitation(y).view(bs, c, 1, 1) 29 | return x*y 30 | 31 | ## channel attention from cbam paper https://arxiv.org/pdf/1807.06521.pdf 32 | class CBAMBlock(nn.Module): 33 | def __init__(self, inplanes, reduction_ratio=16): 34 | super(CBAMBlock, self).__init__() 35 | self.avg_pool = nn.AdaptiveAvgPool2d(1) 36 | self.max_pool = nn.AdaptiveMaxPool2d(1) 37 | self.mlp = nn.Sequential(nn.Flatten(), 38 | nn.Linear(inplanes, inplanes//reduction_ratio), 39 | nn.ReLU(inplace=False), 40 | nn.Linear(inplanes//reduction_ratio, inplanes)) 41 | self.activation = nn.Sigmoid() 42 | 43 | def forward(self, x): 44 | avg_pool = self.avg_pool(x) # same in squeeze op 45 | max_pool = self.max_pool(x) 46 | 47 | channel_att1 = self.mlp(avg_pool) 48 | channel_att2 = self.mlp(max_pool) 49 | 50 | channel_att_sum = channel_att1 + channel_att2 51 | 52 | scale = self.activation(channel_att_sum).unsqueeze(2).unsqueeze(3) 53 | 54 | return x*scale 55 | 56 | ## modified channel attention from ECA-NET paper https://arxiv.org/pdf/1910.03151.pdf 57 | class ECABlock(nn.Module): 58 | """Constructs a ECA module. 59 | Args: 60 | k_size: Size of convolutional filter use (3,3) as default 61 | 62 | op : Operation type for feature concatenation, use "sum" 63 | or "mult" for sum or multiplication. 64 | """ 65 | def __init__(self, k_size=3, op=None): 66 | super(ECABlock, self).__init__() 67 | self.op = op 68 | self.avg_pool = nn.AdaptiveAvgPool2d(1) 69 | self.max_pool = nn.AdaptiveMaxPool2d(1) 70 | self.conv = nn.Conv1d(1, 1, kernel_size=k_size, padding=(k_size - 1) // 2, bias=False) 71 | self.activation = nn.Sigmoid() 72 | 73 | def forward(self, x): 74 | # feature descriptor on the global spatial information 75 | y1 = self.avg_pool(x) 76 | y2 = self.max_pool(x) 77 | 78 | # Two different branches of ECA module 79 | out1 = self.conv(y1.squeeze(-1).transpose(-1, -2)).transpose(-1, -2).unsqueeze(-1) 80 | out2 = self.conv(y2.squeeze(-1).transpose(-1, -2)).transpose(-1, -2).unsqueeze(-1) 81 | 82 | # Multi-scale information fusion 83 | if self.op == "sum": 84 | out = out1+out2 85 | elif self.op == "mult": 86 | out = out1*out2 87 | else: 88 | out = out1 89 | 90 | # Normalization 91 | out = self.activation(out) 92 | 93 | return x*out 94 | 95 | ## spatial blocks 96 | class ChannelPool(nn.Module): 97 | def forward(self, x): 98 | return torch.cat((torch.max(x,1)[0].unsqueeze(1), torch.mean(x,1).unsqueeze(1)), dim=1) 99 | 100 | class BasicConv(nn.Module): 101 | def __init__(self, inplanes, planes, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=False): 102 | super(BasicConv, self).__init__() 103 | self.conv = nn.Conv2d(inplanes, planes, kernel_size=kernel_size, stride=stride, padding=padding, dilation=dilation, 104 | groups=groups, bias=bias) 105 | self.bn = nn.BatchNorm2d(planes,eps=1e-5, momentum=0.01, affine=True) 106 | self.relu = nn.ReLU() 107 | 108 | def forward(self, x): 109 | x = self.conv(x) 110 | x = self.bn(x) 111 | x = self.relu(x) 112 | return x 113 | 114 | class SpatialBlock(nn.Module): 115 | def __init__(self): 116 | super(SpatialBlock, self).__init__() 117 | kernel_size = 7 118 | self.compress = ChannelPool() 119 | self.spatial = BasicConv(2, 1, kernel_size, stride=1, padding=(kernel_size-1)//2) 120 | self.activation = nn.Sigmoid() 121 | 122 | def forward(self, x): 123 | x_compress = self.compress(x) 124 | x_out = self.spatial(x_compress) 125 | scale = self.activation(x_out) # broadcasting 126 | return x*scale 127 | 128 | ## Attention Block for Residue Module 129 | class AttentionBlock(nn.Module): 130 | def __init__(self, inplanes, channelAtt = "CBAM", spatialAtt=True, op=None): 131 | super(AttentionBlock, self).__init__() 132 | self.op = op 133 | self.spatialAtt = spatialAtt 134 | self.spatial = SpatialBlock() 135 | 136 | # choosing channel attention 137 | if channelAtt == "SE": 138 | self.channel = SEBlock(inplanes) 139 | elif channelAtt == "CBAM": 140 | self.channel = CBAMBlock(inplanes) 141 | elif channelAtt == "ECA": 142 | self.channel = ECABlock(op=self.op) 143 | else: 144 | raise NotImplemented 145 | 146 | def forward(self, x): 147 | out = (self.spatial(x) if self.spatialAtt else x) 148 | out = self.channel(out) 149 | 150 | return out 151 | 152 | ## Residue Module 153 | class ResidualAttention(nn.Module): 154 | def __init__(self, inplanes, planes, attention=True, channelAtt="CBAM", op=None): 155 | super(ResidualAttention, self).__init__() 156 | self.residue = nn.Sequential(nn.Conv2d(inplanes, planes, kernel_size=1, stride=1, bias=False), 157 | nn.BatchNorm2d(planes),) 158 | self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=3, stride=1, padding=1, groups=1, bias=False, dilation=1) 159 | self.bn1 = nn.BatchNorm2d(planes, eps=1e-5, momentum=0.01, affine=True) 160 | self.relu = nn.ReLU(inplace=True) 161 | self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=1, padding=1, groups=1, bias=False, dilation=1) 162 | self.bn2 = nn.BatchNorm2d(planes, eps=1e-5, momentum=0.01, affine=True) 163 | # add attention 164 | if attention: 165 | self.att = AttentionBlock(planes, channelAtt=channelAtt, op=op) 166 | else: 167 | self.att = None 168 | 169 | def forward(self,x): 170 | residue = self.residue(x) 171 | out = self.conv1(x) 172 | out = self.bn1(out) 173 | out = self.relu(out) 174 | out = self.conv2(out) 175 | out = self.bn2(out) 176 | out = self.att(out) 177 | out = torch.cat([out,residue], dim=1) 178 | out = self.relu(out) 179 | 180 | return out -------------------------------------------------------------------------------- /train_test.csv: -------------------------------------------------------------------------------- 1 | 101_1b1_Al_sc_Meditron,test 2 | 101_1b1_Pr_sc_Meditron,test 3 | 102_1b1_Ar_sc_Meditron,test 4 | 103_2b2_Ar_mc_LittC2SE,train 5 | 104_1b1_Al_sc_Litt3200,test 6 | 104_1b1_Ar_sc_Litt3200,test 7 | 104_1b1_Ll_sc_Litt3200,test 8 | 104_1b1_Lr_sc_Litt3200,test 9 | 104_1b1_Pl_sc_Litt3200,test 10 | 104_1b1_Pr_sc_Litt3200,test 11 | 105_1b1_Tc_sc_Meditron,train 12 | 106_2b1_Pl_mc_LittC2SE,train 13 | 106_2b1_Pr_mc_LittC2SE,train 14 | 107_2b3_Al_mc_AKGC417L,train 15 | 107_2b3_Ar_mc_AKGC417L,train 16 | 107_2b3_Ll_mc_AKGC417L,train 17 | 107_2b3_Lr_mc_AKGC417L,train 18 | 107_2b3_Pl_mc_AKGC417L,train 19 | 107_2b3_Pr_mc_AKGC417L,train 20 | 107_2b3_Tc_mc_AKGC417L,train 21 | 107_2b4_Al_mc_AKGC417L,train 22 | 107_2b4_Ar_mc_AKGC417L,train 23 | 107_2b4_Ll_mc_AKGC417L,train 24 | 107_2b4_Lr_mc_AKGC417L,train 25 | 107_2b4_Pl_mc_AKGC417L,train 26 | 107_2b4_Pr_mc_AKGC417L,train 27 | 107_2b4_Tc_mc_AKGC417L,train 28 | 107_2b5_Al_mc_AKGC417L,train 29 | 107_2b5_Ar_mc_AKGC417L,train 30 | 107_2b5_Ll_mc_AKGC417L,train 31 | 107_2b5_Lr_mc_AKGC417L,train 32 | 107_2b5_Pl_mc_AKGC417L,train 33 | 107_2b5_Pr_mc_AKGC417L,train 34 | 107_2b5_Tc_mc_AKGC417L,train 35 | 107_3p2_Al_mc_AKGC417L,train 36 | 107_3p2_Ar_mc_AKGC417L,train 37 | 107_3p2_Ll_mc_AKGC417L,train 38 | 107_3p2_Lr_mc_AKGC417L,train 39 | 107_3p2_Pl_mc_AKGC417L,train 40 | 107_3p2_Pr_mc_AKGC417L,train 41 | 107_3p2_Tc_mc_AKGC417L,train 42 | 108_1b1_Al_sc_Meditron,train 43 | 109_1b1_Al_sc_Litt3200,test 44 | 109_1b1_Ar_sc_Litt3200,test 45 | 109_1b1_Ll_sc_Litt3200,test 46 | 109_1b1_Lr_sc_Litt3200,test 47 | 109_1b1_Pl_sc_Litt3200,test 48 | 109_1b1_Pr_sc_Litt3200,test 49 | 110_1b1_Pr_sc_Meditron,train 50 | 110_1p1_Al_sc_Meditron,train 51 | 110_1p1_Ll_sc_Meditron,train 52 | 110_1p1_Lr_sc_Meditron,train 53 | 110_1p1_Pr_sc_Meditron,train 54 | 111_1b2_Tc_sc_Meditron,train 55 | 111_1b3_Tc_sc_Meditron,train 56 | 112_1b1_Ar_sc_Meditron,train 57 | 112_1b1_Lr_sc_Meditron,train 58 | 112_1p1_Ll_sc_Litt3200,train 59 | 112_1p1_Pl_sc_Litt3200,train 60 | 112_1p1_Pr_sc_Litt3200,train 61 | 113_1b1_Al_sc_Litt3200,test 62 | 113_1b1_Ar_sc_Litt3200,test 63 | 113_1b1_Ll_sc_Litt3200,test 64 | 113_1b1_Lr_sc_Litt3200,test 65 | 113_1b1_Pl_sc_Litt3200,test 66 | 113_1b1_Pr_sc_Litt3200,test 67 | 114_1b4_Al_mc_AKGC417L,train 68 | 114_1b4_Ar_mc_AKGC417L,train 69 | 114_1b4_Lr_mc_AKGC417L,train 70 | 114_1b4_Pl_mc_AKGC417L,train 71 | 114_1b4_Pr_mc_AKGC417L,train 72 | 115_1b1_Ar_sc_Meditron,train 73 | 116_1b2_Pl_sc_Meditron,train 74 | 116_1b2_Tc_sc_Meditron,train 75 | 117_1b2_Tc_mc_LittC2SE,train 76 | 117_1b3_Tc_mc_LittC2SE,train 77 | 118_1b1_Al_sc_Litt3200,test 78 | 118_1b1_Ar_sc_Litt3200,test 79 | 118_1b1_Ll_sc_Litt3200,test 80 | 118_1b1_Lr_sc_Litt3200,test 81 | 118_1b1_Pl_sc_Litt3200,test 82 | 118_1b1_Pr_sc_Litt3200,test 83 | 119_1b1_Ar_sc_Meditron,test 84 | 120_1b1_Al_sc_Meditron,train 85 | 120_1b1_Ar_sc_Meditron,train 86 | 120_1b1_Lr_sc_Meditron,train 87 | 120_1b1_Pl_sc_Meditron,train 88 | 120_1b1_Pr_sc_Meditron,train 89 | 121_1b1_Tc_sc_Meditron,train 90 | 121_1p1_Tc_sc_Meditron,train 91 | 122_2b1_Al_mc_LittC2SE,train 92 | 122_2b1_Ar_mc_LittC2SE,train 93 | 122_2b1_Tc_mc_LittC2SE,train 94 | 122_2b2_Al_mc_LittC2SE,train 95 | 122_2b2_Ar_mc_LittC2SE,train 96 | 122_2b2_Tc_mc_LittC2SE,train 97 | 122_2b3_Al_mc_LittC2SE,train 98 | 122_2b3_Ar_mc_LittC2SE,train 99 | 122_2b3_Tc_mc_LittC2SE,train 100 | 123_1b1_Al_sc_Meditron,test 101 | 124_1b1_Al_sc_Litt3200,test 102 | 124_1b1_Ar_sc_Litt3200,test 103 | 124_1b1_Ll_sc_Litt3200,test 104 | 124_1b1_Lr_sc_Litt3200,test 105 | 124_1b1_Pl_sc_Litt3200,test 106 | 124_1b1_Pr_sc_Litt3200,test 107 | 125_1b1_Tc_sc_Meditron,train 108 | 126_1b1_Al_sc_Meditron,test 109 | 127_1b1_Ar_sc_Meditron,train 110 | 128_1b3_Tc_mc_LittC2SE,train 111 | 129_1b1_Ar_sc_Meditron,train 112 | 130_1p2_Al_mc_AKGC417L,train 113 | 130_1p2_Ar_mc_AKGC417L,train 114 | 130_1p2_Ll_mc_AKGC417L,train 115 | 130_1p2_Lr_mc_AKGC417L,train 116 | 130_1p2_Pl_mc_AKGC417L,train 117 | 130_1p2_Pr_mc_AKGC417L,train 118 | 130_1p2_Tc_mc_AKGC417L,train 119 | 130_1p3_Al_mc_AKGC417L,train 120 | 130_1p3_Ar_mc_AKGC417L,train 121 | 130_1p3_Ll_mc_AKGC417L,train 122 | 130_1p3_Lr_mc_AKGC417L,train 123 | 130_1p3_Pl_mc_AKGC417L,train 124 | 130_1p3_Pr_mc_AKGC417L,train 125 | 130_1p3_Tc_mc_AKGC417L,train 126 | 130_1p4_Al_mc_AKGC417L,train 127 | 130_1p4_Ar_mc_AKGC417L,train 128 | 130_1p4_Ll_mc_AKGC417L,train 129 | 130_1p4_Lr_mc_AKGC417L,train 130 | 130_1p4_Pl_mc_AKGC417L,train 131 | 130_1p4_Pr_mc_AKGC417L,train 132 | 130_1p4_Tc_mc_AKGC417L,train 133 | 130_2b2_Al_mc_AKGC417L,train 134 | 130_2b2_Ar_mc_AKGC417L,train 135 | 130_2b2_Ll_mc_AKGC417L,train 136 | 130_2b2_Lr_mc_AKGC417L,train 137 | 130_2b2_Pl_mc_AKGC417L,train 138 | 130_2b2_Pr_mc_AKGC417L,train 139 | 130_2b2_Tc_mc_AKGC417L,train 140 | 130_2b3_Al_mc_AKGC417L,train 141 | 130_2b3_Ar_mc_AKGC417L,train 142 | 130_2b3_Ll_mc_AKGC417L,train 143 | 130_2b3_Lr_mc_AKGC417L,train 144 | 130_2b3_Pl_mc_AKGC417L,train 145 | 130_2b3_Pr_mc_AKGC417L,train 146 | 130_2b3_Tc_mc_AKGC417L,train 147 | 130_2b4_Al_mc_AKGC417L,train 148 | 130_2b4_Ar_mc_AKGC417L,train 149 | 130_2b4_Ll_mc_AKGC417L,train 150 | 130_2b4_Lr_mc_AKGC417L,train 151 | 130_2b4_Pl_mc_AKGC417L,train 152 | 130_2p3_Pl_mc_AKGC417L,train 153 | 130_2p5_Al_mc_AKGC417L,train 154 | 130_2p5_Ar_mc_AKGC417L,train 155 | 130_2p5_Lr_mc_AKGC417L,train 156 | 130_2p5_Pl_mc_AKGC417L,train 157 | 130_2p5_Pr_mc_AKGC417L,train 158 | 130_2p5_Tc_mc_AKGC417L,train 159 | 130_3b3_Ll_mc_AKGC417L,train 160 | 130_3b4_Al_mc_AKGC417L,train 161 | 130_3b4_Ar_mc_AKGC417L,train 162 | 130_3b4_Lr_mc_AKGC417L,train 163 | 130_3b4_Pl_mc_AKGC417L,train 164 | 130_3b4_Pr_mc_AKGC417L,train 165 | 130_3p2_Al_mc_AKGC417L,train 166 | 130_3p2_Ar_mc_AKGC417L,train 167 | 130_3p2_Pl_mc_AKGC417L,train 168 | 130_3p2_Pr_mc_AKGC417L,train 169 | 130_3p2_Tc_mc_AKGC417L,train 170 | 130_3p3_Al_mc_AKGC417L,train 171 | 130_3p3_Pl_mc_AKGC417L,train 172 | 130_3p3_Pr_mc_AKGC417L,train 173 | 130_3p3_Tc_mc_AKGC417L,train 174 | 130_3p4_Al_mc_AKGC417L,train 175 | 130_3p4_Pl_mc_AKGC417L,train 176 | 130_3p4_Pr_mc_AKGC417L,train 177 | 130_3p4_Tc_mc_AKGC417L,train 178 | 131_1b1_Al_sc_Meditron,train 179 | 132_2b1_Lr_mc_LittC2SE,train 180 | 132_2b2_Lr_mc_LittC2SE,train 181 | 133_2p2_Al_mc_AKGC417L,test 182 | 133_2p2_Ar_mc_AKGC417L,test 183 | 133_2p2_Pl_mc_AKGC417L,test 184 | 133_2p2_Tc_mc_AKGC417L,test 185 | 133_2p3_Al_mc_AKGC417L,test 186 | 133_2p3_Ar_mc_AKGC417L,test 187 | 133_2p3_Pl_mc_AKGC417L,test 188 | 133_2p3_Pr_mc_AKGC417L,test 189 | 133_2p3_Tc_mc_AKGC417L,test 190 | 133_2p4_Al_mc_AKGC417L,test 191 | 133_2p4_Ar_mc_AKGC417L,test 192 | 133_2p4_Pl_mc_AKGC417L,test 193 | 133_2p4_Pr_mc_AKGC417L,test 194 | 133_2p4_Tc_mc_AKGC417L,test 195 | 133_3p2_Al_mc_AKGC417L,test 196 | 133_3p2_Ar_mc_AKGC417L,test 197 | 133_3p2_Pl_mc_AKGC417L,test 198 | 133_3p2_Pr_mc_AKGC417L,test 199 | 133_3p4_Tc_mc_AKGC417L,test 200 | 134_2b1_Al_mc_LittC2SE,train 201 | 134_2b1_Ar_mc_LittC2SE,train 202 | 134_2b2_Al_mc_LittC2SE,train 203 | 134_2b2_Ar_mc_LittC2SE,train 204 | 134_2b3_Ar_mc_LittC2SE,train 205 | 135_2b1_Al_mc_LittC2SE,train 206 | 135_2b1_Ar_mc_LittC2SE,train 207 | 135_2b1_Pl_mc_LittC2SE,train 208 | 135_2b1_Tc_mc_LittC2SE,train 209 | 135_2b2_Al_mc_LittC2SE,train 210 | 135_2b2_Ar_mc_LittC2SE,train 211 | 135_2b2_Pl_mc_LittC2SE,train 212 | 135_2b2_Tc_mc_LittC2SE,train 213 | 135_2b3_Al_mc_LittC2SE,train 214 | 135_2b3_Ar_mc_LittC2SE,train 215 | 135_2b3_Pl_mc_LittC2SE,train 216 | 135_2b3_Pr_mc_LittC2SE,train 217 | 135_2b3_Tc_mc_LittC2SE,train 218 | 136_1b1_Ar_sc_Meditron,test 219 | 137_1b1_Ar_sc_Meditron,train 220 | 137_1b1_Ll_sc_Meditron,train 221 | 138_1p2_Al_mc_AKGC417L,train 222 | 138_1p2_Ar_mc_AKGC417L,train 223 | 138_1p2_Ll_mc_AKGC417L,train 224 | 138_1p2_Lr_mc_AKGC417L,train 225 | 138_1p2_Pl_mc_AKGC417L,train 226 | 138_1p2_Pr_mc_AKGC417L,train 227 | 138_1p2_Tc_mc_AKGC417L,train 228 | 138_1p3_Al_mc_AKGC417L,train 229 | 138_1p3_Ar_mc_AKGC417L,train 230 | 138_1p3_Ll_mc_AKGC417L,train 231 | 138_1p3_Lr_mc_AKGC417L,train 232 | 138_1p3_Pl_mc_AKGC417L,train 233 | 138_1p3_Pr_mc_AKGC417L,train 234 | 138_1p3_Tc_mc_AKGC417L,train 235 | 138_1p4_Ar_mc_AKGC417L,train 236 | 138_1p4_Ll_mc_AKGC417L,train 237 | 138_1p4_Lr_mc_AKGC417L,train 238 | 138_1p4_Pl_mc_AKGC417L,train 239 | 138_1p4_Pr_mc_AKGC417L,train 240 | 138_1p4_Tc_mc_AKGC417L,train 241 | 138_2p2_Al_mc_AKGC417L,train 242 | 138_2p2_Ar_mc_AKGC417L,train 243 | 138_2p2_Ll_mc_AKGC417L,train 244 | 138_2p2_Lr_mc_AKGC417L,train 245 | 138_2p2_Pl_mc_AKGC417L,train 246 | 138_2p2_Pr_mc_AKGC417L,train 247 | 138_2p2_Tc_mc_AKGC417L,train 248 | 139_1b1_Al_sc_Litt3200,test 249 | 139_1b1_Ar_sc_Litt3200,test 250 | 139_1b1_Ll_sc_Litt3200,test 251 | 139_1b1_Lr_sc_Litt3200,test 252 | 139_1b1_Pl_sc_Litt3200,test 253 | 139_1b1_Pr_sc_Litt3200,test 254 | 140_2b2_Ll_mc_LittC2SE,train 255 | 140_2b2_Tc_mc_LittC2SE,train 256 | 140_2b3_Ll_mc_LittC2SE,train 257 | 140_2b3_Tc_mc_LittC2SE,train 258 | 141_1b1_Pr_mc_LittC2SE,train 259 | 141_1b2_Ar_mc_LittC2SE,train 260 | 141_1b2_Lr_mc_LittC2SE,train 261 | 141_1b2_Pr_mc_LittC2SE,train 262 | 141_1b2_Tc_mc_LittC2SE,train 263 | 141_1b3_Al_mc_LittC2SE,train 264 | 141_1b3_Ar_mc_LittC2SE,train 265 | 141_1b3_Pr_mc_LittC2SE,train 266 | 142_1b1_Pl_mc_LittC2SE,train 267 | 143_1b1_Al_sc_Meditron,test 268 | 144_1b1_Al_sc_Meditron,test 269 | 144_1b1_Tc_sc_Meditron,test 270 | 145_2b2_Al_mc_AKGC417L,test 271 | 145_2b2_Ar_mc_AKGC417L,test 272 | 145_2b2_Lr_mc_AKGC417L,test 273 | 145_2b2_Pr_mc_AKGC417L,test 274 | 145_3b2_Ar_mc_AKGC417L,test 275 | 145_3b2_Lr_mc_AKGC417L,test 276 | 145_3b4_Pl_mc_AKGC417L,test 277 | 146_2b2_Pl_mc_AKGC417L,test 278 | 146_2b4_Al_mc_AKGC417L,test 279 | 146_2b4_Ar_mc_AKGC417L,test 280 | 146_2b4_Ll_mc_AKGC417L,test 281 | 146_2b4_Lr_mc_AKGC417L,test 282 | 146_2b4_Pr_mc_AKGC417L,test 283 | 146_8p3_Al_mc_AKGC417L,test 284 | 146_8p3_Ar_mc_AKGC417L,test 285 | 146_8p3_Lr_mc_AKGC417L,test 286 | 146_8p3_Pl_mc_AKGC417L,test 287 | 146_8p3_Pr_mc_AKGC417L,test 288 | 147_1b2_Tc_mc_AKGC417L,test 289 | 147_1b3_Tc_mc_AKGC417L,test 290 | 147_1b4_Tc_mc_AKGC417L,test 291 | 147_2b2_Al_mc_AKGC417L,test 292 | 147_2b2_Ar_mc_AKGC417L,test 293 | 147_2b2_Pl_mc_AKGC417L,test 294 | 147_2b3_Al_mc_AKGC417L,test 295 | 147_2b3_Ar_mc_AKGC417L,test 296 | 147_2b3_Ll_mc_AKGC417L,test 297 | 147_2b3_Lr_mc_AKGC417L,test 298 | 147_2b3_Pl_mc_AKGC417L,test 299 | 147_2b4_Al_mc_AKGC417L,test 300 | 147_2b4_Ar_mc_AKGC417L,test 301 | 147_2b4_Ll_mc_AKGC417L,test 302 | 147_2b4_Lr_mc_AKGC417L,test 303 | 147_2b4_Pl_mc_AKGC417L,test 304 | 148_1b1_Al_sc_Meditron,train 305 | 149_1b1_Al_sc_Meditron,test 306 | 149_1b1_Lr_sc_Meditron,test 307 | 149_1b1_Pl_sc_Meditron,test 308 | 150_1b2_Al_sc_Meditron,test 309 | 151_2p2_Al_mc_AKGC417L,test 310 | 151_2p2_Ar_mc_AKGC417L,test 311 | 151_2p2_Ll_mc_AKGC417L,test 312 | 151_2p2_Lr_mc_AKGC417L,test 313 | 151_2p2_Pl_mc_AKGC417L,test 314 | 151_2p2_Pr_mc_AKGC417L,test 315 | 151_2p2_Tc_mc_AKGC417L,test 316 | 151_2p3_Al_mc_AKGC417L,test 317 | 151_2p3_Ar_mc_AKGC417L,test 318 | 151_2p3_Ll_mc_AKGC417L,test 319 | 151_2p3_Lr_mc_AKGC417L,test 320 | 151_2p3_Pl_mc_AKGC417L,test 321 | 151_2p3_Pr_mc_AKGC417L,test 322 | 151_2p3_Tc_mc_AKGC417L,test 323 | 151_2p4_Al_mc_AKGC417L,test 324 | 151_2p4_Ar_mc_AKGC417L,test 325 | 151_2p4_Ll_mc_AKGC417L,test 326 | 151_2p4_Lr_mc_AKGC417L,test 327 | 151_2p4_Pl_mc_AKGC417L,test 328 | 151_2p4_Pr_mc_AKGC417L,test 329 | 151_2p4_Tc_mc_AKGC417L,test 330 | 151_3p2_Al_mc_AKGC417L,test 331 | 151_3p2_Ar_mc_AKGC417L,test 332 | 151_3p2_Lr_mc_AKGC417L,test 333 | 151_3p2_Pl_mc_AKGC417L,test 334 | 151_3p2_Pr_mc_AKGC417L,test 335 | 151_3p2_Tc_mc_AKGC417L,test 336 | 151_3p3_Ll_mc_AKGC417L,test 337 | 152_1b1_Al_sc_Meditron,train 338 | 153_1b1_Al_sc_Meditron,train 339 | 154_1b3_Al_mc_AKGC417L,train 340 | 154_1b3_Ar_mc_AKGC417L,train 341 | 154_1b3_Ll_mc_AKGC417L,train 342 | 154_1b3_Lr_mc_AKGC417L,train 343 | 154_1b3_Pl_mc_AKGC417L,train 344 | 154_1b3_Pr_mc_AKGC417L,train 345 | 154_1b3_Tc_mc_AKGC417L,train 346 | 154_2b4_Al_mc_AKGC417L,train 347 | 154_2b4_Ar_mc_AKGC417L,train 348 | 154_2b4_Ll_mc_AKGC417L,train 349 | 154_2b4_Lr_mc_AKGC417L,train 350 | 154_2b4_Pl_mc_AKGC417L,train 351 | 154_2b4_Pr_mc_AKGC417L,train 352 | 154_2b4_Tc_mc_AKGC417L,train 353 | 154_3b3_Al_mc_AKGC417L,train 354 | 154_3b3_Ar_mc_AKGC417L,train 355 | 154_3b3_Ll_mc_AKGC417L,train 356 | 154_4b4_Al_mc_AKGC417L,train 357 | 154_4b4_Ar_mc_AKGC417L,train 358 | 154_4b4_Ll_mc_AKGC417L,train 359 | 154_4b4_Lr_mc_AKGC417L,train 360 | 154_4b4_Pl_mc_AKGC417L,train 361 | 154_4b4_Pr_mc_AKGC417L,train 362 | 155_2b1_Al_mc_LittC2SE,train 363 | 156_2b3_Al_mc_AKGC417L,test 364 | 156_2b3_Ar_mc_AKGC417L,train 365 | 156_2b3_Ll_mc_AKGC417L,train 366 | 156_2b3_Lr_mc_AKGC417L,test 367 | 156_2b3_Pl_mc_AKGC417L,test 368 | 156_2b3_Pr_mc_AKGC417L,train 369 | 156_5b3_Al_mc_AKGC417L,train 370 | 156_5b3_Ar_mc_AKGC417L,test 371 | 156_5b3_Ll_mc_AKGC417L,test 372 | 156_5b3_Lr_mc_AKGC417L,train 373 | 156_5b3_Pl_mc_AKGC417L,test 374 | 156_5b3_Pr_mc_AKGC417L,train 375 | 156_8b3_Al_mc_AKGC417L,test 376 | 156_8b3_Ar_mc_AKGC417L,train 377 | 156_8b3_Ll_mc_AKGC417L,train 378 | 156_8b3_Lr_mc_AKGC417L,test 379 | 156_8b3_Pl_mc_AKGC417L,train 380 | 157_1b1_Al_sc_Meditron,train 381 | 157_1b1_Ar_sc_Meditron,train 382 | 157_1b1_Lr_sc_Meditron,train 383 | 157_1b1_Pl_sc_Meditron,train 384 | 157_1b1_Pr_sc_Meditron,train 385 | 158_1b3_Ar_mc_LittC2SE,train 386 | 158_1p2_Al_mc_AKGC417L,train 387 | 158_1p2_Ar_mc_AKGC417L,train 388 | 158_1p2_Ll_mc_AKGC417L,train 389 | 158_1p2_Lr_mc_AKGC417L,train 390 | 158_1p2_Pl_mc_AKGC417L,train 391 | 158_1p2_Pr_mc_AKGC417L,train 392 | 158_1p2_Tc_mc_AKGC417L,train 393 | 158_1p3_Al_mc_AKGC417L,train 394 | 158_1p3_Ar_mc_AKGC417L,train 395 | 158_1p3_Ll_mc_AKGC417L,train 396 | 158_1p3_Lr_mc_AKGC417L,train 397 | 158_1p3_Pl_mc_AKGC417L,train 398 | 158_1p3_Pr_mc_AKGC417L,train 399 | 158_1p3_Tc_mc_AKGC417L,train 400 | 158_1p4_Al_mc_AKGC417L,train 401 | 158_1p4_Ar_mc_AKGC417L,train 402 | 158_1p4_Lr_mc_AKGC417L,train 403 | 158_1p4_Pl_mc_AKGC417L,train 404 | 158_1p4_Pr_mc_AKGC417L,train 405 | 158_1p4_Tc_mc_AKGC417L,train 406 | 158_2p2_Ar_mc_AKGC417L,train 407 | 158_2p3_Lr_mc_AKGC417L,train 408 | 158_2p3_Tc_mc_AKGC417L,train 409 | 159_1b1_Al_sc_Meditron,train 410 | 159_1b1_Ar_sc_Meditron,train 411 | 159_1b1_Ll_sc_Meditron,train 412 | 159_1b1_Pr_sc_Meditron,train 413 | 160_1b2_Al_mc_AKGC417L,test 414 | 160_1b2_Ar_mc_AKGC417L,test 415 | 160_1b2_Lr_mc_AKGC417L,test 416 | 160_1b2_Pl_mc_AKGC417L,test 417 | 160_1b2_Pr_mc_AKGC417L,test 418 | 160_1b2_Tc_mc_AKGC417L,test 419 | 160_1b3_Al_mc_AKGC417L,test 420 | 160_1b3_Ar_mc_AKGC417L,test 421 | 160_1b3_Lr_mc_AKGC417L,test 422 | 160_1b3_Pl_mc_AKGC417L,test 423 | 160_1b3_Pr_mc_AKGC417L,test 424 | 160_1b3_Tc_mc_AKGC417L,test 425 | 160_1b4_Al_mc_AKGC417L,test 426 | 160_1b4_Ar_mc_AKGC417L,test 427 | 160_1b4_Lr_mc_AKGC417L,test 428 | 160_1b4_Pl_mc_AKGC417L,test 429 | 160_1b4_Pr_mc_AKGC417L,test 430 | 160_1b4_Tc_mc_AKGC417L,test 431 | 160_2b3_Lr_mc_AKGC417L,test 432 | 160_2b4_Ar_mc_AKGC417L,test 433 | 160_2b4_Pl_mc_AKGC417L,test 434 | 160_2b4_Pr_mc_AKGC417L,test 435 | 160_2b4_Tc_mc_AKGC417L,test 436 | 161_1b1_Al_sc_Meditron,train 437 | 161_1b1_Pl_sc_Meditron,train 438 | 162_1b2_Al_mc_AKGC417L,train 439 | 162_1b2_Ar_mc_AKGC417L,train 440 | 162_1b2_Ll_mc_AKGC417L,train 441 | 162_1b2_Lr_mc_AKGC417L,train 442 | 162_1b2_Pl_mc_AKGC417L,train 443 | 162_1b2_Pr_mc_AKGC417L,train 444 | 162_1b2_Tc_mc_AKGC417L,train 445 | 162_2b2_Al_mc_AKGC417L,train 446 | 162_2b2_Ar_mc_AKGC417L,train 447 | 162_2b2_Pl_mc_AKGC417L,train 448 | 162_2b2_Pr_mc_AKGC417L,train 449 | 162_2b2_Tc_mc_AKGC417L,train 450 | 162_2b3_Al_mc_AKGC417L,train 451 | 162_2b3_Ar_mc_AKGC417L,train 452 | 162_2b3_Lr_mc_AKGC417L,train 453 | 162_2b3_Pl_mc_AKGC417L,train 454 | 162_2b3_Pr_mc_AKGC417L,train 455 | 162_2b3_Tc_mc_AKGC417L,train 456 | 162_2b4_Al_mc_AKGC417L,train 457 | 162_2b4_Ar_mc_AKGC417L,train 458 | 162_2b4_Lr_mc_AKGC417L,train 459 | 162_2b4_Pl_mc_AKGC417L,train 460 | 162_2b4_Pr_mc_AKGC417L,train 461 | 162_2b4_Tc_mc_AKGC417L,train 462 | 163_2b2_Al_mc_AKGC417L,train 463 | 163_2b2_Ar_mc_AKGC417L,train 464 | 163_2b2_Ll_mc_AKGC417L,train 465 | 163_2b2_Lr_mc_AKGC417L,train 466 | 163_2b2_Pl_mc_AKGC417L,train 467 | 163_2b2_Pr_mc_AKGC417L,train 468 | 163_2b2_Tc_mc_AKGC417L,train 469 | 163_8b3_Al_mc_AKGC417L,train 470 | 163_8b3_Ar_mc_AKGC417L,train 471 | 163_8b3_Ll_mc_AKGC417L,train 472 | 163_8b3_Lr_mc_AKGC417L,train 473 | 163_8b3_Pl_mc_AKGC417L,train 474 | 163_8b3_Pr_mc_AKGC417L,train 475 | 164_1b1_Ll_sc_Meditron,train 476 | 165_1b1_Ar_sc_Meditron,test 477 | 165_1b1_Pl_sc_Meditron,test 478 | 165_1b1_Pr_sc_Meditron,test 479 | 166_1p1_Al_sc_Meditron,train 480 | 166_1p1_Ar_sc_Meditron,train 481 | 166_1p1_Ll_sc_Meditron,train 482 | 166_1p1_Pl_sc_Meditron,train 483 | 166_1p1_Pr_sc_Meditron,train 484 | 167_1b1_Al_sc_Meditron,train 485 | 167_1b1_Pr_sc_Meditron,train 486 | 168_1b1_Al_sc_Meditron,train 487 | 169_1b1_Lr_sc_Meditron,test 488 | 169_1b2_Ll_sc_Meditron,test 489 | 170_1b2_Al_mc_AKGC417L,test 490 | 170_1b2_Ar_mc_AKGC417L,test 491 | 170_1b2_Lr_mc_AKGC417L,test 492 | 170_1b2_Pl_mc_AKGC417L,test 493 | 170_1b2_Pr_mc_AKGC417L,test 494 | 170_1b2_Tc_mc_AKGC417L,test 495 | 170_1b3_Al_mc_AKGC417L,test 496 | 170_1b3_Ar_mc_AKGC417L,test 497 | 170_1b3_Ll_mc_AKGC417L,test 498 | 170_1b3_Lr_mc_AKGC417L,test 499 | 170_1b3_Pl_mc_AKGC417L,test 500 | 170_1b3_Pr_mc_AKGC417L,test 501 | 170_1b3_Tc_mc_AKGC417L,test 502 | 170_1b4_Al_mc_AKGC417L,test 503 | 170_1b4_Ar_mc_AKGC417L,test 504 | 170_1b4_Lr_mc_AKGC417L,test 505 | 170_1b4_Pl_mc_AKGC417L,test 506 | 170_1b4_Pr_mc_AKGC417L,test 507 | 170_1b4_Tc_mc_AKGC417L,test 508 | 170_2b2_Al_mc_AKGC417L,test 509 | 170_2b2_Ar_mc_AKGC417L,test 510 | 170_2b2_Lr_mc_AKGC417L,test 511 | 170_2b2_Pl_mc_AKGC417L,test 512 | 170_2b2_Pr_mc_AKGC417L,test 513 | 170_2b2_Tc_mc_AKGC417L,test 514 | 171_1b1_Al_sc_Meditron,test 515 | 172_1b3_Al_mc_AKGC417L,train 516 | 172_1b3_Ar_mc_AKGC417L,train 517 | 172_1b3_Ll_mc_AKGC417L,train 518 | 172_1b3_Lr_mc_AKGC417L,train 519 | 172_1b3_Pl_mc_AKGC417L,train 520 | 172_1b3_Pr_mc_AKGC417L,train 521 | 172_1b3_Tc_mc_AKGC417L,train 522 | 172_1b4_Al_mc_AKGC417L,train 523 | 172_1b4_Ar_mc_AKGC417L,train 524 | 172_1b4_Ll_mc_AKGC417L,train 525 | 172_1b4_Lr_mc_AKGC417L,train 526 | 172_1b4_Pl_mc_AKGC417L,train 527 | 172_1b4_Pr_mc_AKGC417L,train 528 | 172_1b4_Tc_mc_AKGC417L,train 529 | 172_1b5_Al_mc_AKGC417L,train 530 | 172_1b5_Ar_mc_AKGC417L,train 531 | 172_1b5_Ll_mc_AKGC417L,train 532 | 172_1b5_Lr_mc_AKGC417L,train 533 | 172_1b5_Pl_mc_AKGC417L,train 534 | 172_1b5_Pr_mc_AKGC417L,train 535 | 172_1b5_Tc_mc_AKGC417L,train 536 | 172_2b5_Al_mc_AKGC417L,train 537 | 172_2b5_Ar_mc_AKGC417L,train 538 | 172_2b5_Lr_mc_AKGC417L,train 539 | 172_2b5_Pl_mc_AKGC417L,train 540 | 172_2b5_Pr_mc_AKGC417L,train 541 | 172_2b5_Tc_mc_AKGC417L,train 542 | 173_1b1_Al_sc_Meditron,test 543 | 174_1p2_Ar_mc_AKGC417L,test 544 | 174_1p2_Ll_mc_AKGC417L,test 545 | 174_1p2_Lr_mc_AKGC417L,test 546 | 174_1p2_Pl_mc_AKGC417L,test 547 | 174_1p2_Pr_mc_AKGC417L,test 548 | 174_1p2_Tc_mc_AKGC417L,test 549 | 174_1p3_Ar_mc_AKGC417L,test 550 | 174_1p3_Ll_mc_AKGC417L,test 551 | 174_1p3_Lr_mc_AKGC417L,test 552 | 174_1p3_Pl_mc_AKGC417L,test 553 | 174_1p3_Pr_mc_AKGC417L,test 554 | 174_1p3_Tc_mc_AKGC417L,test 555 | 174_1p4_Ar_mc_AKGC417L,test 556 | 174_1p4_Ll_mc_AKGC417L,test 557 | 174_1p4_Lr_mc_AKGC417L,test 558 | 174_1p4_Pl_mc_AKGC417L,test 559 | 174_1p4_Pr_mc_AKGC417L,test 560 | 174_1p4_Tc_mc_AKGC417L,test 561 | 174_2p3_Al_mc_AKGC417L,test 562 | 174_2p3_Ar_mc_AKGC417L,test 563 | 174_2p3_Pl_mc_AKGC417L,test 564 | 174_2p3_Pr_mc_AKGC417L,test 565 | 174_2p3_Tc_mc_AKGC417L,test 566 | 175_1b1_Al_sc_Litt3200,test 567 | 175_1b1_Ar_sc_Litt3200,test 568 | 175_1b1_Ll_sc_Litt3200,test 569 | 175_1b1_Lr_sc_Litt3200,test 570 | 175_1b1_Pl_sc_Litt3200,test 571 | 175_1b1_Pr_sc_Litt3200,test 572 | 176_1b3_Al_mc_AKGC417L,test 573 | 176_1b3_Ar_mc_AKGC417L,test 574 | 176_1b3_Ll_mc_AKGC417L,test 575 | 176_1b3_Lr_mc_AKGC417L,test 576 | 176_1b3_Pl_mc_AKGC417L,test 577 | 176_1b3_Pr_mc_AKGC417L,test 578 | 176_1b3_Tc_mc_AKGC417L,test 579 | 176_1b4_Al_mc_AKGC417L,test 580 | 176_1b4_Ar_mc_AKGC417L,test 581 | 176_1b4_Ll_mc_AKGC417L,test 582 | 176_1b4_Lr_mc_AKGC417L,test 583 | 176_1b4_Pl_mc_AKGC417L,test 584 | 176_1b4_Pr_mc_AKGC417L,test 585 | 176_1b4_Tc_mc_AKGC417L,test 586 | 176_2b3_Al_mc_AKGC417L,test 587 | 176_2b3_Ar_mc_AKGC417L,test 588 | 176_2b3_Ll_mc_AKGC417L,test 589 | 176_2b3_Lr_mc_AKGC417L,test 590 | 176_2b3_Pl_mc_AKGC417L,test 591 | 176_2b3_Pr_mc_AKGC417L,test 592 | 176_2b3_Tc_mc_AKGC417L,test 593 | 177_1b2_Al_mc_AKGC417L,test 594 | 177_1b2_Ar_mc_AKGC417L,test 595 | 177_1b2_Lr_mc_AKGC417L,test 596 | 177_1b2_Pl_mc_AKGC417L,test 597 | 177_1b2_Pr_mc_AKGC417L,test 598 | 177_1b2_Tc_mc_AKGC417L,test 599 | 177_1b4_Al_mc_AKGC417L,test 600 | 177_1b4_Ar_mc_AKGC417L,test 601 | 177_1b4_Lr_mc_AKGC417L,test 602 | 177_1b4_Pl_mc_AKGC417L,test 603 | 177_1b4_Pr_mc_AKGC417L,test 604 | 177_1b4_Tc_mc_AKGC417L,test 605 | 177_2b4_Al_mc_AKGC417L,test 606 | 177_2b4_Lr_mc_AKGC417L,test 607 | 177_2b4_Pl_mc_AKGC417L,test 608 | 177_2b4_Pr_mc_AKGC417L,test 609 | 177_2b4_Tc_mc_AKGC417L,test 610 | 178_1b2_Al_mc_AKGC417L,test 611 | 178_1b2_Ar_mc_AKGC417L,test 612 | 178_1b2_Lr_mc_AKGC417L,test 613 | 178_1b2_Pl_mc_AKGC417L,test 614 | 178_1b2_Pr_mc_AKGC417L,test 615 | 178_1b2_Tc_mc_AKGC417L,test 616 | 178_1b3_Al_mc_AKGC417L,test 617 | 178_1b3_Ar_mc_AKGC417L,test 618 | 178_1b3_Lr_mc_AKGC417L,test 619 | 178_1b3_Pl_mc_AKGC417L,test 620 | 178_1b3_Pr_mc_AKGC417L,test 621 | 178_1b3_Tc_mc_AKGC417L,test 622 | 178_1b6_Al_mc_AKGC417L,test 623 | 178_1b6_Ar_mc_AKGC417L,test 624 | 178_1b6_Ll_mc_AKGC417L,test 625 | 178_1b6_Lr_mc_AKGC417L,test 626 | 178_1b6_Pl_mc_AKGC417L,test 627 | 178_1b6_Pr_mc_AKGC417L,test 628 | 178_1b6_Tc_mc_AKGC417L,test 629 | 178_2b2_Al_mc_AKGC417L,test 630 | 178_2b2_Ar_mc_AKGC417L,test 631 | 178_2b2_Lr_mc_AKGC417L,test 632 | 178_2b2_Pr_mc_AKGC417L,test 633 | 178_2b2_Tc_mc_AKGC417L,test 634 | 179_1b1_Al_sc_Meditron,train 635 | 179_1b1_Tc_sc_Meditron,train 636 | 180_1b4_Al_mc_AKGC417L,train 637 | 180_1b4_Ar_mc_AKGC417L,train 638 | 180_1b4_Lr_mc_AKGC417L,train 639 | 180_1b4_Pl_mc_AKGC417L,train 640 | 180_1b4_Pr_mc_AKGC417L,train 641 | 181_1b1_Ar_mc_LittC2SE,train 642 | 181_1b1_Tc_mc_LittC2SE,train 643 | 181_1b2_Ar_mc_LittC2SE,train 644 | 181_1b3_Tc_mc_LittC2SE,train 645 | 182_1b1_Tc_sc_Meditron,test 646 | 183_1b1_Pl_sc_Meditron,train 647 | 183_1b1_Tc_sc_Meditron,train 648 | 184_1b1_Ar_sc_Meditron,train 649 | 185_1b1_Al_sc_Litt3200,test 650 | 185_1b1_Ar_sc_Litt3200,test 651 | 185_1b1_Ll_sc_Litt3200,test 652 | 185_1b1_Lr_sc_Litt3200,test 653 | 185_1b1_Pl_sc_Litt3200,test 654 | 185_1b1_Pr_sc_Litt3200,test 655 | 186_2b2_Al_mc_AKGC417L,train 656 | 186_2b2_Ar_mc_AKGC417L,train 657 | 186_2b2_Lr_mc_AKGC417L,train 658 | 186_2b2_Pl_mc_AKGC417L,train 659 | 186_2b2_Pr_mc_AKGC417L,train 660 | 186_2b2_Tc_mc_AKGC417L,train 661 | 186_2b3_Al_mc_AKGC417L,train 662 | 186_2b3_Ar_mc_AKGC417L,train 663 | 186_2b3_Lr_mc_AKGC417L,train 664 | 186_2b3_Pl_mc_AKGC417L,train 665 | 186_2b3_Pr_mc_AKGC417L,train 666 | 186_2b3_Tc_mc_AKGC417L,train 667 | 186_2b4_Al_mc_AKGC417L,train 668 | 186_2b4_Ar_mc_AKGC417L,train 669 | 186_2b4_Lr_mc_AKGC417L,train 670 | 186_2b4_Pl_mc_AKGC417L,train 671 | 186_2b4_Pr_mc_AKGC417L,train 672 | 186_2b4_Tc_mc_AKGC417L,train 673 | 186_3b3_Al_mc_AKGC417L,train 674 | 186_3b3_Ar_mc_AKGC417L,train 675 | 186_3b3_Lr_mc_AKGC417L,train 676 | 186_3b3_Pl_mc_AKGC417L,train 677 | 186_3b3_Pr_mc_AKGC417L,train 678 | 186_3b3_Tc_mc_AKGC417L,train 679 | 187_1b1_Ll_sc_Meditron,test 680 | 188_1b1_Al_sc_Meditron,train 681 | 188_1b1_Ar_sc_Meditron,train 682 | 188_1b1_Pl_sc_Meditron,train 683 | 188_1b1_Tc_sc_Meditron,train 684 | 189_1b2_Lr_mc_LittC2SE,train 685 | 190_1b1_Tc_sc_Meditron,train 686 | 191_2b1_Pl_mc_LittC2SE,train 687 | 191_2b1_Pr_mc_LittC2SE,train 688 | 191_2b2_Tc_mc_LittC2SE,train 689 | 192_2b1_Al_mc_LittC2SE,train 690 | 192_2b1_Ar_mc_LittC2SE,train 691 | 192_2b2_Al_mc_LittC2SE,train 692 | 192_2b2_Ar_mc_LittC2SE,train 693 | 192_2b3_Al_mc_LittC2SE,train 694 | 192_2b3_Ar_mc_LittC2SE,train 695 | 193_1b2_Al_mc_AKGC417L,train 696 | 193_1b2_Ar_mc_AKGC417L,train 697 | 193_1b2_Ll_mc_AKGC417L,train 698 | 193_1b2_Pl_mc_AKGC417L,train 699 | 193_1b2_Pr_mc_AKGC417L,train 700 | 193_1b2_Tc_mc_AKGC417L,train 701 | 193_1b4_Lr_mc_AKGC417L,train 702 | 193_7b3_Al_mc_AKGC417L,train 703 | 193_7b3_Ar_mc_AKGC417L,train 704 | 193_7b3_Ll_mc_AKGC417L,train 705 | 193_7b3_Lr_mc_AKGC417L,train 706 | 193_7b3_Pl_mc_AKGC417L,train 707 | 193_7b3_Pr_mc_AKGC417L,train 708 | 193_7b3_Tc_mc_AKGC417L,train 709 | 194_1b1_Lr_sc_Meditron,test 710 | 194_1b1_Pr_sc_Meditron,test 711 | 195_1b1_Al_sc_Litt3200,test 712 | 195_1b1_Ar_sc_Litt3200,test 713 | 195_1b1_Ll_sc_Litt3200,test 714 | 195_1b1_Lr_sc_Litt3200,test 715 | 195_1b1_Pl_sc_Litt3200,test 716 | 195_1b1_Pr_sc_Litt3200,test 717 | 196_1b1_Pr_sc_Meditron,train 718 | 197_1b1_Al_sc_Meditron,train 719 | 197_1b1_Tc_sc_Meditron,train 720 | 198_1b5_Al_mc_AKGC417L,test 721 | 198_1b5_Ar_mc_AKGC417L,test 722 | 198_1b5_Ll_mc_AKGC417L,test 723 | 198_1b5_Lr_mc_AKGC417L,test 724 | 198_1b5_Pl_mc_AKGC417L,test 725 | 198_1b5_Pr_mc_AKGC417L,test 726 | 198_1b5_Tc_mc_AKGC417L,test 727 | 198_6p1_Al_mc_AKGC417L,test 728 | 198_6p1_Ar_mc_AKGC417L,test 729 | 198_6p1_Ll_mc_AKGC417L,test 730 | 198_6p1_Lr_mc_AKGC417L,test 731 | 198_6p1_Pl_mc_AKGC417L,test 732 | 198_6p1_Pr_mc_AKGC417L,test 733 | 198_6p1_Tc_mc_AKGC417L,test 734 | 199_2b1_Ll_mc_LittC2SE,train 735 | 199_2b3_Ll_mc_LittC2SE,train 736 | 200_2p2_Al_mc_AKGC417L,train 737 | 200_2p2_Ar_mc_AKGC417L,train 738 | 200_2p2_Lr_mc_AKGC417L,train 739 | 200_2p2_Pl_mc_AKGC417L,train 740 | 200_2p2_Pr_mc_AKGC417L,train 741 | 200_2p2_Tc_mc_AKGC417L,train 742 | 200_2p3_Al_mc_AKGC417L,train 743 | 200_2p3_Ar_mc_AKGC417L,train 744 | 200_2p3_Lr_mc_AKGC417L,train 745 | 200_2p3_Pl_mc_AKGC417L,train 746 | 200_2p3_Pr_mc_AKGC417L,train 747 | 200_2p3_Tc_mc_AKGC417L,train 748 | 200_2p4_Al_mc_AKGC417L,train 749 | 200_2p4_Ar_mc_AKGC417L,train 750 | 200_2p4_Lr_mc_AKGC417L,train 751 | 200_2p4_Pl_mc_AKGC417L,train 752 | 200_2p4_Pr_mc_AKGC417L,train 753 | 200_2p4_Tc_mc_AKGC417L,train 754 | 200_3p4_Al_mc_AKGC417L,train 755 | 200_3p4_Ar_mc_AKGC417L,train 756 | 200_3p4_Pl_mc_AKGC417L,train 757 | 200_3p4_Pr_mc_AKGC417L,train 758 | 200_3p4_Tc_mc_AKGC417L,train 759 | 201_1b1_Al_sc_Meditron,train 760 | 201_1b1_Ar_sc_Meditron,train 761 | 201_1b2_Al_sc_Meditron,train 762 | 201_1b2_Ar_sc_Meditron,train 763 | 201_1b3_Al_sc_Meditron,train 764 | 201_1b3_Ar_sc_Meditron,train 765 | 202_1b1_Ar_sc_Meditron,test 766 | 203_1p2_Al_mc_AKGC417L,train 767 | 203_1p2_Ar_mc_AKGC417L,train 768 | 203_1p2_Lr_mc_AKGC417L,train 769 | 203_1p2_Pl_mc_AKGC417L,train 770 | 203_1p2_Pr_mc_AKGC417L,train 771 | 203_1p2_Tc_mc_AKGC417L,train 772 | 203_1p3_Al_mc_AKGC417L,train 773 | 203_1p3_Ar_mc_AKGC417L,train 774 | 203_1p3_Pl_mc_AKGC417L,train 775 | 203_1p3_Pr_mc_AKGC417L,train 776 | 203_1p3_Tc_mc_AKGC417L,train 777 | 203_1p4_Al_mc_AKGC417L,train 778 | 203_1p4_Ar_mc_AKGC417L,train 779 | 203_1p4_Pl_mc_AKGC417L,train 780 | 203_1p4_Pr_mc_AKGC417L,train 781 | 203_1p4_Tc_mc_AKGC417L,train 782 | 203_2p3_Al_mc_AKGC417L,train 783 | 203_2p3_Ar_mc_AKGC417L,train 784 | 203_2p3_Pl_mc_AKGC417L,train 785 | 203_2p3_Pr_mc_AKGC417L,train 786 | 203_2p3_Tc_mc_AKGC417L,train 787 | 204_2b5_Al_mc_AKGC417L,train 788 | 204_2b5_Ar_mc_AKGC417L,train 789 | 204_2b5_Ll_mc_AKGC417L,train 790 | 204_7p5_Al_mc_AKGC417L,train 791 | 204_7p5_Ar_mc_AKGC417L,train 792 | 204_7p5_Ll_mc_AKGC417L,train 793 | 204_7p5_Lr_mc_AKGC417L,train 794 | 204_7p5_Pr_mc_AKGC417L,train 795 | 204_7p5_Tc_mc_AKGC417L,train 796 | 205_1b3_Al_mc_AKGC417L,test 797 | 205_1b3_Ar_mc_AKGC417L,test 798 | 205_1b3_Ll_mc_AKGC417L,test 799 | 205_1b3_Lr_mc_AKGC417L,test 800 | 205_1b3_Pl_mc_AKGC417L,test 801 | 205_1b3_Pr_mc_AKGC417L,test 802 | 205_2b2_Pr_mc_AKGC417L,test 803 | 205_2b3_Al_mc_AKGC417L,test 804 | 205_2b3_Ar_mc_AKGC417L,test 805 | 205_2b3_Ll_mc_AKGC417L,test 806 | 205_2b4_Pl_mc_AKGC417L,test 807 | 205_3b4_Al_mc_AKGC417L,test 808 | 205_3b4_Ar_mc_AKGC417L,test 809 | 205_3b4_Pl_mc_AKGC417L,test 810 | 205_3b4_Pr_mc_AKGC417L,test 811 | 205_4b2_Al_mc_AKGC417L,test 812 | 205_4b2_Ar_mc_AKGC417L,test 813 | 205_4b2_Lr_mc_AKGC417L,test 814 | 205_4b2_Pl_mc_AKGC417L,test 815 | 205_4b2_Pr_mc_AKGC417L,test 816 | 206_1b1_Ar_sc_Meditron,train 817 | 206_1b1_Lr_sc_Meditron,train 818 | 206_1b1_Pl_sc_Meditron,train 819 | 207_2b2_Al_mc_AKGC417L,test 820 | 207_2b2_Ar_mc_AKGC417L,test 821 | 207_2b2_Pl_mc_AKGC417L,test 822 | 207_2b2_Pr_mc_AKGC417L,test 823 | 207_2b2_Tc_mc_AKGC417L,test 824 | 207_2b3_Al_mc_AKGC417L,test 825 | 207_2b3_Ar_mc_AKGC417L,test 826 | 207_2b3_Pl_mc_AKGC417L,test 827 | 207_2b3_Pr_mc_AKGC417L,test 828 | 207_2b3_Tc_mc_AKGC417L,test 829 | 207_2b4_Al_mc_AKGC417L,test 830 | 207_2b4_Ar_mc_AKGC417L,test 831 | 207_2b4_Pl_mc_AKGC417L,test 832 | 207_2b4_Pr_mc_AKGC417L,test 833 | 207_2b4_Tc_mc_AKGC417L,test 834 | 207_3b2_Al_mc_AKGC417L,test 835 | 207_3b2_Ar_mc_AKGC417L,test 836 | 207_3b2_Lr_mc_AKGC417L,test 837 | 207_3b2_Pl_mc_AKGC417L,test 838 | 207_3b2_Pr_mc_AKGC417L,test 839 | 207_3b2_Tc_mc_AKGC417L,test 840 | 208_1b1_Ll_sc_Meditron,train 841 | 209_1b1_Tc_sc_Meditron,train 842 | 210_1b1_Al_sc_Meditron,train 843 | 210_1b1_Ar_sc_Meditron,train 844 | 211_1p2_Ar_mc_AKGC417L,test 845 | 211_1p2_Pl_mc_AKGC417L,test 846 | 211_1p2_Pr_mc_AKGC417L,test 847 | 211_1p3_Ar_mc_AKGC417L,test 848 | 211_1p5_Ar_mc_AKGC417L,test 849 | 211_2p2_Tc_mc_AKGC417L,test 850 | 211_2p3_Tc_mc_AKGC417L,test 851 | 211_2p4_Tc_mc_AKGC417L,test 852 | 212_2b2_Tc_mc_LittC2SE,train 853 | 213_1p2_Al_mc_AKGC417L,train 854 | 213_1p2_Ar_mc_AKGC417L,train 855 | 213_1p2_Lr_mc_AKGC417L,train 856 | 213_1p2_Pl_mc_AKGC417L,train 857 | 213_1p2_Pr_mc_AKGC417L,train 858 | 213_1p2_Tc_mc_AKGC417L,train 859 | 213_1p3_Al_mc_AKGC417L,train 860 | 213_1p3_Ar_mc_AKGC417L,train 861 | 213_1p3_Pl_mc_AKGC417L,train 862 | 213_1p3_Pr_mc_AKGC417L,train 863 | 213_1p5_Al_mc_AKGC417L,train 864 | 213_1p5_Ar_mc_AKGC417L,train 865 | 213_1p5_Pl_mc_AKGC417L,train 866 | 213_1p5_Pr_mc_AKGC417L,train 867 | 213_1p5_Tc_mc_AKGC417L,train 868 | 213_2p2_Al_mc_AKGC417L,train 869 | 213_2p2_Ar_mc_AKGC417L,train 870 | 213_2p2_Pl_mc_AKGC417L,train 871 | 213_2p2_Pr_mc_AKGC417L,train 872 | 213_2p2_Tc_mc_AKGC417L,train 873 | 214_1b1_Ar_sc_Meditron,test 874 | 215_1b2_Ar_sc_Meditron,train 875 | 215_1b3_Tc_sc_Meditron,train 876 | 216_1b1_Al_sc_Meditron,test 877 | 216_1b1_Pl_sc_Meditron,test 878 | 217_1b1_Tc_sc_Meditron,train 879 | 218_1b1_Al_sc_Meditron,test 880 | 218_1b1_Ar_sc_Meditron,train 881 | 218_1b1_Lr_sc_Meditron,train 882 | 218_1b1_Pl_sc_Meditron,test 883 | 218_1b1_Pr_sc_Meditron,test 884 | 218_1p1_Ar_sc_Litt3200,train 885 | 218_1p1_Pl_sc_Litt3200,test 886 | 218_1p1_Pr_sc_Litt3200,train 887 | 219_2b1_Ar_mc_LittC2SE,train 888 | 219_2b1_Tc_mc_LittC2SE,train 889 | 219_2b2_Ar_mc_LittC2SE,train 890 | 219_2b2_Tc_mc_LittC2SE,train 891 | 219_2b3_Tc_mc_LittC2SE,train 892 | 220_1b1_Tc_mc_LittC2SE,train 893 | 220_1b2_Al_mc_LittC2SE,train 894 | 221_2b1_Al_mc_LittC2SE,train 895 | 221_2b1_Ar_mc_LittC2SE,train 896 | 221_2b1_Lr_mc_LittC2SE,train 897 | 221_2b1_Pl_mc_LittC2SE,train 898 | 221_2b2_Al_mc_LittC2SE,train 899 | 221_2b2_Ar_mc_LittC2SE,train 900 | 221_2b2_Lr_mc_LittC2SE,train 901 | 221_2b2_Pl_mc_LittC2SE,train 902 | 221_2b3_Al_mc_LittC2SE,train 903 | 221_2b3_Ar_mc_LittC2SE,train 904 | 221_2b3_Lr_mc_LittC2SE,train 905 | 221_2b3_Pr_mc_LittC2SE,train 906 | 222_1b1_Ar_sc_Meditron,train 907 | 222_1b1_Lr_sc_Meditron,train 908 | 222_1b1_Pr_sc_Meditron,train 909 | 223_1b1_Pr_sc_Meditron,test 910 | 223_1b1_Pl_sc_Meditron,test 911 | 223_1b1_Ar_sc_Meditron,test 912 | 223_1b1_Al_sc_Meditron,test 913 | 223_1b1_Lr_sc_Meditron,test 914 | 223_1b1_Ll_sc_Meditron,test 915 | 224_1b1_Tc_sc_Meditron,test 916 | 224_1b2_Al_sc_Meditron,test 917 | 225_1b1_Pl_sc_Meditron,test 918 | 226_1b1_Al_sc_Meditron,train 919 | 226_1b1_Ll_sc_Meditron,train 920 | 226_1b1_Pl_sc_Meditron,train 921 | -------------------------------------------------------------------------------- /Att_Network.ipynb: -------------------------------------------------------------------------------- 1 | {"cells":[{"cell_type":"code","source":["from google.colab import drive\n","drive.mount('/content/drive')"],"metadata":{"id":"zAZ8yXC_h5IO","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1654886059308,"user_tz":180,"elapsed":20405,"user":{"displayName":"José Dias","userId":"04395799648316312914"}},"outputId":"153230fe-3d6c-4936-c6c9-560ff244c0d7"},"id":"zAZ8yXC_h5IO","execution_count":1,"outputs":[{"output_type":"stream","name":"stdout","text":["Mounted at /content/drive\n"]}]},{"cell_type":"code","source":["cd /content/drive/MyDrive/SoundClassification/vit_cnn"],"metadata":{"id":"ms7WGV6WiQNT","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1654886062795,"user_tz":180,"elapsed":292,"user":{"displayName":"José Dias","userId":"04395799648316312914"}},"outputId":"a6bae822-f8d5-4112-ada0-8a7a27ef4f47"},"id":"ms7WGV6WiQNT","execution_count":2,"outputs":[{"output_type":"stream","name":"stdout","text":["/content/drive/MyDrive/SoundClassification/vit_cnn\n"]}]},{"cell_type":"code","source":["!pip install timm"],"metadata":{"id":"3E70YjXpitGE","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1654886069320,"user_tz":180,"elapsed":4325,"user":{"displayName":"José Dias","userId":"04395799648316312914"}},"outputId":"3ec1b22f-2d10-4633-be96-2c86927e1595"},"id":"3E70YjXpitGE","execution_count":3,"outputs":[{"output_type":"stream","name":"stdout","text":["Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n","Collecting timm\n"," Downloading timm-0.5.4-py3-none-any.whl (431 kB)\n","\u001b[K |████████████████████████████████| 431 kB 5.0 MB/s \n","\u001b[?25hRequirement already satisfied: torchvision in /usr/local/lib/python3.7/dist-packages (from timm) (0.12.0+cu113)\n","Requirement already satisfied: torch>=1.4 in /usr/local/lib/python3.7/dist-packages (from timm) (1.11.0+cu113)\n","Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from torch>=1.4->timm) (4.2.0)\n","Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.7/dist-packages (from torchvision->timm) (7.1.2)\n","Requirement already satisfied: requests in /usr/local/lib/python3.7/dist-packages (from torchvision->timm) (2.23.0)\n","Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from torchvision->timm) (1.21.6)\n","Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests->torchvision->timm) (2022.5.18.1)\n","Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests->torchvision->timm) (3.0.4)\n","Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests->torchvision->timm) (1.24.3)\n","Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests->torchvision->timm) (2.10)\n","Installing collected packages: timm\n","Successfully installed timm-0.5.4\n"]}]},{"cell_type":"markdown","id":"3ab5d94b","metadata":{"id":"3ab5d94b"},"source":["# Libraries"]},{"cell_type":"code","execution_count":4,"id":"34c26750","metadata":{"id":"34c26750","executionInfo":{"status":"ok","timestamp":1654886082909,"user_tz":180,"elapsed":9421,"user":{"displayName":"José Dias","userId":"04395799648316312914"}}},"outputs":[],"source":["import torch\n","import torch.nn as nn\n","from torch.utils.data import DataLoader, Subset\n","import torch.optim as optim\n","import torchvision.transforms as T\n","from class_balanced_loss import CB_loss\n","from torchaudio.transforms import TimeMasking, FrequencyMasking\n","\n","from sklearn.model_selection import train_test_split\n","from sklearn.metrics import roc_auc_score, confusion_matrix\n","from sklearn.metrics import f1_score, accuracy_score\n","\n","import random\n","import matplotlib.pyplot as plt \n","import pandas as pd\n","import numpy as np\n","import seaborn as sn \n","import warnings\n","\n","#from Loader import LungSoundDS # WITH MIXUP\n","from SoundLoader import LungSoundDS\n","from model import DeiTCnn\n","\n","random.seed(0)\n","torch.manual_seed(0)\n","torch.backends.cudnn.benchmark = True\n","device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n","warnings.filterwarnings(\"ignore\", category=DeprecationWarning) "]},{"cell_type":"markdown","id":"0d356ef9","metadata":{"id":"0d356ef9"},"source":["# Loading Data"]},{"cell_type":"markdown","id":"1a7cccbe","metadata":{"id":"1a7cccbe"},"source":["## Transformations"]},{"cell_type":"code","source":["transformsAug = T.Compose([T.Resize((224,224)),\n"," T.Normalize(mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225]),\n"," FrequencyMasking(freq_mask_param=50), \n"," TimeMasking(time_mask_param=50)])"],"metadata":{"id":"y019eybTujwu","executionInfo":{"status":"ok","timestamp":1654886088725,"user_tz":180,"elapsed":2,"user":{"displayName":"José Dias","userId":"04395799648316312914"}}},"id":"y019eybTujwu","execution_count":5,"outputs":[]},{"cell_type":"code","source":["transforms = T.Compose([T.Resize((224,224)),\n"," T.Normalize(mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225]),\n"," ])"],"metadata":{"id":"urZKIgAjd7kp","executionInfo":{"status":"ok","timestamp":1654886090436,"user_tz":180,"elapsed":276,"user":{"displayName":"José Dias","userId":"04395799648316312914"}}},"id":"urZKIgAjd7kp","execution_count":6,"outputs":[]},{"cell_type":"markdown","id":"05de5724","metadata":{"id":"05de5724"},"source":["## Train Dataset"]},{"cell_type":"code","execution_count":null,"id":"780de867","metadata":{"id":"780de867","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1653637558841,"user_tz":180,"elapsed":835,"user":{"displayName":"José Dias","userId":"04395799648316312914"}},"outputId":"1f3d75d9-702e-4581-971b-0397446ef71b"},"outputs":[{"output_type":"stream","name":"stdout","text":["Number of samples: 4142\n"]}],"source":["train_path = r'train'\n","train_df = pd.read_csv('train.csv')\n","print('Number of samples:',len(train_df))"]},{"cell_type":"markdown","id":"979d9552","metadata":{"id":"979d9552"},"source":["## Splitting Dataset"]},{"cell_type":"code","source":["targets = train_df['id'].values\n","index = np.arange(len(targets))\n","classes_names = ['Normal','Crackles','Wheezes','W_C']"],"metadata":{"id":"djfBG43uVnJZ"},"id":"djfBG43uVnJZ","execution_count":null,"outputs":[]},{"cell_type":"code","execution_count":null,"id":"8375b7ba","metadata":{"id":"8375b7ba"},"outputs":[],"source":["# Split Into 90% for training and 10% for test\n","train_idx, val_idx = train_test_split(index,test_size=0.5, shuffle=True, stratify=targets, random_state=42)"]},{"cell_type":"code","source":["train_idx, val_idx = train_test_split(index[train_idx],test_size=0.5, shuffle=True, stratify=targets[train_idx], random_state=42)"],"metadata":{"id":"_FGmWR1sXQKR"},"id":"_FGmWR1sXQKR","execution_count":null,"outputs":[]},{"cell_type":"code","source":["# train dataset\n","train_samples = train_df.iloc[train_idx]\n","train_dataset = LungSoundDS(train_samples, train_path, transform=transforms)"],"metadata":{"id":"-k19FtnLVZd-"},"id":"-k19FtnLVZd-","execution_count":null,"outputs":[]},{"cell_type":"code","source":["# validation dataset\n","val_samples = train_df.iloc[train_idx]\n","val_dataset = LungSoundDS(val_samples, train_path, transform=transforms)"],"metadata":{"id":"3QhcBlsQXsj0"},"id":"3QhcBlsQXsj0","execution_count":null,"outputs":[]},{"cell_type":"code","execution_count":null,"id":"472d7d97","metadata":{"id":"472d7d97"},"outputs":[],"source":["_, samples_per_cls = np.unique(train_df.id, return_counts=True)"]},{"cell_type":"markdown","id":"760df454","metadata":{"id":"760df454"},"source":["## Test Dataset"]},{"cell_type":"code","execution_count":null,"id":"79b32043","metadata":{"id":"79b32043","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1653637575335,"user_tz":180,"elapsed":816,"user":{"displayName":"José Dias","userId":"04395799648316312914"}},"outputId":"6c100eed-c8fc-4213-b67e-07871bc854d2"},"outputs":[{"output_type":"stream","name":"stdout","text":["Number of samples: 2756\n"]}],"source":["test_path = r'test'\n","test_df = pd.read_csv('test.csv')\n"," \n","test_dataset = LungSoundDS(test_df, test_path, transform=transforms)\n","print('Number of samples:',len(test_dataset))"]},{"cell_type":"markdown","id":"94a26645","metadata":{"id":"94a26645"},"source":["# Functions "]},{"cell_type":"code","source":["# Mixup data\n","def mixup_data(x, y, alpha=2.0, device=device):\n"," '''Returns mixed inputs, pairs of targets, and lambda'''\n"," \n"," lam = np.random.beta(alpha, alpha)\n","\n"," batch_size = x.size()[0]\n"," index = torch.randperm(batch_size).to(device)\n"," \n"," mixed_x = lam*x + (1 - lam)*x[index, :]\n"," y_a, y_b = y, y[index]\n"," return mixed_x, y_a, y_b, lam\n","\n","def mixup_criterion(criterion, pred, y_a, y_b, lam):\n"," return lam*criterion(pred, y_a) + (1 - lam)*criterion(pred, y_b)"],"metadata":{"id":"nKEEn5Mn9SZC"},"id":"nKEEn5Mn9SZC","execution_count":null,"outputs":[]},{"cell_type":"code","execution_count":null,"id":"UOYeKEKjvweW","metadata":{"id":"UOYeKEKjvweW"},"outputs":[],"source":["# Calculate accuracy for each batch\n","def model_acc(output, target):\n"," _, y_pred = torch.max(output, dim = 1) \n"," correct = torch.eq(y_pred, target).float()\n"," \n"," acc = correct.sum().item()/len(correct)\n"," return acc"]},{"cell_type":"code","execution_count":null,"id":"IAKMlrUfqFZv","metadata":{"id":"IAKMlrUfqFZv"},"outputs":[],"source":["# Train the Model\n","def train(model, device, criterion, dataLoader, optimizer, mixup=False):\n"," model.train()\n"," batch_loss=0\n"," batch_acc=0\n"," \n"," for data, target in dataLoader:\n"," data, target = data.to(device), target.to(device)\n"," # applying mixup \n"," if mixup:\n"," mixed_data, target_a, target_b, lam = mixup_data(data, target, alpha=2.0, device=device)\n"," # optimizer\n"," optimizer.zero_grad()\n"," output = model(mixed_data)\n"," loss = mixup_criterion(criterion, output, target_a, target_b, lam)\n"," else:\n"," optimizer.zero_grad()\n"," output = model(data)\n"," loss = criterion(output, target)\n"," loss.backward()\n"," optimizer.step()\n"," \n"," # Add all batch loss\n"," batch_loss += loss.item()*data.size(0)\n"," \n"," acc = model_acc(output, target)\n"," \n"," # Add all batch accuracy\n"," batch_acc += acc*target.size(0)\n","\n"," # Epoch Loss and Accuracy \n"," train_loss = batch_loss/len(dataLoader.dataset)\n"," train_acc = batch_acc/len(dataLoader.dataset)\n"," \n"," return train_loss, train_acc"]},{"cell_type":"code","execution_count":null,"id":"f7463428","metadata":{"id":"f7463428"},"outputs":[],"source":["# Generate Dataloader to Feed the Model\n","batch_size = 32\n","\n","trainloader = DataLoader(train_dataset, batch_size=batch_size, shuffle=False, pin_memory=True)\n","validloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, pin_memory=True)\n","testloader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False, pin_memory=True)"]},{"cell_type":"code","execution_count":null,"id":"34283b73","metadata":{"id":"34283b73"},"outputs":[],"source":["# evaluate metrics \n","def compute_metrics(model, device, criterion, dataLoader):\n"," with torch.no_grad():\n"," model.eval()\n","\n"," val_loss = 0\n"," val_correct = 0\n","\n"," score_list = []\n"," pred_list = []\n"," target_list = []\n"," \n"," for data, target in dataLoader: \n"," image, target = data.to(device), target.to(device)\n","\n"," output = model(image)\n","\n"," # Compute Loss\n"," loss = criterion(output, target)\n"," val_loss += loss.item()*data.size(0)\n","\n"," # Calculate the number of correctly classified examples\n"," pred = output.argmax(dim=1)\n"," val_correct += pred.eq(target).sum().item()\n","\n"," # Storing \n"," if len(pred)==1:\n"," pred_list.append(pred.squeeze().tolist())\n"," target_list.append(target.squeeze().tolist())\n"," else: \n"," pred_list.extend(pred.squeeze().tolist())\n"," target_list.extend(target.squeeze().tolist())\n"," score_list.extend(nn.Softmax(dim = 1)(output).tolist())\n"," \n"," # metrics\n"," F1_score = f1_score(target_list, pred_list, average=\"macro\") \n"," Accuracy = accuracy_score(target_list, pred_list) \n"," Roc_AUC = roc_auc_score(target_list, score_list, average=\"macro\",multi_class='ovo')\n"," cnf_matrix= confusion_matrix(target_list, pred_list)\n","\n"," FP = cnf_matrix.sum(axis=0) - np.diag(cnf_matrix) \n"," FN = cnf_matrix.sum(axis=1) - np.diag(cnf_matrix)\n"," TP = np.diag(cnf_matrix)\n"," TN = cnf_matrix.sum() - (FP + FN + TP)\n"," # Sensitivity, hit rate, recall, or true positive rate\n"," TPR = TP/(TP+FN)\n"," # Specificity or true negative rate\n"," TNR = TN/(TN+FP)\n"," Score = (TPR.mean()+TNR.mean())/2\n"," \n"," # put values into dictionary\n"," metrics_dict = {\"Accuracy\": Accuracy,\n"," \"F1-score\": F1_score,\n"," \"Roc_AUC\":Roc_AUC,\n"," \"Loss\": val_loss/len(dataLoader.dataset),\n"," \"CM\":cnf_matrix,\n"," \"Target\":target_list,\n"," \"Predict\":pred_list,\n"," \"Sensitivity\":TPR.mean(),\n"," \"Specificity\":TNR.mean(),\n"," \"Score\": Score}\n"," \n"," return metrics_dict"]},{"cell_type":"markdown","id":"ec906308","metadata":{"id":"ec906308"},"source":["# Model"]},{"cell_type":"code","execution_count":null,"id":"7ade7239","metadata":{"id":"7ade7239"},"outputs":[],"source":["num_classes = len(np.unique(targets))"]},{"cell_type":"code","execution_count":12,"id":"6a4074bd","metadata":{"id":"6a4074bd","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1654886274001,"user_tz":180,"elapsed":2835,"user":{"displayName":"José Dias","userId":"04395799648316312914"}},"outputId":"34707939-a6ac-43ec-e634-ed1ec6468b02"},"outputs":[{"output_type":"stream","name":"stderr","text":["Using cache found in /root/.cache/torch/hub/facebookresearch_deit_main\n"]}],"source":["#model = ViTCnn(num_classes=num_classes,pretrained=True,freeze=True)\n","model = DeiTCnn(num_classes=num_classes, pretrained=True, model=\"base\", freeze=False, attention=True)\n","model.to(device);"]},{"cell_type":"markdown","id":"86120c56","metadata":{"id":"86120c56"},"source":["## Model Summary"]},{"cell_type":"code","execution_count":null,"id":"b5b79ccb","metadata":{"id":"b5b79ccb"},"outputs":[],"source":["from torchsummary import summary\n","summary(model, (3,224,224))"]},{"cell_type":"markdown","id":"eb9bfc55","metadata":{"id":"eb9bfc55"},"source":["## Model Hyperparams"]},{"cell_type":"code","execution_count":null,"id":"ca6fb5d4","metadata":{"id":"ca6fb5d4"},"outputs":[],"source":["# filter(lambda p: p.requires_grad, model.parameters()), \n","beta=0.99\n","learning_rate = 0.001\n","optimizer = optim.Adam(model.parameters(),lr=learning_rate,weight_decay=0)\n","criterion = CB_loss(device, samples_per_cls=samples_per_cls, no_of_classes=num_classes, beta=beta)"]},{"cell_type":"markdown","id":"d7f9aae5","metadata":{"id":"d7f9aae5"},"source":["# Training Model"]},{"cell_type":"code","execution_count":null,"id":"AZC4K6j5sIE1","metadata":{"id":"AZC4K6j5sIE1"},"outputs":[],"source":["# creating dictionary for statistics\n","\n","## Train Set Dictionary \n","train_stats = {\"acc\": [], \"loss\": []}\n","val_stats = {\"acc\": [], \"loss\": []}"]},{"cell_type":"code","execution_count":null,"id":"YAjZaoMTsKAF","metadata":{"id":"YAjZaoMTsKAF"},"outputs":[],"source":["## Dictionary for epoch Statistics\n","\n","epoch_train = {\"acc\": [], \"loss\": []}\n","epoch_val = {\"acc\": [], \"loss\": []}\n","best_val_score = 0\n","epochs = 100\n","\n","# Epoch Loop for Training and Evaluation\n","for epoch in range(epochs):\n"," train_loss, train_acc = train(model, device, criterion, trainloader, optimizer, mixup=True)\n","\n"," metrics = compute_metrics(model, device, criterion, validloader)\n","\n"," # Statistics\n"," train_stats[\"acc\"].append(train_acc)\n"," train_stats[\"loss\"].append(train_loss)\n","\n"," val_stats[\"acc\"].append(metrics[\"Accuracy\"])\n"," val_stats[\"loss\"].append(metrics[\"Loss\"])\n","\n"," # Saving best Model\n"," if metrics[\"Score\"]>best_val_score:\n"," torch.save(model.state_dict(), \"best_model)\n"," best_val_score = metrics['Score']\n"," \n"," # Print Metris\n"," print(f'Epoch {epoch+1} --> Train Metrics: Accuracy: {train_acc:.2f} -- Loss: {train_loss:.2f} | Validation Metrics: Accuracy: {metrics[\"Accuracy\"]:.2f} -- Score: {metrics[\"Score\"]:.2f} -- Loss: {metrics[\"Loss\"]:.2f}')\n","\n","print('finish training')"]},{"cell_type":"markdown","id":"TOpdK9m_CRUW","metadata":{"id":"TOpdK9m_CRUW"},"source":["# Statistics"]},{"cell_type":"code","execution_count":null,"id":"234b4358","metadata":{"id":"234b4358"},"outputs":[],"source":["# Loss Figure plotting and saving figure\n","import matplotlib.pyplot as plt\n","plt.figure(figsize=(8,5)) \n","plt.grid() \n","plt.plot(train_stats['loss'])\n","plt.plot(val_stats['loss'])\n","plt.legend(['Training','Validation'])\n","plt.ylabel('Loss'), plt.xlabel('Epochs');\n","plt.savefig('loss_curve.pdf', dpi=200), plt.show();"]},{"cell_type":"code","execution_count":null,"id":"0MhZtTSVCagu","metadata":{"id":"0MhZtTSVCagu"},"outputs":[],"source":["# Accuracy plotting and saving figure\n","plt.figure(figsize=(8,5)) \n","plt.grid() \n","plt.plot(train_stats['acc'])\n","plt.plot(val_stats['acc'])\n","plt.legend(['Training','Validation'])\n","plt.ylabel('Accuracy'), plt.xlabel('Epochs');\n","plt.savefig('acc_curve.pdf',dpi=200), plt.show();"]},{"cell_type":"markdown","id":"QOPoBXj1CcQO","metadata":{"id":"QOPoBXj1CcQO"},"source":["# Evaluation"]},{"cell_type":"code","execution_count":null,"id":"zek7y1VOCgLd","metadata":{"id":"zek7y1VOCgLd","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1653637776569,"user_tz":180,"elapsed":9900,"user":{"displayName":"José Dias","userId":"04395799648316312914"}},"outputId":"f1376a1c-e9ef-4110-9f4d-2e886cdf53fa"},"outputs":[{"output_type":"stream","name":"stderr","text":["Using cache found in /root/.cache/torch/hub/facebookresearch_deit_main\n"]}],"source":["#loading \n","model = DeiTCnn(num_classes=num_classes, pretrained=True, model=\"base\", freeze=False, attention=True)\n","model.load_state_dict(torch.load('deit3_cnn.zip', map_location=device)); \n","model.to(device);"]},{"cell_type":"code","source":["test_metrics = compute_metrics(model, device, criterion, testloader)"],"metadata":{"id":"y_SXlHt1fqWZ"},"id":"y_SXlHt1fqWZ","execution_count":null,"outputs":[]},{"cell_type":"markdown","id":"d4b62203","metadata":{"id":"d4b62203"},"source":["## Confusion Matrix"]},{"cell_type":"code","execution_count":null,"id":"0MNyiRHVHrwV","metadata":{"id":"0MNyiRHVHrwV","colab":{"base_uri":"https://localhost:8080/","height":341},"executionInfo":{"status":"ok","timestamp":1653640639103,"user_tz":180,"elapsed":19,"user":{"displayName":"José Dias","userId":"04395799648316312914"}},"outputId":"38be8d8b-78fd-4535-dad5-c448f861a093"},"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}}],"source":["plt.figure(figsize = (8,5))\n","ax = sn.heatmap(test_metrics['CM'], annot=True, fmt=\".0f\", cmap ='Blues',xticklabels=classes_names, yticklabels=classes_names,\n"," linecolor='k',cbar=False)\n","ax.set_xticklabels(classes_names,rotation=30);\n","#plt.savefig(\"cm.pdf\", dpi=200), plt.show();"]},{"cell_type":"markdown","id":"51216e7d","metadata":{"id":"51216e7d"},"source":["# Performance"]},{"cell_type":"code","execution_count":null,"id":"Ijip5Pi63NIu","metadata":{"id":"Ijip5Pi63NIu","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1653640639104,"user_tz":180,"elapsed":12,"user":{"displayName":"José Dias","userId":"04395799648316312914"}},"outputId":"2d41d693-9065-43a9-beff-5b5108ceaf99"},"outputs":[{"output_type":"stream","name":"stdout","text":["Results for Test Set \n","\n","Accuracy: 0.4427\n","Roc AUC: 0.6176\n","Sensitivity : 0.3634\n","Specificity : 0.7828\n","Score : 0.5731\n"]}],"source":["print('Results for Test Set \\n')\n","print(f\"Accuracy: {test_metrics['Accuracy']:.4f}\")\n","print(f\"Roc AUC: {test_metrics['Roc_AUC']:.4f}\")\n","# Sensitivity\n","print(f\"Sensitivity : {test_metrics['Sensitivity']:.4f}\")\n","# Specificity\n","print(f\"Specificity : {test_metrics['Specificity']:.4f}\")\n","# Score\n","print(f\"Score : {test_metrics['Score']:.4f}\")"]}],"metadata":{"accelerator":"GPU","colab":{"name":"Att_Network.ipynb","provenance":[]},"interpreter":{"hash":"4be5c697bd9e54093fb0d585907a96642021cd18051126ee9ceddd43ef6ebd2d"},"kernelspec":{"display_name":"Python 3.8.8 ('base')","language":"python","name":"python3"},"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.8.8"}},"nbformat":4,"nbformat_minor":5} -------------------------------------------------------------------------------- /test.csv: -------------------------------------------------------------------------------- 1 | filename,id 2 | normal_0.wav,0 3 | normal_1.wav,0 4 | normal_2.wav,0 5 | normal_3.wav,0 6 | normal_4.wav,0 7 | normal_5.wav,0 8 | normal_6.wav,0 9 | normal_7.wav,0 10 | normal_8.wav,0 11 | normal_9.wav,0 12 | normal_10.wav,0 13 | normal_11.wav,0 14 | normal_12.wav,0 15 | normal_13.wav,0 16 | normal_14.wav,0 17 | normal_15.wav,0 18 | normal_16.wav,0 19 | normal_17.wav,0 20 | normal_18.wav,0 21 | normal_19.wav,0 22 | normal_20.wav,0 23 | normal_21.wav,0 24 | normal_22.wav,0 25 | normal_23.wav,0 26 | normal_24.wav,0 27 | normal_25.wav,0 28 | normal_26.wav,0 29 | normal_27.wav,0 30 | normal_28.wav,0 31 | normal_29.wav,0 32 | normal_30.wav,0 33 | normal_31.wav,0 34 | normal_32.wav,0 35 | normal_33.wav,0 36 | normal_34.wav,0 37 | normal_35.wav,0 38 | normal_36.wav,0 39 | normal_37.wav,0 40 | normal_38.wav,0 41 | normal_39.wav,0 42 | normal_40.wav,0 43 | normal_41.wav,0 44 | normal_42.wav,0 45 | normal_43.wav,0 46 | normal_44.wav,0 47 | normal_45.wav,0 48 | normal_46.wav,0 49 | normal_47.wav,0 50 | normal_48.wav,0 51 | normal_49.wav,0 52 | normal_50.wav,0 53 | normal_51.wav,0 54 | normal_52.wav,0 55 | normal_53.wav,0 56 | normal_54.wav,0 57 | normal_55.wav,0 58 | normal_56.wav,0 59 | normal_57.wav,0 60 | normal_58.wav,0 61 | normal_59.wav,0 62 | normal_60.wav,0 63 | normal_61.wav,0 64 | normal_62.wav,0 65 | normal_63.wav,0 66 | normal_64.wav,0 67 | normal_65.wav,0 68 | normal_66.wav,0 69 | normal_67.wav,0 70 | normal_68.wav,0 71 | normal_69.wav,0 72 | normal_70.wav,0 73 | normal_71.wav,0 74 | normal_72.wav,0 75 | normal_73.wav,0 76 | normal_74.wav,0 77 | normal_75.wav,0 78 | normal_76.wav,0 79 | normal_77.wav,0 80 | normal_78.wav,0 81 | normal_79.wav,0 82 | normal_80.wav,0 83 | normal_81.wav,0 84 | normal_82.wav,0 85 | normal_83.wav,0 86 | normal_84.wav,0 87 | normal_85.wav,0 88 | normal_86.wav,0 89 | normal_87.wav,0 90 | normal_88.wav,0 91 | normal_89.wav,0 92 | normal_90.wav,0 93 | normal_91.wav,0 94 | normal_92.wav,0 95 | normal_93.wav,0 96 | normal_94.wav,0 97 | normal_95.wav,0 98 | normal_96.wav,0 99 | normal_97.wav,0 100 | normal_98.wav,0 101 | normal_99.wav,0 102 | normal_100.wav,0 103 | normal_101.wav,0 104 | normal_102.wav,0 105 | normal_103.wav,0 106 | normal_104.wav,0 107 | normal_105.wav,0 108 | normal_106.wav,0 109 | normal_107.wav,0 110 | normal_108.wav,0 111 | normal_109.wav,0 112 | normal_110.wav,0 113 | normal_111.wav,0 114 | normal_112.wav,0 115 | normal_113.wav,0 116 | normal_114.wav,0 117 | normal_115.wav,0 118 | normal_116.wav,0 119 | normal_117.wav,0 120 | normal_118.wav,0 121 | normal_119.wav,0 122 | normal_120.wav,0 123 | normal_121.wav,0 124 | normal_122.wav,0 125 | normal_123.wav,0 126 | normal_124.wav,0 127 | normal_125.wav,0 128 | normal_126.wav,0 129 | normal_127.wav,0 130 | normal_128.wav,0 131 | normal_129.wav,0 132 | normal_130.wav,0 133 | normal_131.wav,0 134 | normal_132.wav,0 135 | normal_133.wav,0 136 | normal_134.wav,0 137 | normal_135.wav,0 138 | normal_136.wav,0 139 | normal_137.wav,0 140 | normal_138.wav,0 141 | normal_139.wav,0 142 | normal_140.wav,0 143 | normal_141.wav,0 144 | normal_142.wav,0 145 | normal_143.wav,0 146 | normal_144.wav,0 147 | normal_145.wav,0 148 | normal_146.wav,0 149 | normal_147.wav,0 150 | normal_148.wav,0 151 | normal_149.wav,0 152 | normal_150.wav,0 153 | normal_151.wav,0 154 | normal_152.wav,0 155 | normal_153.wav,0 156 | normal_154.wav,0 157 | normal_155.wav,0 158 | normal_156.wav,0 159 | normal_157.wav,0 160 | normal_158.wav,0 161 | normal_159.wav,0 162 | normal_160.wav,0 163 | normal_161.wav,0 164 | normal_162.wav,0 165 | normal_163.wav,0 166 | normal_164.wav,0 167 | normal_165.wav,0 168 | normal_166.wav,0 169 | normal_167.wav,0 170 | normal_168.wav,0 171 | normal_169.wav,0 172 | normal_170.wav,0 173 | normal_171.wav,0 174 | normal_172.wav,0 175 | normal_173.wav,0 176 | normal_174.wav,0 177 | normal_175.wav,0 178 | normal_176.wav,0 179 | normal_177.wav,0 180 | normal_178.wav,0 181 | normal_179.wav,0 182 | normal_180.wav,0 183 | normal_181.wav,0 184 | normal_182.wav,0 185 | normal_183.wav,0 186 | normal_184.wav,0 187 | normal_185.wav,0 188 | normal_186.wav,0 189 | normal_187.wav,0 190 | normal_188.wav,0 191 | normal_189.wav,0 192 | normal_190.wav,0 193 | normal_191.wav,0 194 | normal_192.wav,0 195 | normal_193.wav,0 196 | normal_194.wav,0 197 | normal_195.wav,0 198 | normal_196.wav,0 199 | normal_197.wav,0 200 | normal_198.wav,0 201 | normal_199.wav,0 202 | normal_200.wav,0 203 | normal_201.wav,0 204 | normal_202.wav,0 205 | normal_203.wav,0 206 | normal_204.wav,0 207 | normal_205.wav,0 208 | normal_206.wav,0 209 | normal_207.wav,0 210 | normal_208.wav,0 211 | normal_209.wav,0 212 | normal_210.wav,0 213 | normal_211.wav,0 214 | normal_212.wav,0 215 | normal_213.wav,0 216 | normal_214.wav,0 217 | normal_215.wav,0 218 | normal_216.wav,0 219 | normal_217.wav,0 220 | normal_218.wav,0 221 | normal_219.wav,0 222 | normal_220.wav,0 223 | normal_221.wav,0 224 | normal_222.wav,0 225 | normal_223.wav,0 226 | normal_224.wav,0 227 | normal_225.wav,0 228 | normal_226.wav,0 229 | normal_227.wav,0 230 | normal_228.wav,0 231 | normal_229.wav,0 232 | normal_230.wav,0 233 | normal_231.wav,0 234 | normal_232.wav,0 235 | normal_233.wav,0 236 | normal_234.wav,0 237 | normal_235.wav,0 238 | normal_236.wav,0 239 | normal_237.wav,0 240 | normal_238.wav,0 241 | normal_239.wav,0 242 | normal_240.wav,0 243 | normal_241.wav,0 244 | normal_242.wav,0 245 | normal_243.wav,0 246 | normal_244.wav,0 247 | normal_245.wav,0 248 | normal_246.wav,0 249 | normal_247.wav,0 250 | normal_248.wav,0 251 | normal_249.wav,0 252 | normal_250.wav,0 253 | normal_251.wav,0 254 | normal_252.wav,0 255 | normal_253.wav,0 256 | normal_254.wav,0 257 | normal_255.wav,0 258 | normal_256.wav,0 259 | normal_257.wav,0 260 | normal_258.wav,0 261 | normal_259.wav,0 262 | normal_260.wav,0 263 | normal_261.wav,0 264 | normal_262.wav,0 265 | normal_263.wav,0 266 | normal_264.wav,0 267 | normal_265.wav,0 268 | normal_266.wav,0 269 | normal_267.wav,0 270 | normal_268.wav,0 271 | normal_269.wav,0 272 | normal_270.wav,0 273 | normal_271.wav,0 274 | normal_272.wav,0 275 | normal_273.wav,0 276 | normal_274.wav,0 277 | normal_275.wav,0 278 | normal_276.wav,0 279 | normal_277.wav,0 280 | normal_278.wav,0 281 | normal_279.wav,0 282 | normal_280.wav,0 283 | normal_281.wav,0 284 | normal_282.wav,0 285 | normal_283.wav,0 286 | normal_284.wav,0 287 | normal_285.wav,0 288 | normal_286.wav,0 289 | normal_287.wav,0 290 | normal_288.wav,0 291 | normal_289.wav,0 292 | normal_290.wav,0 293 | normal_291.wav,0 294 | normal_292.wav,0 295 | normal_293.wav,0 296 | normal_294.wav,0 297 | normal_295.wav,0 298 | normal_296.wav,0 299 | normal_297.wav,0 300 | normal_298.wav,0 301 | normal_299.wav,0 302 | normal_300.wav,0 303 | normal_301.wav,0 304 | normal_302.wav,0 305 | normal_303.wav,0 306 | normal_304.wav,0 307 | normal_305.wav,0 308 | normal_306.wav,0 309 | normal_307.wav,0 310 | normal_308.wav,0 311 | normal_309.wav,0 312 | normal_310.wav,0 313 | normal_311.wav,0 314 | normal_312.wav,0 315 | normal_313.wav,0 316 | normal_314.wav,0 317 | normal_315.wav,0 318 | normal_316.wav,0 319 | normal_317.wav,0 320 | normal_318.wav,0 321 | normal_319.wav,0 322 | normal_320.wav,0 323 | normal_321.wav,0 324 | normal_322.wav,0 325 | normal_323.wav,0 326 | normal_324.wav,0 327 | normal_325.wav,0 328 | normal_326.wav,0 329 | normal_327.wav,0 330 | normal_328.wav,0 331 | normal_329.wav,0 332 | normal_330.wav,0 333 | normal_331.wav,0 334 | normal_332.wav,0 335 | normal_333.wav,0 336 | normal_334.wav,0 337 | normal_335.wav,0 338 | normal_336.wav,0 339 | normal_337.wav,0 340 | normal_338.wav,0 341 | normal_339.wav,0 342 | normal_340.wav,0 343 | normal_341.wav,0 344 | normal_342.wav,0 345 | normal_343.wav,0 346 | normal_344.wav,0 347 | normal_345.wav,0 348 | normal_346.wav,0 349 | normal_347.wav,0 350 | normal_348.wav,0 351 | normal_349.wav,0 352 | normal_350.wav,0 353 | normal_351.wav,0 354 | normal_352.wav,0 355 | normal_353.wav,0 356 | normal_354.wav,0 357 | normal_355.wav,0 358 | normal_356.wav,0 359 | normal_357.wav,0 360 | normal_358.wav,0 361 | normal_359.wav,0 362 | normal_360.wav,0 363 | normal_361.wav,0 364 | normal_362.wav,0 365 | normal_363.wav,0 366 | normal_364.wav,0 367 | normal_365.wav,0 368 | normal_366.wav,0 369 | normal_367.wav,0 370 | normal_368.wav,0 371 | normal_369.wav,0 372 | normal_370.wav,0 373 | normal_371.wav,0 374 | normal_372.wav,0 375 | normal_373.wav,0 376 | normal_374.wav,0 377 | normal_375.wav,0 378 | normal_376.wav,0 379 | normal_377.wav,0 380 | normal_378.wav,0 381 | normal_379.wav,0 382 | normal_380.wav,0 383 | normal_381.wav,0 384 | normal_382.wav,0 385 | normal_383.wav,0 386 | normal_384.wav,0 387 | normal_385.wav,0 388 | normal_386.wav,0 389 | normal_387.wav,0 390 | normal_388.wav,0 391 | normal_389.wav,0 392 | normal_390.wav,0 393 | normal_391.wav,0 394 | normal_392.wav,0 395 | normal_393.wav,0 396 | normal_394.wav,0 397 | normal_395.wav,0 398 | normal_396.wav,0 399 | normal_397.wav,0 400 | normal_398.wav,0 401 | normal_399.wav,0 402 | normal_400.wav,0 403 | normal_401.wav,0 404 | normal_402.wav,0 405 | normal_403.wav,0 406 | normal_404.wav,0 407 | normal_405.wav,0 408 | normal_406.wav,0 409 | normal_407.wav,0 410 | normal_408.wav,0 411 | normal_409.wav,0 412 | normal_410.wav,0 413 | normal_411.wav,0 414 | normal_412.wav,0 415 | normal_413.wav,0 416 | normal_414.wav,0 417 | normal_415.wav,0 418 | normal_416.wav,0 419 | normal_417.wav,0 420 | normal_418.wav,0 421 | normal_419.wav,0 422 | normal_420.wav,0 423 | normal_421.wav,0 424 | normal_422.wav,0 425 | normal_423.wav,0 426 | normal_424.wav,0 427 | normal_425.wav,0 428 | normal_426.wav,0 429 | normal_427.wav,0 430 | normal_428.wav,0 431 | normal_429.wav,0 432 | normal_430.wav,0 433 | normal_431.wav,0 434 | normal_432.wav,0 435 | normal_433.wav,0 436 | normal_434.wav,0 437 | normal_435.wav,0 438 | normal_436.wav,0 439 | normal_437.wav,0 440 | normal_438.wav,0 441 | normal_439.wav,0 442 | normal_440.wav,0 443 | normal_441.wav,0 444 | normal_442.wav,0 445 | normal_443.wav,0 446 | normal_444.wav,0 447 | normal_445.wav,0 448 | normal_446.wav,0 449 | normal_447.wav,0 450 | normal_448.wav,0 451 | normal_449.wav,0 452 | normal_450.wav,0 453 | normal_451.wav,0 454 | normal_452.wav,0 455 | normal_453.wav,0 456 | normal_454.wav,0 457 | normal_455.wav,0 458 | normal_456.wav,0 459 | normal_457.wav,0 460 | normal_458.wav,0 461 | normal_459.wav,0 462 | normal_460.wav,0 463 | normal_461.wav,0 464 | normal_462.wav,0 465 | normal_463.wav,0 466 | normal_464.wav,0 467 | normal_465.wav,0 468 | normal_466.wav,0 469 | normal_467.wav,0 470 | normal_468.wav,0 471 | normal_469.wav,0 472 | normal_470.wav,0 473 | normal_471.wav,0 474 | normal_472.wav,0 475 | normal_473.wav,0 476 | normal_474.wav,0 477 | normal_475.wav,0 478 | normal_476.wav,0 479 | normal_477.wav,0 480 | normal_478.wav,0 481 | normal_479.wav,0 482 | normal_480.wav,0 483 | normal_481.wav,0 484 | normal_482.wav,0 485 | normal_483.wav,0 486 | normal_484.wav,0 487 | normal_485.wav,0 488 | normal_486.wav,0 489 | normal_487.wav,0 490 | normal_488.wav,0 491 | normal_489.wav,0 492 | normal_490.wav,0 493 | normal_491.wav,0 494 | normal_492.wav,0 495 | normal_493.wav,0 496 | normal_494.wav,0 497 | normal_495.wav,0 498 | normal_496.wav,0 499 | normal_497.wav,0 500 | normal_498.wav,0 501 | normal_499.wav,0 502 | normal_500.wav,0 503 | normal_501.wav,0 504 | normal_502.wav,0 505 | normal_503.wav,0 506 | normal_504.wav,0 507 | normal_505.wav,0 508 | normal_506.wav,0 509 | normal_507.wav,0 510 | normal_508.wav,0 511 | normal_509.wav,0 512 | normal_510.wav,0 513 | normal_511.wav,0 514 | normal_512.wav,0 515 | normal_513.wav,0 516 | normal_514.wav,0 517 | normal_515.wav,0 518 | normal_516.wav,0 519 | normal_517.wav,0 520 | normal_518.wav,0 521 | normal_519.wav,0 522 | normal_520.wav,0 523 | normal_521.wav,0 524 | normal_522.wav,0 525 | normal_523.wav,0 526 | normal_524.wav,0 527 | normal_525.wav,0 528 | normal_526.wav,0 529 | normal_527.wav,0 530 | normal_528.wav,0 531 | normal_529.wav,0 532 | normal_530.wav,0 533 | normal_531.wav,0 534 | normal_532.wav,0 535 | normal_533.wav,0 536 | normal_534.wav,0 537 | normal_535.wav,0 538 | normal_536.wav,0 539 | normal_537.wav,0 540 | normal_538.wav,0 541 | normal_539.wav,0 542 | normal_540.wav,0 543 | normal_541.wav,0 544 | normal_542.wav,0 545 | normal_543.wav,0 546 | normal_544.wav,0 547 | normal_545.wav,0 548 | normal_546.wav,0 549 | normal_547.wav,0 550 | normal_548.wav,0 551 | normal_549.wav,0 552 | normal_550.wav,0 553 | normal_551.wav,0 554 | normal_552.wav,0 555 | normal_553.wav,0 556 | normal_554.wav,0 557 | normal_555.wav,0 558 | normal_556.wav,0 559 | normal_557.wav,0 560 | normal_558.wav,0 561 | normal_559.wav,0 562 | normal_560.wav,0 563 | normal_561.wav,0 564 | normal_562.wav,0 565 | normal_563.wav,0 566 | normal_564.wav,0 567 | normal_565.wav,0 568 | normal_566.wav,0 569 | normal_567.wav,0 570 | normal_568.wav,0 571 | normal_569.wav,0 572 | normal_570.wav,0 573 | normal_571.wav,0 574 | normal_572.wav,0 575 | normal_573.wav,0 576 | normal_574.wav,0 577 | normal_575.wav,0 578 | normal_576.wav,0 579 | normal_577.wav,0 580 | normal_578.wav,0 581 | normal_579.wav,0 582 | normal_580.wav,0 583 | normal_581.wav,0 584 | normal_582.wav,0 585 | normal_583.wav,0 586 | normal_584.wav,0 587 | normal_585.wav,0 588 | normal_586.wav,0 589 | normal_587.wav,0 590 | normal_588.wav,0 591 | normal_589.wav,0 592 | normal_590.wav,0 593 | normal_591.wav,0 594 | normal_592.wav,0 595 | normal_593.wav,0 596 | normal_594.wav,0 597 | normal_595.wav,0 598 | normal_596.wav,0 599 | normal_597.wav,0 600 | normal_598.wav,0 601 | normal_599.wav,0 602 | normal_600.wav,0 603 | normal_601.wav,0 604 | normal_602.wav,0 605 | normal_603.wav,0 606 | normal_604.wav,0 607 | normal_605.wav,0 608 | normal_606.wav,0 609 | normal_607.wav,0 610 | normal_608.wav,0 611 | normal_609.wav,0 612 | normal_610.wav,0 613 | normal_611.wav,0 614 | normal_612.wav,0 615 | normal_613.wav,0 616 | normal_614.wav,0 617 | normal_615.wav,0 618 | normal_616.wav,0 619 | normal_617.wav,0 620 | normal_618.wav,0 621 | normal_619.wav,0 622 | normal_620.wav,0 623 | normal_621.wav,0 624 | normal_622.wav,0 625 | normal_623.wav,0 626 | normal_624.wav,0 627 | normal_625.wav,0 628 | normal_626.wav,0 629 | normal_627.wav,0 630 | normal_628.wav,0 631 | normal_629.wav,0 632 | normal_630.wav,0 633 | normal_631.wav,0 634 | normal_632.wav,0 635 | normal_633.wav,0 636 | normal_634.wav,0 637 | normal_635.wav,0 638 | normal_636.wav,0 639 | normal_637.wav,0 640 | normal_638.wav,0 641 | normal_639.wav,0 642 | normal_640.wav,0 643 | normal_641.wav,0 644 | normal_642.wav,0 645 | normal_643.wav,0 646 | normal_644.wav,0 647 | normal_645.wav,0 648 | normal_646.wav,0 649 | normal_647.wav,0 650 | normal_648.wav,0 651 | normal_649.wav,0 652 | normal_650.wav,0 653 | normal_651.wav,0 654 | normal_652.wav,0 655 | normal_653.wav,0 656 | normal_654.wav,0 657 | normal_655.wav,0 658 | normal_656.wav,0 659 | normal_657.wav,0 660 | normal_658.wav,0 661 | normal_659.wav,0 662 | normal_660.wav,0 663 | normal_661.wav,0 664 | normal_662.wav,0 665 | normal_663.wav,0 666 | normal_664.wav,0 667 | normal_665.wav,0 668 | normal_666.wav,0 669 | normal_667.wav,0 670 | normal_668.wav,0 671 | normal_669.wav,0 672 | normal_670.wav,0 673 | normal_671.wav,0 674 | normal_672.wav,0 675 | normal_673.wav,0 676 | normal_674.wav,0 677 | normal_675.wav,0 678 | normal_676.wav,0 679 | normal_677.wav,0 680 | normal_678.wav,0 681 | normal_679.wav,0 682 | normal_680.wav,0 683 | normal_681.wav,0 684 | normal_682.wav,0 685 | normal_683.wav,0 686 | normal_684.wav,0 687 | normal_685.wav,0 688 | normal_686.wav,0 689 | normal_687.wav,0 690 | normal_688.wav,0 691 | normal_689.wav,0 692 | normal_690.wav,0 693 | normal_691.wav,0 694 | normal_692.wav,0 695 | normal_693.wav,0 696 | normal_694.wav,0 697 | normal_695.wav,0 698 | normal_696.wav,0 699 | normal_697.wav,0 700 | normal_698.wav,0 701 | normal_699.wav,0 702 | normal_700.wav,0 703 | normal_701.wav,0 704 | normal_702.wav,0 705 | normal_703.wav,0 706 | normal_704.wav,0 707 | normal_705.wav,0 708 | normal_706.wav,0 709 | normal_707.wav,0 710 | normal_708.wav,0 711 | normal_709.wav,0 712 | normal_710.wav,0 713 | normal_711.wav,0 714 | normal_712.wav,0 715 | normal_713.wav,0 716 | normal_714.wav,0 717 | normal_715.wav,0 718 | normal_716.wav,0 719 | normal_717.wav,0 720 | normal_718.wav,0 721 | normal_719.wav,0 722 | normal_720.wav,0 723 | normal_721.wav,0 724 | normal_722.wav,0 725 | normal_723.wav,0 726 | normal_724.wav,0 727 | normal_725.wav,0 728 | normal_726.wav,0 729 | normal_727.wav,0 730 | normal_728.wav,0 731 | normal_729.wav,0 732 | normal_730.wav,0 733 | normal_731.wav,0 734 | normal_732.wav,0 735 | normal_733.wav,0 736 | normal_734.wav,0 737 | normal_735.wav,0 738 | normal_736.wav,0 739 | normal_737.wav,0 740 | normal_738.wav,0 741 | normal_739.wav,0 742 | normal_740.wav,0 743 | normal_741.wav,0 744 | normal_742.wav,0 745 | normal_743.wav,0 746 | normal_744.wav,0 747 | normal_745.wav,0 748 | normal_746.wav,0 749 | normal_747.wav,0 750 | normal_748.wav,0 751 | normal_749.wav,0 752 | normal_750.wav,0 753 | normal_751.wav,0 754 | normal_752.wav,0 755 | normal_753.wav,0 756 | normal_754.wav,0 757 | normal_755.wav,0 758 | normal_756.wav,0 759 | normal_757.wav,0 760 | normal_758.wav,0 761 | normal_759.wav,0 762 | normal_760.wav,0 763 | normal_761.wav,0 764 | normal_762.wav,0 765 | normal_763.wav,0 766 | normal_764.wav,0 767 | normal_765.wav,0 768 | normal_766.wav,0 769 | normal_767.wav,0 770 | normal_768.wav,0 771 | normal_769.wav,0 772 | normal_770.wav,0 773 | normal_771.wav,0 774 | normal_772.wav,0 775 | normal_773.wav,0 776 | normal_774.wav,0 777 | normal_775.wav,0 778 | normal_776.wav,0 779 | normal_777.wav,0 780 | normal_778.wav,0 781 | normal_779.wav,0 782 | normal_780.wav,0 783 | normal_781.wav,0 784 | normal_782.wav,0 785 | normal_783.wav,0 786 | normal_784.wav,0 787 | normal_785.wav,0 788 | normal_786.wav,0 789 | normal_787.wav,0 790 | normal_788.wav,0 791 | normal_789.wav,0 792 | normal_790.wav,0 793 | normal_791.wav,0 794 | normal_792.wav,0 795 | normal_793.wav,0 796 | normal_794.wav,0 797 | normal_795.wav,0 798 | normal_796.wav,0 799 | normal_797.wav,0 800 | normal_798.wav,0 801 | normal_799.wav,0 802 | normal_800.wav,0 803 | normal_801.wav,0 804 | normal_802.wav,0 805 | normal_803.wav,0 806 | normal_804.wav,0 807 | normal_805.wav,0 808 | normal_806.wav,0 809 | normal_807.wav,0 810 | normal_808.wav,0 811 | normal_809.wav,0 812 | normal_810.wav,0 813 | normal_811.wav,0 814 | normal_812.wav,0 815 | normal_813.wav,0 816 | normal_814.wav,0 817 | normal_815.wav,0 818 | normal_816.wav,0 819 | normal_817.wav,0 820 | normal_818.wav,0 821 | normal_819.wav,0 822 | normal_820.wav,0 823 | normal_821.wav,0 824 | normal_822.wav,0 825 | normal_823.wav,0 826 | normal_824.wav,0 827 | normal_825.wav,0 828 | normal_826.wav,0 829 | normal_827.wav,0 830 | normal_828.wav,0 831 | normal_829.wav,0 832 | normal_830.wav,0 833 | normal_831.wav,0 834 | normal_832.wav,0 835 | normal_833.wav,0 836 | normal_834.wav,0 837 | normal_835.wav,0 838 | normal_836.wav,0 839 | normal_837.wav,0 840 | normal_838.wav,0 841 | normal_839.wav,0 842 | normal_840.wav,0 843 | normal_841.wav,0 844 | normal_842.wav,0 845 | normal_843.wav,0 846 | normal_844.wav,0 847 | normal_845.wav,0 848 | normal_846.wav,0 849 | normal_847.wav,0 850 | normal_848.wav,0 851 | normal_849.wav,0 852 | normal_850.wav,0 853 | normal_851.wav,0 854 | normal_852.wav,0 855 | normal_853.wav,0 856 | normal_854.wav,0 857 | normal_855.wav,0 858 | normal_856.wav,0 859 | normal_857.wav,0 860 | normal_858.wav,0 861 | normal_859.wav,0 862 | normal_860.wav,0 863 | normal_861.wav,0 864 | normal_862.wav,0 865 | normal_863.wav,0 866 | normal_864.wav,0 867 | normal_865.wav,0 868 | normal_866.wav,0 869 | normal_867.wav,0 870 | normal_868.wav,0 871 | normal_869.wav,0 872 | normal_870.wav,0 873 | normal_871.wav,0 874 | normal_872.wav,0 875 | normal_873.wav,0 876 | normal_874.wav,0 877 | normal_875.wav,0 878 | normal_876.wav,0 879 | normal_877.wav,0 880 | normal_878.wav,0 881 | normal_879.wav,0 882 | normal_880.wav,0 883 | normal_881.wav,0 884 | normal_882.wav,0 885 | normal_883.wav,0 886 | normal_884.wav,0 887 | normal_885.wav,0 888 | normal_886.wav,0 889 | normal_887.wav,0 890 | normal_888.wav,0 891 | normal_889.wav,0 892 | normal_890.wav,0 893 | normal_891.wav,0 894 | normal_892.wav,0 895 | normal_893.wav,0 896 | normal_894.wav,0 897 | normal_895.wav,0 898 | normal_896.wav,0 899 | normal_897.wav,0 900 | normal_898.wav,0 901 | normal_899.wav,0 902 | normal_900.wav,0 903 | normal_901.wav,0 904 | normal_902.wav,0 905 | normal_903.wav,0 906 | normal_904.wav,0 907 | normal_905.wav,0 908 | normal_906.wav,0 909 | normal_907.wav,0 910 | normal_908.wav,0 911 | normal_909.wav,0 912 | normal_910.wav,0 913 | normal_911.wav,0 914 | normal_912.wav,0 915 | normal_913.wav,0 916 | normal_914.wav,0 917 | normal_915.wav,0 918 | normal_916.wav,0 919 | normal_917.wav,0 920 | normal_918.wav,0 921 | normal_919.wav,0 922 | normal_920.wav,0 923 | normal_921.wav,0 924 | normal_922.wav,0 925 | normal_923.wav,0 926 | normal_924.wav,0 927 | normal_925.wav,0 928 | normal_926.wav,0 929 | normal_927.wav,0 930 | normal_928.wav,0 931 | normal_929.wav,0 932 | normal_930.wav,0 933 | normal_931.wav,0 934 | normal_932.wav,0 935 | normal_933.wav,0 936 | normal_934.wav,0 937 | normal_935.wav,0 938 | normal_936.wav,0 939 | normal_937.wav,0 940 | normal_938.wav,0 941 | normal_939.wav,0 942 | normal_940.wav,0 943 | normal_941.wav,0 944 | normal_942.wav,0 945 | normal_943.wav,0 946 | normal_944.wav,0 947 | normal_945.wav,0 948 | normal_946.wav,0 949 | normal_947.wav,0 950 | normal_948.wav,0 951 | normal_949.wav,0 952 | normal_950.wav,0 953 | normal_951.wav,0 954 | normal_952.wav,0 955 | normal_953.wav,0 956 | normal_954.wav,0 957 | normal_955.wav,0 958 | normal_956.wav,0 959 | normal_957.wav,0 960 | normal_958.wav,0 961 | normal_959.wav,0 962 | normal_960.wav,0 963 | normal_961.wav,0 964 | normal_962.wav,0 965 | normal_963.wav,0 966 | normal_964.wav,0 967 | normal_965.wav,0 968 | normal_966.wav,0 969 | normal_967.wav,0 970 | normal_968.wav,0 971 | normal_969.wav,0 972 | normal_970.wav,0 973 | normal_971.wav,0 974 | normal_972.wav,0 975 | normal_973.wav,0 976 | normal_974.wav,0 977 | normal_975.wav,0 978 | normal_976.wav,0 979 | normal_977.wav,0 980 | normal_978.wav,0 981 | normal_979.wav,0 982 | normal_980.wav,0 983 | normal_981.wav,0 984 | normal_982.wav,0 985 | normal_983.wav,0 986 | normal_984.wav,0 987 | normal_985.wav,0 988 | normal_986.wav,0 989 | normal_987.wav,0 990 | normal_988.wav,0 991 | normal_989.wav,0 992 | normal_990.wav,0 993 | normal_991.wav,0 994 | normal_992.wav,0 995 | normal_993.wav,0 996 | normal_994.wav,0 997 | normal_995.wav,0 998 | normal_996.wav,0 999 | normal_997.wav,0 1000 | normal_998.wav,0 1001 | normal_999.wav,0 1002 | normal_1000.wav,0 1003 | normal_1001.wav,0 1004 | normal_1002.wav,0 1005 | normal_1003.wav,0 1006 | normal_1004.wav,0 1007 | normal_1005.wav,0 1008 | normal_1006.wav,0 1009 | normal_1007.wav,0 1010 | normal_1008.wav,0 1011 | normal_1009.wav,0 1012 | normal_1010.wav,0 1013 | normal_1011.wav,0 1014 | normal_1012.wav,0 1015 | normal_1013.wav,0 1016 | normal_1014.wav,0 1017 | normal_1015.wav,0 1018 | normal_1016.wav,0 1019 | normal_1017.wav,0 1020 | normal_1018.wav,0 1021 | normal_1019.wav,0 1022 | normal_1020.wav,0 1023 | normal_1021.wav,0 1024 | normal_1022.wav,0 1025 | normal_1023.wav,0 1026 | normal_1024.wav,0 1027 | normal_1025.wav,0 1028 | normal_1026.wav,0 1029 | normal_1027.wav,0 1030 | normal_1028.wav,0 1031 | normal_1029.wav,0 1032 | normal_1030.wav,0 1033 | normal_1031.wav,0 1034 | normal_1032.wav,0 1035 | normal_1033.wav,0 1036 | normal_1034.wav,0 1037 | normal_1035.wav,0 1038 | normal_1036.wav,0 1039 | normal_1037.wav,0 1040 | normal_1038.wav,0 1041 | normal_1039.wav,0 1042 | normal_1040.wav,0 1043 | normal_1041.wav,0 1044 | normal_1042.wav,0 1045 | normal_1043.wav,0 1046 | normal_1044.wav,0 1047 | normal_1045.wav,0 1048 | normal_1046.wav,0 1049 | normal_1047.wav,0 1050 | normal_1048.wav,0 1051 | normal_1049.wav,0 1052 | normal_1050.wav,0 1053 | normal_1051.wav,0 1054 | normal_1052.wav,0 1055 | normal_1053.wav,0 1056 | normal_1054.wav,0 1057 | normal_1055.wav,0 1058 | normal_1056.wav,0 1059 | normal_1057.wav,0 1060 | normal_1058.wav,0 1061 | normal_1059.wav,0 1062 | normal_1060.wav,0 1063 | normal_1061.wav,0 1064 | normal_1062.wav,0 1065 | normal_1063.wav,0 1066 | normal_1064.wav,0 1067 | normal_1065.wav,0 1068 | normal_1066.wav,0 1069 | normal_1067.wav,0 1070 | normal_1068.wav,0 1071 | normal_1069.wav,0 1072 | normal_1070.wav,0 1073 | normal_1071.wav,0 1074 | normal_1072.wav,0 1075 | normal_1073.wav,0 1076 | normal_1074.wav,0 1077 | normal_1075.wav,0 1078 | normal_1076.wav,0 1079 | normal_1077.wav,0 1080 | normal_1078.wav,0 1081 | normal_1079.wav,0 1082 | normal_1080.wav,0 1083 | normal_1081.wav,0 1084 | normal_1082.wav,0 1085 | normal_1083.wav,0 1086 | normal_1084.wav,0 1087 | normal_1085.wav,0 1088 | normal_1086.wav,0 1089 | normal_1087.wav,0 1090 | normal_1088.wav,0 1091 | normal_1089.wav,0 1092 | normal_1090.wav,0 1093 | normal_1091.wav,0 1094 | normal_1092.wav,0 1095 | normal_1093.wav,0 1096 | normal_1094.wav,0 1097 | normal_1095.wav,0 1098 | normal_1096.wav,0 1099 | normal_1097.wav,0 1100 | normal_1098.wav,0 1101 | normal_1099.wav,0 1102 | normal_1100.wav,0 1103 | normal_1101.wav,0 1104 | normal_1102.wav,0 1105 | normal_1103.wav,0 1106 | normal_1104.wav,0 1107 | normal_1105.wav,0 1108 | normal_1106.wav,0 1109 | normal_1107.wav,0 1110 | normal_1108.wav,0 1111 | normal_1109.wav,0 1112 | normal_1110.wav,0 1113 | normal_1111.wav,0 1114 | normal_1112.wav,0 1115 | normal_1113.wav,0 1116 | normal_1114.wav,0 1117 | normal_1115.wav,0 1118 | normal_1116.wav,0 1119 | normal_1117.wav,0 1120 | normal_1118.wav,0 1121 | normal_1119.wav,0 1122 | normal_1120.wav,0 1123 | normal_1121.wav,0 1124 | normal_1122.wav,0 1125 | normal_1123.wav,0 1126 | normal_1124.wav,0 1127 | normal_1125.wav,0 1128 | normal_1126.wav,0 1129 | normal_1127.wav,0 1130 | normal_1128.wav,0 1131 | normal_1129.wav,0 1132 | normal_1130.wav,0 1133 | normal_1131.wav,0 1134 | normal_1132.wav,0 1135 | normal_1133.wav,0 1136 | normal_1134.wav,0 1137 | normal_1135.wav,0 1138 | normal_1136.wav,0 1139 | normal_1137.wav,0 1140 | normal_1138.wav,0 1141 | normal_1139.wav,0 1142 | normal_1140.wav,0 1143 | normal_1141.wav,0 1144 | normal_1142.wav,0 1145 | normal_1143.wav,0 1146 | normal_1144.wav,0 1147 | normal_1145.wav,0 1148 | normal_1146.wav,0 1149 | normal_1147.wav,0 1150 | normal_1148.wav,0 1151 | normal_1149.wav,0 1152 | normal_1150.wav,0 1153 | normal_1151.wav,0 1154 | normal_1152.wav,0 1155 | normal_1153.wav,0 1156 | normal_1154.wav,0 1157 | normal_1155.wav,0 1158 | normal_1156.wav,0 1159 | normal_1157.wav,0 1160 | normal_1158.wav,0 1161 | normal_1159.wav,0 1162 | normal_1160.wav,0 1163 | normal_1161.wav,0 1164 | normal_1162.wav,0 1165 | normal_1163.wav,0 1166 | normal_1164.wav,0 1167 | normal_1165.wav,0 1168 | normal_1166.wav,0 1169 | normal_1167.wav,0 1170 | normal_1168.wav,0 1171 | normal_1169.wav,0 1172 | normal_1170.wav,0 1173 | normal_1171.wav,0 1174 | normal_1172.wav,0 1175 | normal_1173.wav,0 1176 | normal_1174.wav,0 1177 | normal_1175.wav,0 1178 | normal_1176.wav,0 1179 | normal_1177.wav,0 1180 | normal_1178.wav,0 1181 | normal_1179.wav,0 1182 | normal_1180.wav,0 1183 | normal_1181.wav,0 1184 | normal_1182.wav,0 1185 | normal_1183.wav,0 1186 | normal_1184.wav,0 1187 | normal_1185.wav,0 1188 | normal_1186.wav,0 1189 | normal_1187.wav,0 1190 | normal_1188.wav,0 1191 | normal_1189.wav,0 1192 | normal_1190.wav,0 1193 | normal_1191.wav,0 1194 | normal_1192.wav,0 1195 | normal_1193.wav,0 1196 | normal_1194.wav,0 1197 | normal_1195.wav,0 1198 | normal_1196.wav,0 1199 | normal_1197.wav,0 1200 | normal_1198.wav,0 1201 | normal_1199.wav,0 1202 | normal_1200.wav,0 1203 | normal_1201.wav,0 1204 | normal_1202.wav,0 1205 | normal_1203.wav,0 1206 | normal_1204.wav,0 1207 | normal_1205.wav,0 1208 | normal_1206.wav,0 1209 | normal_1207.wav,0 1210 | normal_1208.wav,0 1211 | normal_1209.wav,0 1212 | normal_1210.wav,0 1213 | normal_1211.wav,0 1214 | normal_1212.wav,0 1215 | normal_1213.wav,0 1216 | normal_1214.wav,0 1217 | normal_1215.wav,0 1218 | normal_1216.wav,0 1219 | normal_1217.wav,0 1220 | normal_1218.wav,0 1221 | normal_1219.wav,0 1222 | normal_1220.wav,0 1223 | normal_1221.wav,0 1224 | normal_1222.wav,0 1225 | normal_1223.wav,0 1226 | normal_1224.wav,0 1227 | normal_1225.wav,0 1228 | normal_1226.wav,0 1229 | normal_1227.wav,0 1230 | normal_1228.wav,0 1231 | normal_1229.wav,0 1232 | normal_1230.wav,0 1233 | normal_1231.wav,0 1234 | normal_1232.wav,0 1235 | normal_1233.wav,0 1236 | normal_1234.wav,0 1237 | normal_1235.wav,0 1238 | normal_1236.wav,0 1239 | normal_1237.wav,0 1240 | normal_1238.wav,0 1241 | normal_1239.wav,0 1242 | normal_1240.wav,0 1243 | normal_1241.wav,0 1244 | normal_1242.wav,0 1245 | normal_1243.wav,0 1246 | normal_1244.wav,0 1247 | normal_1245.wav,0 1248 | normal_1246.wav,0 1249 | normal_1247.wav,0 1250 | normal_1248.wav,0 1251 | normal_1249.wav,0 1252 | normal_1250.wav,0 1253 | normal_1251.wav,0 1254 | normal_1252.wav,0 1255 | normal_1253.wav,0 1256 | normal_1254.wav,0 1257 | normal_1255.wav,0 1258 | normal_1256.wav,0 1259 | normal_1257.wav,0 1260 | normal_1258.wav,0 1261 | normal_1259.wav,0 1262 | normal_1260.wav,0 1263 | normal_1261.wav,0 1264 | normal_1262.wav,0 1265 | normal_1263.wav,0 1266 | normal_1264.wav,0 1267 | normal_1265.wav,0 1268 | normal_1266.wav,0 1269 | normal_1267.wav,0 1270 | normal_1268.wav,0 1271 | normal_1269.wav,0 1272 | normal_1270.wav,0 1273 | normal_1271.wav,0 1274 | normal_1272.wav,0 1275 | normal_1273.wav,0 1276 | normal_1274.wav,0 1277 | normal_1275.wav,0 1278 | normal_1276.wav,0 1279 | normal_1277.wav,0 1280 | normal_1278.wav,0 1281 | normal_1279.wav,0 1282 | normal_1280.wav,0 1283 | normal_1281.wav,0 1284 | normal_1282.wav,0 1285 | normal_1283.wav,0 1286 | normal_1284.wav,0 1287 | normal_1285.wav,0 1288 | normal_1286.wav,0 1289 | normal_1287.wav,0 1290 | normal_1288.wav,0 1291 | normal_1289.wav,0 1292 | normal_1290.wav,0 1293 | normal_1291.wav,0 1294 | normal_1292.wav,0 1295 | normal_1293.wav,0 1296 | normal_1294.wav,0 1297 | normal_1295.wav,0 1298 | normal_1296.wav,0 1299 | normal_1297.wav,0 1300 | normal_1298.wav,0 1301 | normal_1299.wav,0 1302 | normal_1300.wav,0 1303 | normal_1301.wav,0 1304 | normal_1302.wav,0 1305 | normal_1303.wav,0 1306 | normal_1304.wav,0 1307 | normal_1305.wav,0 1308 | normal_1306.wav,0 1309 | normal_1307.wav,0 1310 | normal_1308.wav,0 1311 | normal_1309.wav,0 1312 | normal_1310.wav,0 1313 | normal_1311.wav,0 1314 | normal_1312.wav,0 1315 | normal_1313.wav,0 1316 | normal_1314.wav,0 1317 | normal_1315.wav,0 1318 | normal_1316.wav,0 1319 | normal_1317.wav,0 1320 | normal_1318.wav,0 1321 | normal_1319.wav,0 1322 | normal_1320.wav,0 1323 | normal_1321.wav,0 1324 | normal_1322.wav,0 1325 | normal_1323.wav,0 1326 | normal_1324.wav,0 1327 | normal_1325.wav,0 1328 | normal_1326.wav,0 1329 | normal_1327.wav,0 1330 | normal_1328.wav,0 1331 | normal_1329.wav,0 1332 | normal_1330.wav,0 1333 | normal_1331.wav,0 1334 | normal_1332.wav,0 1335 | normal_1333.wav,0 1336 | normal_1334.wav,0 1337 | normal_1335.wav,0 1338 | normal_1336.wav,0 1339 | normal_1337.wav,0 1340 | normal_1338.wav,0 1341 | normal_1339.wav,0 1342 | normal_1340.wav,0 1343 | normal_1341.wav,0 1344 | normal_1342.wav,0 1345 | normal_1343.wav,0 1346 | normal_1344.wav,0 1347 | normal_1345.wav,0 1348 | normal_1346.wav,0 1349 | normal_1347.wav,0 1350 | normal_1348.wav,0 1351 | normal_1349.wav,0 1352 | normal_1350.wav,0 1353 | normal_1351.wav,0 1354 | normal_1352.wav,0 1355 | normal_1353.wav,0 1356 | normal_1354.wav,0 1357 | normal_1355.wav,0 1358 | normal_1356.wav,0 1359 | normal_1357.wav,0 1360 | normal_1358.wav,0 1361 | normal_1359.wav,0 1362 | normal_1360.wav,0 1363 | normal_1361.wav,0 1364 | normal_1362.wav,0 1365 | normal_1363.wav,0 1366 | normal_1364.wav,0 1367 | normal_1365.wav,0 1368 | normal_1366.wav,0 1369 | normal_1367.wav,0 1370 | normal_1368.wav,0 1371 | normal_1369.wav,0 1372 | normal_1370.wav,0 1373 | normal_1371.wav,0 1374 | normal_1372.wav,0 1375 | normal_1373.wav,0 1376 | normal_1374.wav,0 1377 | normal_1375.wav,0 1378 | normal_1376.wav,0 1379 | normal_1377.wav,0 1380 | normal_1378.wav,0 1381 | normal_1379.wav,0 1382 | normal_1380.wav,0 1383 | normal_1381.wav,0 1384 | normal_1382.wav,0 1385 | normal_1383.wav,0 1386 | normal_1384.wav,0 1387 | normal_1385.wav,0 1388 | normal_1386.wav,0 1389 | normal_1387.wav,0 1390 | normal_1388.wav,0 1391 | normal_1389.wav,0 1392 | normal_1390.wav,0 1393 | normal_1391.wav,0 1394 | normal_1392.wav,0 1395 | normal_1393.wav,0 1396 | normal_1394.wav,0 1397 | normal_1395.wav,0 1398 | normal_1396.wav,0 1399 | normal_1397.wav,0 1400 | normal_1398.wav,0 1401 | normal_1399.wav,0 1402 | normal_1400.wav,0 1403 | normal_1401.wav,0 1404 | normal_1402.wav,0 1405 | normal_1403.wav,0 1406 | normal_1404.wav,0 1407 | normal_1405.wav,0 1408 | normal_1406.wav,0 1409 | normal_1407.wav,0 1410 | normal_1408.wav,0 1411 | normal_1409.wav,0 1412 | normal_1410.wav,0 1413 | normal_1411.wav,0 1414 | normal_1412.wav,0 1415 | normal_1413.wav,0 1416 | normal_1414.wav,0 1417 | normal_1415.wav,0 1418 | normal_1416.wav,0 1419 | normal_1417.wav,0 1420 | normal_1418.wav,0 1421 | normal_1419.wav,0 1422 | normal_1420.wav,0 1423 | normal_1421.wav,0 1424 | normal_1422.wav,0 1425 | normal_1423.wav,0 1426 | normal_1424.wav,0 1427 | normal_1425.wav,0 1428 | normal_1426.wav,0 1429 | normal_1427.wav,0 1430 | normal_1428.wav,0 1431 | normal_1429.wav,0 1432 | normal_1430.wav,0 1433 | normal_1431.wav,0 1434 | normal_1432.wav,0 1435 | normal_1433.wav,0 1436 | normal_1434.wav,0 1437 | normal_1435.wav,0 1438 | normal_1436.wav,0 1439 | normal_1437.wav,0 1440 | normal_1438.wav,0 1441 | normal_1439.wav,0 1442 | normal_1440.wav,0 1443 | normal_1441.wav,0 1444 | normal_1442.wav,0 1445 | normal_1443.wav,0 1446 | normal_1444.wav,0 1447 | normal_1445.wav,0 1448 | normal_1446.wav,0 1449 | normal_1447.wav,0 1450 | normal_1448.wav,0 1451 | normal_1449.wav,0 1452 | normal_1450.wav,0 1453 | normal_1451.wav,0 1454 | normal_1452.wav,0 1455 | normal_1453.wav,0 1456 | normal_1454.wav,0 1457 | normal_1455.wav,0 1458 | normal_1456.wav,0 1459 | normal_1457.wav,0 1460 | normal_1458.wav,0 1461 | normal_1459.wav,0 1462 | normal_1460.wav,0 1463 | normal_1461.wav,0 1464 | normal_1462.wav,0 1465 | normal_1463.wav,0 1466 | normal_1464.wav,0 1467 | normal_1465.wav,0 1468 | normal_1466.wav,0 1469 | normal_1467.wav,0 1470 | normal_1468.wav,0 1471 | normal_1469.wav,0 1472 | normal_1470.wav,0 1473 | normal_1471.wav,0 1474 | normal_1472.wav,0 1475 | normal_1473.wav,0 1476 | normal_1474.wav,0 1477 | normal_1475.wav,0 1478 | normal_1476.wav,0 1479 | normal_1477.wav,0 1480 | normal_1478.wav,0 1481 | normal_1479.wav,0 1482 | normal_1480.wav,0 1483 | normal_1481.wav,0 1484 | normal_1482.wav,0 1485 | normal_1483.wav,0 1486 | normal_1484.wav,0 1487 | normal_1485.wav,0 1488 | normal_1486.wav,0 1489 | normal_1487.wav,0 1490 | normal_1488.wav,0 1491 | normal_1489.wav,0 1492 | normal_1490.wav,0 1493 | normal_1491.wav,0 1494 | normal_1492.wav,0 1495 | normal_1493.wav,0 1496 | normal_1494.wav,0 1497 | normal_1495.wav,0 1498 | normal_1496.wav,0 1499 | normal_1497.wav,0 1500 | normal_1498.wav,0 1501 | normal_1499.wav,0 1502 | normal_1500.wav,0 1503 | normal_1501.wav,0 1504 | normal_1502.wav,0 1505 | normal_1503.wav,0 1506 | normal_1504.wav,0 1507 | normal_1505.wav,0 1508 | normal_1506.wav,0 1509 | normal_1507.wav,0 1510 | normal_1508.wav,0 1511 | normal_1509.wav,0 1512 | normal_1510.wav,0 1513 | normal_1511.wav,0 1514 | normal_1512.wav,0 1515 | normal_1513.wav,0 1516 | normal_1514.wav,0 1517 | normal_1515.wav,0 1518 | normal_1516.wav,0 1519 | normal_1517.wav,0 1520 | normal_1518.wav,0 1521 | normal_1519.wav,0 1522 | normal_1520.wav,0 1523 | normal_1521.wav,0 1524 | normal_1522.wav,0 1525 | normal_1523.wav,0 1526 | normal_1524.wav,0 1527 | normal_1525.wav,0 1528 | normal_1526.wav,0 1529 | normal_1527.wav,0 1530 | normal_1528.wav,0 1531 | normal_1529.wav,0 1532 | normal_1530.wav,0 1533 | normal_1531.wav,0 1534 | normal_1532.wav,0 1535 | normal_1533.wav,0 1536 | normal_1534.wav,0 1537 | normal_1535.wav,0 1538 | normal_1536.wav,0 1539 | normal_1537.wav,0 1540 | normal_1538.wav,0 1541 | normal_1539.wav,0 1542 | normal_1540.wav,0 1543 | normal_1541.wav,0 1544 | normal_1542.wav,0 1545 | normal_1543.wav,0 1546 | normal_1544.wav,0 1547 | normal_1545.wav,0 1548 | normal_1546.wav,0 1549 | normal_1547.wav,0 1550 | normal_1548.wav,0 1551 | normal_1549.wav,0 1552 | normal_1550.wav,0 1553 | normal_1551.wav,0 1554 | normal_1552.wav,0 1555 | normal_1553.wav,0 1556 | normal_1554.wav,0 1557 | normal_1555.wav,0 1558 | normal_1556.wav,0 1559 | normal_1557.wav,0 1560 | normal_1558.wav,0 1561 | normal_1559.wav,0 1562 | normal_1560.wav,0 1563 | normal_1561.wav,0 1564 | normal_1562.wav,0 1565 | normal_1563.wav,0 1566 | normal_1564.wav,0 1567 | normal_1565.wav,0 1568 | normal_1566.wav,0 1569 | normal_1567.wav,0 1570 | normal_1568.wav,0 1571 | normal_1569.wav,0 1572 | normal_1570.wav,0 1573 | normal_1571.wav,0 1574 | normal_1572.wav,0 1575 | normal_1573.wav,0 1576 | normal_1574.wav,0 1577 | normal_1575.wav,0 1578 | normal_1576.wav,0 1579 | normal_1577.wav,0 1580 | normal_1578.wav,0 1581 | crackle_0.wav,1 1582 | crackle_1.wav,1 1583 | crackle_2.wav,1 1584 | crackle_3.wav,1 1585 | crackle_4.wav,1 1586 | crackle_5.wav,1 1587 | crackle_6.wav,1 1588 | crackle_7.wav,1 1589 | crackle_8.wav,1 1590 | crackle_9.wav,1 1591 | crackle_10.wav,1 1592 | crackle_11.wav,1 1593 | crackle_12.wav,1 1594 | crackle_13.wav,1 1595 | crackle_14.wav,1 1596 | crackle_15.wav,1 1597 | crackle_16.wav,1 1598 | crackle_17.wav,1 1599 | crackle_18.wav,1 1600 | crackle_19.wav,1 1601 | crackle_20.wav,1 1602 | crackle_21.wav,1 1603 | crackle_22.wav,1 1604 | crackle_23.wav,1 1605 | crackle_24.wav,1 1606 | crackle_25.wav,1 1607 | crackle_26.wav,1 1608 | crackle_27.wav,1 1609 | crackle_28.wav,1 1610 | crackle_29.wav,1 1611 | crackle_30.wav,1 1612 | crackle_31.wav,1 1613 | crackle_32.wav,1 1614 | crackle_33.wav,1 1615 | crackle_34.wav,1 1616 | crackle_35.wav,1 1617 | crackle_36.wav,1 1618 | crackle_37.wav,1 1619 | crackle_38.wav,1 1620 | crackle_39.wav,1 1621 | crackle_40.wav,1 1622 | crackle_41.wav,1 1623 | crackle_42.wav,1 1624 | crackle_43.wav,1 1625 | crackle_44.wav,1 1626 | crackle_45.wav,1 1627 | crackle_46.wav,1 1628 | crackle_47.wav,1 1629 | crackle_48.wav,1 1630 | crackle_49.wav,1 1631 | crackle_50.wav,1 1632 | crackle_51.wav,1 1633 | crackle_52.wav,1 1634 | crackle_53.wav,1 1635 | crackle_54.wav,1 1636 | crackle_55.wav,1 1637 | crackle_56.wav,1 1638 | crackle_57.wav,1 1639 | crackle_58.wav,1 1640 | crackle_59.wav,1 1641 | crackle_60.wav,1 1642 | crackle_61.wav,1 1643 | crackle_62.wav,1 1644 | crackle_63.wav,1 1645 | crackle_64.wav,1 1646 | crackle_65.wav,1 1647 | crackle_66.wav,1 1648 | crackle_67.wav,1 1649 | crackle_68.wav,1 1650 | crackle_69.wav,1 1651 | crackle_70.wav,1 1652 | crackle_71.wav,1 1653 | crackle_72.wav,1 1654 | crackle_73.wav,1 1655 | crackle_74.wav,1 1656 | crackle_75.wav,1 1657 | crackle_76.wav,1 1658 | crackle_77.wav,1 1659 | crackle_78.wav,1 1660 | crackle_79.wav,1 1661 | crackle_80.wav,1 1662 | crackle_81.wav,1 1663 | crackle_82.wav,1 1664 | crackle_83.wav,1 1665 | crackle_84.wav,1 1666 | crackle_85.wav,1 1667 | crackle_86.wav,1 1668 | crackle_87.wav,1 1669 | crackle_88.wav,1 1670 | crackle_89.wav,1 1671 | crackle_90.wav,1 1672 | crackle_91.wav,1 1673 | crackle_92.wav,1 1674 | crackle_93.wav,1 1675 | crackle_94.wav,1 1676 | crackle_95.wav,1 1677 | crackle_96.wav,1 1678 | crackle_97.wav,1 1679 | crackle_98.wav,1 1680 | crackle_99.wav,1 1681 | crackle_100.wav,1 1682 | crackle_101.wav,1 1683 | crackle_102.wav,1 1684 | crackle_103.wav,1 1685 | crackle_104.wav,1 1686 | crackle_105.wav,1 1687 | crackle_106.wav,1 1688 | crackle_107.wav,1 1689 | crackle_108.wav,1 1690 | crackle_109.wav,1 1691 | crackle_110.wav,1 1692 | crackle_111.wav,1 1693 | crackle_112.wav,1 1694 | crackle_113.wav,1 1695 | crackle_114.wav,1 1696 | crackle_115.wav,1 1697 | crackle_116.wav,1 1698 | crackle_117.wav,1 1699 | crackle_118.wav,1 1700 | crackle_119.wav,1 1701 | crackle_120.wav,1 1702 | crackle_121.wav,1 1703 | crackle_122.wav,1 1704 | crackle_123.wav,1 1705 | crackle_124.wav,1 1706 | crackle_125.wav,1 1707 | crackle_126.wav,1 1708 | crackle_127.wav,1 1709 | crackle_128.wav,1 1710 | crackle_129.wav,1 1711 | crackle_130.wav,1 1712 | crackle_131.wav,1 1713 | crackle_132.wav,1 1714 | crackle_133.wav,1 1715 | crackle_134.wav,1 1716 | crackle_135.wav,1 1717 | crackle_136.wav,1 1718 | crackle_137.wav,1 1719 | crackle_138.wav,1 1720 | crackle_139.wav,1 1721 | crackle_140.wav,1 1722 | crackle_141.wav,1 1723 | crackle_142.wav,1 1724 | crackle_143.wav,1 1725 | crackle_144.wav,1 1726 | crackle_145.wav,1 1727 | crackle_146.wav,1 1728 | crackle_147.wav,1 1729 | crackle_148.wav,1 1730 | crackle_149.wav,1 1731 | crackle_150.wav,1 1732 | crackle_151.wav,1 1733 | crackle_152.wav,1 1734 | crackle_153.wav,1 1735 | crackle_154.wav,1 1736 | crackle_155.wav,1 1737 | crackle_156.wav,1 1738 | crackle_157.wav,1 1739 | crackle_158.wav,1 1740 | crackle_159.wav,1 1741 | crackle_160.wav,1 1742 | crackle_161.wav,1 1743 | crackle_162.wav,1 1744 | crackle_163.wav,1 1745 | crackle_164.wav,1 1746 | crackle_165.wav,1 1747 | crackle_166.wav,1 1748 | crackle_167.wav,1 1749 | crackle_168.wav,1 1750 | crackle_169.wav,1 1751 | crackle_170.wav,1 1752 | crackle_171.wav,1 1753 | crackle_172.wav,1 1754 | crackle_173.wav,1 1755 | crackle_174.wav,1 1756 | crackle_175.wav,1 1757 | crackle_176.wav,1 1758 | crackle_177.wav,1 1759 | crackle_178.wav,1 1760 | crackle_179.wav,1 1761 | crackle_180.wav,1 1762 | crackle_181.wav,1 1763 | crackle_182.wav,1 1764 | crackle_183.wav,1 1765 | crackle_184.wav,1 1766 | crackle_185.wav,1 1767 | crackle_186.wav,1 1768 | crackle_187.wav,1 1769 | crackle_188.wav,1 1770 | crackle_189.wav,1 1771 | crackle_190.wav,1 1772 | crackle_191.wav,1 1773 | crackle_192.wav,1 1774 | crackle_193.wav,1 1775 | crackle_194.wav,1 1776 | crackle_195.wav,1 1777 | crackle_196.wav,1 1778 | crackle_197.wav,1 1779 | crackle_198.wav,1 1780 | crackle_199.wav,1 1781 | crackle_200.wav,1 1782 | crackle_201.wav,1 1783 | crackle_202.wav,1 1784 | crackle_203.wav,1 1785 | crackle_204.wav,1 1786 | crackle_205.wav,1 1787 | crackle_206.wav,1 1788 | crackle_207.wav,1 1789 | crackle_208.wav,1 1790 | crackle_209.wav,1 1791 | crackle_210.wav,1 1792 | crackle_211.wav,1 1793 | crackle_212.wav,1 1794 | crackle_213.wav,1 1795 | crackle_214.wav,1 1796 | crackle_215.wav,1 1797 | crackle_216.wav,1 1798 | crackle_217.wav,1 1799 | crackle_218.wav,1 1800 | crackle_219.wav,1 1801 | crackle_220.wav,1 1802 | crackle_221.wav,1 1803 | crackle_222.wav,1 1804 | crackle_223.wav,1 1805 | crackle_224.wav,1 1806 | crackle_225.wav,1 1807 | crackle_226.wav,1 1808 | crackle_227.wav,1 1809 | crackle_228.wav,1 1810 | crackle_229.wav,1 1811 | crackle_230.wav,1 1812 | crackle_231.wav,1 1813 | crackle_232.wav,1 1814 | crackle_233.wav,1 1815 | crackle_234.wav,1 1816 | crackle_235.wav,1 1817 | crackle_236.wav,1 1818 | crackle_237.wav,1 1819 | crackle_238.wav,1 1820 | crackle_239.wav,1 1821 | crackle_240.wav,1 1822 | crackle_241.wav,1 1823 | crackle_242.wav,1 1824 | crackle_243.wav,1 1825 | crackle_244.wav,1 1826 | crackle_245.wav,1 1827 | crackle_246.wav,1 1828 | crackle_247.wav,1 1829 | crackle_248.wav,1 1830 | crackle_249.wav,1 1831 | crackle_250.wav,1 1832 | crackle_251.wav,1 1833 | crackle_252.wav,1 1834 | crackle_253.wav,1 1835 | crackle_254.wav,1 1836 | crackle_255.wav,1 1837 | crackle_256.wav,1 1838 | crackle_257.wav,1 1839 | crackle_258.wav,1 1840 | crackle_259.wav,1 1841 | crackle_260.wav,1 1842 | crackle_261.wav,1 1843 | crackle_262.wav,1 1844 | crackle_263.wav,1 1845 | crackle_264.wav,1 1846 | crackle_265.wav,1 1847 | crackle_266.wav,1 1848 | crackle_267.wav,1 1849 | crackle_268.wav,1 1850 | crackle_269.wav,1 1851 | crackle_270.wav,1 1852 | crackle_271.wav,1 1853 | crackle_272.wav,1 1854 | crackle_273.wav,1 1855 | crackle_274.wav,1 1856 | crackle_275.wav,1 1857 | crackle_276.wav,1 1858 | crackle_277.wav,1 1859 | crackle_278.wav,1 1860 | crackle_279.wav,1 1861 | crackle_280.wav,1 1862 | crackle_281.wav,1 1863 | crackle_282.wav,1 1864 | crackle_283.wav,1 1865 | crackle_284.wav,1 1866 | crackle_285.wav,1 1867 | crackle_286.wav,1 1868 | crackle_287.wav,1 1869 | crackle_288.wav,1 1870 | crackle_289.wav,1 1871 | crackle_290.wav,1 1872 | crackle_291.wav,1 1873 | crackle_292.wav,1 1874 | crackle_293.wav,1 1875 | crackle_294.wav,1 1876 | crackle_295.wav,1 1877 | crackle_296.wav,1 1878 | crackle_297.wav,1 1879 | crackle_298.wav,1 1880 | crackle_299.wav,1 1881 | crackle_300.wav,1 1882 | crackle_301.wav,1 1883 | crackle_302.wav,1 1884 | crackle_303.wav,1 1885 | crackle_304.wav,1 1886 | crackle_305.wav,1 1887 | crackle_306.wav,1 1888 | crackle_307.wav,1 1889 | crackle_308.wav,1 1890 | crackle_309.wav,1 1891 | crackle_310.wav,1 1892 | crackle_311.wav,1 1893 | crackle_312.wav,1 1894 | crackle_313.wav,1 1895 | crackle_314.wav,1 1896 | crackle_315.wav,1 1897 | crackle_316.wav,1 1898 | crackle_317.wav,1 1899 | crackle_318.wav,1 1900 | crackle_319.wav,1 1901 | crackle_320.wav,1 1902 | crackle_321.wav,1 1903 | crackle_322.wav,1 1904 | crackle_323.wav,1 1905 | crackle_324.wav,1 1906 | crackle_325.wav,1 1907 | crackle_326.wav,1 1908 | crackle_327.wav,1 1909 | crackle_328.wav,1 1910 | crackle_329.wav,1 1911 | crackle_330.wav,1 1912 | crackle_331.wav,1 1913 | crackle_332.wav,1 1914 | crackle_333.wav,1 1915 | crackle_334.wav,1 1916 | crackle_335.wav,1 1917 | crackle_336.wav,1 1918 | crackle_337.wav,1 1919 | crackle_338.wav,1 1920 | crackle_339.wav,1 1921 | crackle_340.wav,1 1922 | crackle_341.wav,1 1923 | crackle_342.wav,1 1924 | crackle_343.wav,1 1925 | crackle_344.wav,1 1926 | crackle_345.wav,1 1927 | crackle_346.wav,1 1928 | crackle_347.wav,1 1929 | crackle_348.wav,1 1930 | crackle_349.wav,1 1931 | crackle_350.wav,1 1932 | crackle_351.wav,1 1933 | crackle_352.wav,1 1934 | crackle_353.wav,1 1935 | crackle_354.wav,1 1936 | crackle_355.wav,1 1937 | crackle_356.wav,1 1938 | crackle_357.wav,1 1939 | crackle_358.wav,1 1940 | crackle_359.wav,1 1941 | crackle_360.wav,1 1942 | crackle_361.wav,1 1943 | crackle_362.wav,1 1944 | crackle_363.wav,1 1945 | crackle_364.wav,1 1946 | crackle_365.wav,1 1947 | crackle_366.wav,1 1948 | crackle_367.wav,1 1949 | crackle_368.wav,1 1950 | crackle_369.wav,1 1951 | crackle_370.wav,1 1952 | crackle_371.wav,1 1953 | crackle_372.wav,1 1954 | crackle_373.wav,1 1955 | crackle_374.wav,1 1956 | crackle_375.wav,1 1957 | crackle_376.wav,1 1958 | crackle_377.wav,1 1959 | crackle_378.wav,1 1960 | crackle_379.wav,1 1961 | crackle_380.wav,1 1962 | crackle_381.wav,1 1963 | crackle_382.wav,1 1964 | crackle_383.wav,1 1965 | crackle_384.wav,1 1966 | crackle_385.wav,1 1967 | crackle_386.wav,1 1968 | crackle_387.wav,1 1969 | crackle_388.wav,1 1970 | crackle_389.wav,1 1971 | crackle_390.wav,1 1972 | crackle_391.wav,1 1973 | crackle_392.wav,1 1974 | crackle_393.wav,1 1975 | crackle_394.wav,1 1976 | crackle_395.wav,1 1977 | crackle_396.wav,1 1978 | crackle_397.wav,1 1979 | crackle_398.wav,1 1980 | crackle_399.wav,1 1981 | crackle_400.wav,1 1982 | crackle_401.wav,1 1983 | crackle_402.wav,1 1984 | crackle_403.wav,1 1985 | crackle_404.wav,1 1986 | crackle_405.wav,1 1987 | crackle_406.wav,1 1988 | crackle_407.wav,1 1989 | crackle_408.wav,1 1990 | crackle_409.wav,1 1991 | crackle_410.wav,1 1992 | crackle_411.wav,1 1993 | crackle_412.wav,1 1994 | crackle_413.wav,1 1995 | crackle_414.wav,1 1996 | crackle_415.wav,1 1997 | crackle_416.wav,1 1998 | crackle_417.wav,1 1999 | crackle_418.wav,1 2000 | crackle_419.wav,1 2001 | crackle_420.wav,1 2002 | crackle_421.wav,1 2003 | crackle_422.wav,1 2004 | crackle_423.wav,1 2005 | crackle_424.wav,1 2006 | crackle_425.wav,1 2007 | crackle_426.wav,1 2008 | crackle_427.wav,1 2009 | crackle_428.wav,1 2010 | crackle_429.wav,1 2011 | crackle_430.wav,1 2012 | crackle_431.wav,1 2013 | crackle_432.wav,1 2014 | crackle_433.wav,1 2015 | crackle_434.wav,1 2016 | crackle_435.wav,1 2017 | crackle_436.wav,1 2018 | crackle_437.wav,1 2019 | crackle_438.wav,1 2020 | crackle_439.wav,1 2021 | crackle_440.wav,1 2022 | crackle_441.wav,1 2023 | crackle_442.wav,1 2024 | crackle_443.wav,1 2025 | crackle_444.wav,1 2026 | crackle_445.wav,1 2027 | crackle_446.wav,1 2028 | crackle_447.wav,1 2029 | crackle_448.wav,1 2030 | crackle_449.wav,1 2031 | crackle_450.wav,1 2032 | crackle_451.wav,1 2033 | crackle_452.wav,1 2034 | crackle_453.wav,1 2035 | crackle_454.wav,1 2036 | crackle_455.wav,1 2037 | crackle_456.wav,1 2038 | crackle_457.wav,1 2039 | crackle_458.wav,1 2040 | crackle_459.wav,1 2041 | crackle_460.wav,1 2042 | crackle_461.wav,1 2043 | crackle_462.wav,1 2044 | crackle_463.wav,1 2045 | crackle_464.wav,1 2046 | crackle_465.wav,1 2047 | crackle_466.wav,1 2048 | crackle_467.wav,1 2049 | crackle_468.wav,1 2050 | crackle_469.wav,1 2051 | crackle_470.wav,1 2052 | crackle_471.wav,1 2053 | crackle_472.wav,1 2054 | crackle_473.wav,1 2055 | crackle_474.wav,1 2056 | crackle_475.wav,1 2057 | crackle_476.wav,1 2058 | crackle_477.wav,1 2059 | crackle_478.wav,1 2060 | crackle_479.wav,1 2061 | crackle_480.wav,1 2062 | crackle_481.wav,1 2063 | crackle_482.wav,1 2064 | crackle_483.wav,1 2065 | crackle_484.wav,1 2066 | crackle_485.wav,1 2067 | crackle_486.wav,1 2068 | crackle_487.wav,1 2069 | crackle_488.wav,1 2070 | crackle_489.wav,1 2071 | crackle_490.wav,1 2072 | crackle_491.wav,1 2073 | crackle_492.wav,1 2074 | crackle_493.wav,1 2075 | crackle_494.wav,1 2076 | crackle_495.wav,1 2077 | crackle_496.wav,1 2078 | crackle_497.wav,1 2079 | crackle_498.wav,1 2080 | crackle_499.wav,1 2081 | crackle_500.wav,1 2082 | crackle_501.wav,1 2083 | crackle_502.wav,1 2084 | crackle_503.wav,1 2085 | crackle_504.wav,1 2086 | crackle_505.wav,1 2087 | crackle_506.wav,1 2088 | crackle_507.wav,1 2089 | crackle_508.wav,1 2090 | crackle_509.wav,1 2091 | crackle_510.wav,1 2092 | crackle_511.wav,1 2093 | crackle_512.wav,1 2094 | crackle_513.wav,1 2095 | crackle_514.wav,1 2096 | crackle_515.wav,1 2097 | crackle_516.wav,1 2098 | crackle_517.wav,1 2099 | crackle_518.wav,1 2100 | crackle_519.wav,1 2101 | crackle_520.wav,1 2102 | crackle_521.wav,1 2103 | crackle_522.wav,1 2104 | crackle_523.wav,1 2105 | crackle_524.wav,1 2106 | crackle_525.wav,1 2107 | crackle_526.wav,1 2108 | crackle_527.wav,1 2109 | crackle_528.wav,1 2110 | crackle_529.wav,1 2111 | crackle_530.wav,1 2112 | crackle_531.wav,1 2113 | crackle_532.wav,1 2114 | crackle_533.wav,1 2115 | crackle_534.wav,1 2116 | crackle_535.wav,1 2117 | crackle_536.wav,1 2118 | crackle_537.wav,1 2119 | crackle_538.wav,1 2120 | crackle_539.wav,1 2121 | crackle_540.wav,1 2122 | crackle_541.wav,1 2123 | crackle_542.wav,1 2124 | crackle_543.wav,1 2125 | crackle_544.wav,1 2126 | crackle_545.wav,1 2127 | crackle_546.wav,1 2128 | crackle_547.wav,1 2129 | crackle_548.wav,1 2130 | crackle_549.wav,1 2131 | crackle_550.wav,1 2132 | crackle_551.wav,1 2133 | crackle_552.wav,1 2134 | crackle_553.wav,1 2135 | crackle_554.wav,1 2136 | crackle_555.wav,1 2137 | crackle_556.wav,1 2138 | crackle_557.wav,1 2139 | crackle_558.wav,1 2140 | crackle_559.wav,1 2141 | crackle_560.wav,1 2142 | crackle_561.wav,1 2143 | crackle_562.wav,1 2144 | crackle_563.wav,1 2145 | crackle_564.wav,1 2146 | crackle_565.wav,1 2147 | crackle_566.wav,1 2148 | crackle_567.wav,1 2149 | crackle_568.wav,1 2150 | crackle_569.wav,1 2151 | crackle_570.wav,1 2152 | crackle_571.wav,1 2153 | crackle_572.wav,1 2154 | crackle_573.wav,1 2155 | crackle_574.wav,1 2156 | crackle_575.wav,1 2157 | crackle_576.wav,1 2158 | crackle_577.wav,1 2159 | crackle_578.wav,1 2160 | crackle_579.wav,1 2161 | crackle_580.wav,1 2162 | crackle_581.wav,1 2163 | crackle_582.wav,1 2164 | crackle_583.wav,1 2165 | crackle_584.wav,1 2166 | crackle_585.wav,1 2167 | crackle_586.wav,1 2168 | crackle_587.wav,1 2169 | crackle_588.wav,1 2170 | crackle_589.wav,1 2171 | crackle_590.wav,1 2172 | crackle_591.wav,1 2173 | crackle_592.wav,1 2174 | crackle_593.wav,1 2175 | crackle_594.wav,1 2176 | crackle_595.wav,1 2177 | crackle_596.wav,1 2178 | crackle_597.wav,1 2179 | crackle_598.wav,1 2180 | crackle_599.wav,1 2181 | crackle_600.wav,1 2182 | crackle_601.wav,1 2183 | crackle_602.wav,1 2184 | crackle_603.wav,1 2185 | crackle_604.wav,1 2186 | crackle_605.wav,1 2187 | crackle_606.wav,1 2188 | crackle_607.wav,1 2189 | crackle_608.wav,1 2190 | crackle_609.wav,1 2191 | crackle_610.wav,1 2192 | crackle_611.wav,1 2193 | crackle_612.wav,1 2194 | crackle_613.wav,1 2195 | crackle_614.wav,1 2196 | crackle_615.wav,1 2197 | crackle_616.wav,1 2198 | crackle_617.wav,1 2199 | crackle_618.wav,1 2200 | crackle_619.wav,1 2201 | crackle_620.wav,1 2202 | crackle_621.wav,1 2203 | crackle_622.wav,1 2204 | crackle_623.wav,1 2205 | crackle_624.wav,1 2206 | crackle_625.wav,1 2207 | crackle_626.wav,1 2208 | crackle_627.wav,1 2209 | crackle_628.wav,1 2210 | crackle_629.wav,1 2211 | crackle_630.wav,1 2212 | crackle_631.wav,1 2213 | crackle_632.wav,1 2214 | crackle_633.wav,1 2215 | crackle_634.wav,1 2216 | crackle_635.wav,1 2217 | crackle_636.wav,1 2218 | crackle_637.wav,1 2219 | crackle_638.wav,1 2220 | crackle_639.wav,1 2221 | crackle_640.wav,1 2222 | crackle_641.wav,1 2223 | crackle_642.wav,1 2224 | crackle_643.wav,1 2225 | crackle_644.wav,1 2226 | crackle_645.wav,1 2227 | crackle_646.wav,1 2228 | crackle_647.wav,1 2229 | crackle_648.wav,1 2230 | wheeze_0.wav,2 2231 | wheeze_1.wav,2 2232 | wheeze_2.wav,2 2233 | wheeze_3.wav,2 2234 | wheeze_4.wav,2 2235 | wheeze_5.wav,2 2236 | wheeze_6.wav,2 2237 | wheeze_7.wav,2 2238 | wheeze_8.wav,2 2239 | wheeze_9.wav,2 2240 | wheeze_10.wav,2 2241 | wheeze_11.wav,2 2242 | wheeze_12.wav,2 2243 | wheeze_13.wav,2 2244 | wheeze_14.wav,2 2245 | wheeze_15.wav,2 2246 | wheeze_16.wav,2 2247 | wheeze_17.wav,2 2248 | wheeze_18.wav,2 2249 | wheeze_19.wav,2 2250 | wheeze_20.wav,2 2251 | wheeze_21.wav,2 2252 | wheeze_22.wav,2 2253 | wheeze_23.wav,2 2254 | wheeze_24.wav,2 2255 | wheeze_25.wav,2 2256 | wheeze_26.wav,2 2257 | wheeze_27.wav,2 2258 | wheeze_28.wav,2 2259 | wheeze_29.wav,2 2260 | wheeze_30.wav,2 2261 | wheeze_31.wav,2 2262 | wheeze_32.wav,2 2263 | wheeze_33.wav,2 2264 | wheeze_34.wav,2 2265 | wheeze_35.wav,2 2266 | wheeze_36.wav,2 2267 | wheeze_37.wav,2 2268 | wheeze_38.wav,2 2269 | wheeze_39.wav,2 2270 | wheeze_40.wav,2 2271 | wheeze_41.wav,2 2272 | wheeze_42.wav,2 2273 | wheeze_43.wav,2 2274 | wheeze_44.wav,2 2275 | wheeze_45.wav,2 2276 | wheeze_46.wav,2 2277 | wheeze_47.wav,2 2278 | wheeze_48.wav,2 2279 | wheeze_49.wav,2 2280 | wheeze_50.wav,2 2281 | wheeze_51.wav,2 2282 | wheeze_52.wav,2 2283 | wheeze_53.wav,2 2284 | wheeze_54.wav,2 2285 | wheeze_55.wav,2 2286 | wheeze_56.wav,2 2287 | wheeze_57.wav,2 2288 | wheeze_58.wav,2 2289 | wheeze_59.wav,2 2290 | wheeze_60.wav,2 2291 | wheeze_61.wav,2 2292 | wheeze_62.wav,2 2293 | wheeze_63.wav,2 2294 | wheeze_64.wav,2 2295 | wheeze_65.wav,2 2296 | wheeze_66.wav,2 2297 | wheeze_67.wav,2 2298 | wheeze_68.wav,2 2299 | wheeze_69.wav,2 2300 | wheeze_70.wav,2 2301 | wheeze_71.wav,2 2302 | wheeze_72.wav,2 2303 | wheeze_73.wav,2 2304 | wheeze_74.wav,2 2305 | wheeze_75.wav,2 2306 | wheeze_76.wav,2 2307 | wheeze_77.wav,2 2308 | wheeze_78.wav,2 2309 | wheeze_79.wav,2 2310 | wheeze_80.wav,2 2311 | wheeze_81.wav,2 2312 | wheeze_82.wav,2 2313 | wheeze_83.wav,2 2314 | wheeze_84.wav,2 2315 | wheeze_85.wav,2 2316 | wheeze_86.wav,2 2317 | wheeze_87.wav,2 2318 | wheeze_88.wav,2 2319 | wheeze_89.wav,2 2320 | wheeze_90.wav,2 2321 | wheeze_91.wav,2 2322 | wheeze_92.wav,2 2323 | wheeze_93.wav,2 2324 | wheeze_94.wav,2 2325 | wheeze_95.wav,2 2326 | wheeze_96.wav,2 2327 | wheeze_97.wav,2 2328 | wheeze_98.wav,2 2329 | wheeze_99.wav,2 2330 | wheeze_100.wav,2 2331 | wheeze_101.wav,2 2332 | wheeze_102.wav,2 2333 | wheeze_103.wav,2 2334 | wheeze_104.wav,2 2335 | wheeze_105.wav,2 2336 | wheeze_106.wav,2 2337 | wheeze_107.wav,2 2338 | wheeze_108.wav,2 2339 | wheeze_109.wav,2 2340 | wheeze_110.wav,2 2341 | wheeze_111.wav,2 2342 | wheeze_112.wav,2 2343 | wheeze_113.wav,2 2344 | wheeze_114.wav,2 2345 | wheeze_115.wav,2 2346 | wheeze_116.wav,2 2347 | wheeze_117.wav,2 2348 | wheeze_118.wav,2 2349 | wheeze_119.wav,2 2350 | wheeze_120.wav,2 2351 | wheeze_121.wav,2 2352 | wheeze_122.wav,2 2353 | wheeze_123.wav,2 2354 | wheeze_124.wav,2 2355 | wheeze_125.wav,2 2356 | wheeze_126.wav,2 2357 | wheeze_127.wav,2 2358 | wheeze_128.wav,2 2359 | wheeze_129.wav,2 2360 | wheeze_130.wav,2 2361 | wheeze_131.wav,2 2362 | wheeze_132.wav,2 2363 | wheeze_133.wav,2 2364 | wheeze_134.wav,2 2365 | wheeze_135.wav,2 2366 | wheeze_136.wav,2 2367 | wheeze_137.wav,2 2368 | wheeze_138.wav,2 2369 | wheeze_139.wav,2 2370 | wheeze_140.wav,2 2371 | wheeze_141.wav,2 2372 | wheeze_142.wav,2 2373 | wheeze_143.wav,2 2374 | wheeze_144.wav,2 2375 | wheeze_145.wav,2 2376 | wheeze_146.wav,2 2377 | wheeze_147.wav,2 2378 | wheeze_148.wav,2 2379 | wheeze_149.wav,2 2380 | wheeze_150.wav,2 2381 | wheeze_151.wav,2 2382 | wheeze_152.wav,2 2383 | wheeze_153.wav,2 2384 | wheeze_154.wav,2 2385 | wheeze_155.wav,2 2386 | wheeze_156.wav,2 2387 | wheeze_157.wav,2 2388 | wheeze_158.wav,2 2389 | wheeze_159.wav,2 2390 | wheeze_160.wav,2 2391 | wheeze_161.wav,2 2392 | wheeze_162.wav,2 2393 | wheeze_163.wav,2 2394 | wheeze_164.wav,2 2395 | wheeze_165.wav,2 2396 | wheeze_166.wav,2 2397 | wheeze_167.wav,2 2398 | wheeze_168.wav,2 2399 | wheeze_169.wav,2 2400 | wheeze_170.wav,2 2401 | wheeze_171.wav,2 2402 | wheeze_172.wav,2 2403 | wheeze_173.wav,2 2404 | wheeze_174.wav,2 2405 | wheeze_175.wav,2 2406 | wheeze_176.wav,2 2407 | wheeze_177.wav,2 2408 | wheeze_178.wav,2 2409 | wheeze_179.wav,2 2410 | wheeze_180.wav,2 2411 | wheeze_181.wav,2 2412 | wheeze_182.wav,2 2413 | wheeze_183.wav,2 2414 | wheeze_184.wav,2 2415 | wheeze_185.wav,2 2416 | wheeze_186.wav,2 2417 | wheeze_187.wav,2 2418 | wheeze_188.wav,2 2419 | wheeze_189.wav,2 2420 | wheeze_190.wav,2 2421 | wheeze_191.wav,2 2422 | wheeze_192.wav,2 2423 | wheeze_193.wav,2 2424 | wheeze_194.wav,2 2425 | wheeze_195.wav,2 2426 | wheeze_196.wav,2 2427 | wheeze_197.wav,2 2428 | wheeze_198.wav,2 2429 | wheeze_199.wav,2 2430 | wheeze_200.wav,2 2431 | wheeze_201.wav,2 2432 | wheeze_202.wav,2 2433 | wheeze_203.wav,2 2434 | wheeze_204.wav,2 2435 | wheeze_205.wav,2 2436 | wheeze_206.wav,2 2437 | wheeze_207.wav,2 2438 | wheeze_208.wav,2 2439 | wheeze_209.wav,2 2440 | wheeze_210.wav,2 2441 | wheeze_211.wav,2 2442 | wheeze_212.wav,2 2443 | wheeze_213.wav,2 2444 | wheeze_214.wav,2 2445 | wheeze_215.wav,2 2446 | wheeze_216.wav,2 2447 | wheeze_217.wav,2 2448 | wheeze_218.wav,2 2449 | wheeze_219.wav,2 2450 | wheeze_220.wav,2 2451 | wheeze_221.wav,2 2452 | wheeze_222.wav,2 2453 | wheeze_223.wav,2 2454 | wheeze_224.wav,2 2455 | wheeze_225.wav,2 2456 | wheeze_226.wav,2 2457 | wheeze_227.wav,2 2458 | wheeze_228.wav,2 2459 | wheeze_229.wav,2 2460 | wheeze_230.wav,2 2461 | wheeze_231.wav,2 2462 | wheeze_232.wav,2 2463 | wheeze_233.wav,2 2464 | wheeze_234.wav,2 2465 | wheeze_235.wav,2 2466 | wheeze_236.wav,2 2467 | wheeze_237.wav,2 2468 | wheeze_238.wav,2 2469 | wheeze_239.wav,2 2470 | wheeze_240.wav,2 2471 | wheeze_241.wav,2 2472 | wheeze_242.wav,2 2473 | wheeze_243.wav,2 2474 | wheeze_244.wav,2 2475 | wheeze_245.wav,2 2476 | wheeze_246.wav,2 2477 | wheeze_247.wav,2 2478 | wheeze_248.wav,2 2479 | wheeze_249.wav,2 2480 | wheeze_250.wav,2 2481 | wheeze_251.wav,2 2482 | wheeze_252.wav,2 2483 | wheeze_253.wav,2 2484 | wheeze_254.wav,2 2485 | wheeze_255.wav,2 2486 | wheeze_256.wav,2 2487 | wheeze_257.wav,2 2488 | wheeze_258.wav,2 2489 | wheeze_259.wav,2 2490 | wheeze_260.wav,2 2491 | wheeze_261.wav,2 2492 | wheeze_262.wav,2 2493 | wheeze_263.wav,2 2494 | wheeze_264.wav,2 2495 | wheeze_265.wav,2 2496 | wheeze_266.wav,2 2497 | wheeze_267.wav,2 2498 | wheeze_268.wav,2 2499 | wheeze_269.wav,2 2500 | wheeze_270.wav,2 2501 | wheeze_271.wav,2 2502 | wheeze_272.wav,2 2503 | wheeze_273.wav,2 2504 | wheeze_274.wav,2 2505 | wheeze_275.wav,2 2506 | wheeze_276.wav,2 2507 | wheeze_277.wav,2 2508 | wheeze_278.wav,2 2509 | wheeze_279.wav,2 2510 | wheeze_280.wav,2 2511 | wheeze_281.wav,2 2512 | wheeze_282.wav,2 2513 | wheeze_283.wav,2 2514 | wheeze_284.wav,2 2515 | wheeze_285.wav,2 2516 | wheeze_286.wav,2 2517 | wheeze_287.wav,2 2518 | wheeze_288.wav,2 2519 | wheeze_289.wav,2 2520 | wheeze_290.wav,2 2521 | wheeze_291.wav,2 2522 | wheeze_292.wav,2 2523 | wheeze_293.wav,2 2524 | wheeze_294.wav,2 2525 | wheeze_295.wav,2 2526 | wheeze_296.wav,2 2527 | wheeze_297.wav,2 2528 | wheeze_298.wav,2 2529 | wheeze_299.wav,2 2530 | wheeze_300.wav,2 2531 | wheeze_301.wav,2 2532 | wheeze_302.wav,2 2533 | wheeze_303.wav,2 2534 | wheeze_304.wav,2 2535 | wheeze_305.wav,2 2536 | wheeze_306.wav,2 2537 | wheeze_307.wav,2 2538 | wheeze_308.wav,2 2539 | wheeze_309.wav,2 2540 | wheeze_310.wav,2 2541 | wheeze_311.wav,2 2542 | wheeze_312.wav,2 2543 | wheeze_313.wav,2 2544 | wheeze_314.wav,2 2545 | wheeze_315.wav,2 2546 | wheeze_316.wav,2 2547 | wheeze_317.wav,2 2548 | wheeze_318.wav,2 2549 | wheeze_319.wav,2 2550 | wheeze_320.wav,2 2551 | wheeze_321.wav,2 2552 | wheeze_322.wav,2 2553 | wheeze_323.wav,2 2554 | wheeze_324.wav,2 2555 | wheeze_325.wav,2 2556 | wheeze_326.wav,2 2557 | wheeze_327.wav,2 2558 | wheeze_328.wav,2 2559 | wheeze_329.wav,2 2560 | wheeze_330.wav,2 2561 | wheeze_331.wav,2 2562 | wheeze_332.wav,2 2563 | wheeze_333.wav,2 2564 | wheeze_334.wav,2 2565 | wheeze_335.wav,2 2566 | wheeze_336.wav,2 2567 | wheeze_337.wav,2 2568 | wheeze_338.wav,2 2569 | wheeze_339.wav,2 2570 | wheeze_340.wav,2 2571 | wheeze_341.wav,2 2572 | wheeze_342.wav,2 2573 | wheeze_343.wav,2 2574 | wheeze_344.wav,2 2575 | wheeze_345.wav,2 2576 | wheeze_346.wav,2 2577 | wheeze_347.wav,2 2578 | wheeze_348.wav,2 2579 | wheeze_349.wav,2 2580 | wheeze_350.wav,2 2581 | wheeze_351.wav,2 2582 | wheeze_352.wav,2 2583 | wheeze_353.wav,2 2584 | wheeze_354.wav,2 2585 | wheeze_355.wav,2 2586 | wheeze_356.wav,2 2587 | wheeze_357.wav,2 2588 | wheeze_358.wav,2 2589 | wheeze_359.wav,2 2590 | wheeze_360.wav,2 2591 | wheeze_361.wav,2 2592 | wheeze_362.wav,2 2593 | wheeze_363.wav,2 2594 | wheeze_364.wav,2 2595 | wheeze_365.wav,2 2596 | wheeze_366.wav,2 2597 | wheeze_367.wav,2 2598 | wheeze_368.wav,2 2599 | wheeze_369.wav,2 2600 | wheeze_370.wav,2 2601 | wheeze_371.wav,2 2602 | wheeze_372.wav,2 2603 | wheeze_373.wav,2 2604 | wheeze_374.wav,2 2605 | wheeze_375.wav,2 2606 | wheeze_376.wav,2 2607 | wheeze_377.wav,2 2608 | wheeze_378.wav,2 2609 | wheeze_379.wav,2 2610 | wheeze_380.wav,2 2611 | wheeze_381.wav,2 2612 | wheeze_382.wav,2 2613 | wheeze_383.wav,2 2614 | wheeze_384.wav,2 2615 | c_w_0.wav,3 2616 | c_w_1.wav,3 2617 | c_w_2.wav,3 2618 | c_w_3.wav,3 2619 | c_w_4.wav,3 2620 | c_w_5.wav,3 2621 | c_w_6.wav,3 2622 | c_w_7.wav,3 2623 | c_w_8.wav,3 2624 | c_w_9.wav,3 2625 | c_w_10.wav,3 2626 | c_w_11.wav,3 2627 | c_w_12.wav,3 2628 | c_w_13.wav,3 2629 | c_w_14.wav,3 2630 | c_w_15.wav,3 2631 | c_w_16.wav,3 2632 | c_w_17.wav,3 2633 | c_w_18.wav,3 2634 | c_w_19.wav,3 2635 | c_w_20.wav,3 2636 | c_w_21.wav,3 2637 | c_w_22.wav,3 2638 | c_w_23.wav,3 2639 | c_w_24.wav,3 2640 | c_w_25.wav,3 2641 | c_w_26.wav,3 2642 | c_w_27.wav,3 2643 | c_w_28.wav,3 2644 | c_w_29.wav,3 2645 | c_w_30.wav,3 2646 | c_w_31.wav,3 2647 | c_w_32.wav,3 2648 | c_w_33.wav,3 2649 | c_w_34.wav,3 2650 | c_w_35.wav,3 2651 | c_w_36.wav,3 2652 | c_w_37.wav,3 2653 | c_w_38.wav,3 2654 | c_w_39.wav,3 2655 | c_w_40.wav,3 2656 | c_w_41.wav,3 2657 | c_w_42.wav,3 2658 | c_w_43.wav,3 2659 | c_w_44.wav,3 2660 | c_w_45.wav,3 2661 | c_w_46.wav,3 2662 | c_w_47.wav,3 2663 | c_w_48.wav,3 2664 | c_w_49.wav,3 2665 | c_w_50.wav,3 2666 | c_w_51.wav,3 2667 | c_w_52.wav,3 2668 | c_w_53.wav,3 2669 | c_w_54.wav,3 2670 | c_w_55.wav,3 2671 | c_w_56.wav,3 2672 | c_w_57.wav,3 2673 | c_w_58.wav,3 2674 | c_w_59.wav,3 2675 | c_w_60.wav,3 2676 | c_w_61.wav,3 2677 | c_w_62.wav,3 2678 | c_w_63.wav,3 2679 | c_w_64.wav,3 2680 | c_w_65.wav,3 2681 | c_w_66.wav,3 2682 | c_w_67.wav,3 2683 | c_w_68.wav,3 2684 | c_w_69.wav,3 2685 | c_w_70.wav,3 2686 | c_w_71.wav,3 2687 | c_w_72.wav,3 2688 | c_w_73.wav,3 2689 | c_w_74.wav,3 2690 | c_w_75.wav,3 2691 | c_w_76.wav,3 2692 | c_w_77.wav,3 2693 | c_w_78.wav,3 2694 | c_w_79.wav,3 2695 | c_w_80.wav,3 2696 | c_w_81.wav,3 2697 | c_w_82.wav,3 2698 | c_w_83.wav,3 2699 | c_w_84.wav,3 2700 | c_w_85.wav,3 2701 | c_w_86.wav,3 2702 | c_w_87.wav,3 2703 | c_w_88.wav,3 2704 | c_w_89.wav,3 2705 | c_w_90.wav,3 2706 | c_w_91.wav,3 2707 | c_w_92.wav,3 2708 | c_w_93.wav,3 2709 | c_w_94.wav,3 2710 | c_w_95.wav,3 2711 | c_w_96.wav,3 2712 | c_w_97.wav,3 2713 | c_w_98.wav,3 2714 | c_w_99.wav,3 2715 | c_w_100.wav,3 2716 | c_w_101.wav,3 2717 | c_w_102.wav,3 2718 | c_w_103.wav,3 2719 | c_w_104.wav,3 2720 | c_w_105.wav,3 2721 | c_w_106.wav,3 2722 | c_w_107.wav,3 2723 | c_w_108.wav,3 2724 | c_w_109.wav,3 2725 | c_w_110.wav,3 2726 | c_w_111.wav,3 2727 | c_w_112.wav,3 2728 | c_w_113.wav,3 2729 | c_w_114.wav,3 2730 | c_w_115.wav,3 2731 | c_w_116.wav,3 2732 | c_w_117.wav,3 2733 | c_w_118.wav,3 2734 | c_w_119.wav,3 2735 | c_w_120.wav,3 2736 | c_w_121.wav,3 2737 | c_w_122.wav,3 2738 | c_w_123.wav,3 2739 | c_w_124.wav,3 2740 | c_w_125.wav,3 2741 | c_w_126.wav,3 2742 | c_w_127.wav,3 2743 | c_w_128.wav,3 2744 | c_w_129.wav,3 2745 | c_w_130.wav,3 2746 | c_w_131.wav,3 2747 | c_w_132.wav,3 2748 | c_w_133.wav,3 2749 | c_w_134.wav,3 2750 | c_w_135.wav,3 2751 | c_w_136.wav,3 2752 | c_w_137.wav,3 2753 | c_w_138.wav,3 2754 | c_w_139.wav,3 2755 | c_w_140.wav,3 2756 | c_w_141.wav,3 2757 | c_w_142.wav,3 2758 | -------------------------------------------------------------------------------- /Creating_Database.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Importing some libraries" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 3, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "import sys\n", 17 | "sys.path.append(\"../\")\n", 18 | "import os\n", 19 | "import math\n", 20 | "import librosa\n", 21 | "import numpy as np\n", 22 | "import pandas as pd\n", 23 | "import soundfile as sf\n", 24 | "from zipfile import ZipFile\n", 25 | "import matplotlib.pyplot as plt\n", 26 | "from scipy.signal import butter, sosfilt\n", 27 | "%matplotlib inline" 28 | ] 29 | }, 30 | { 31 | "attachments": {}, 32 | "cell_type": "markdown", 33 | "metadata": {}, 34 | "source": [ 35 | "# Managing Dataset" 36 | ] 37 | }, 38 | { 39 | "attachments": {}, 40 | "cell_type": "markdown", 41 | "metadata": {}, 42 | "source": [ 43 | "The dataset can be downloaded from this [link](https://bhichallenge.med.auth.gr/sites/default/files/ICBHI_final_database/ICBHI_final_database.zip)" 44 | ] 45 | }, 46 | { 47 | "cell_type": "code", 48 | "execution_count": null, 49 | "metadata": {}, 50 | "outputs": [], 51 | "source": [ 52 | "root = 'ICBHI_final_database/'" 53 | ] 54 | }, 55 | { 56 | "cell_type": "code", 57 | "execution_count": 3, 58 | "metadata": {}, 59 | "outputs": [], 60 | "source": [ 61 | "with ZipFile('ICBHI_final_database.zip', 'r') as zipObj:\n", 62 | " # Extract all the contents of zip file in current directory\n", 63 | " zipObj.extractall(root)\n", 64 | "os.remove('ICBHI_final_database.zip')" 65 | ] 66 | }, 67 | { 68 | "cell_type": "code", 69 | "execution_count": 12, 70 | "metadata": {}, 71 | "outputs": [], 72 | "source": [ 73 | "filenames = [s.split('.')[0] for s in os.listdir(path = root) if '.txt' in s]\n", 74 | "# Just patient info\n", 75 | "filenames = filenames[:920]" 76 | ] 77 | }, 78 | { 79 | "cell_type": "code", 80 | "execution_count": 13, 81 | "metadata": {}, 82 | "outputs": [], 83 | "source": [ 84 | "def Extract_Annotation_Data(file_name, root):\n", 85 | " tokens = file_name.split('_')\n", 86 | " recording_info = pd.DataFrame(data = [tokens], columns = ['Patient number', 'Recording index', 'Chest location','Acquisition mode','Recording equipment'])\n", 87 | " recording_annotations = pd.read_csv(os.path.join(root, file_name + '.txt'), names = ['Start', 'End', 'Crackles', 'Wheezes'], delimiter= '\\t')\n", 88 | " return (recording_info, recording_annotations)" 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "execution_count": 14, 94 | "metadata": {}, 95 | "outputs": [ 96 | { 97 | "data": { 98 | "text/html": [ 99 | "
\n", 100 | "\n", 113 | "\n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | "
Patient numberRecording indexChest locationAcquisition modeRecording equipment
01011b1AlscMeditron
01011b1PrscMeditron
01021b1ArscMeditron
01032b2ArmcLittC2SE
01041b1AlscLitt3200
\n", 167 | "
" 168 | ], 169 | "text/plain": [ 170 | " Patient number Recording index Chest location Acquisition mode \\\n", 171 | "0 101 1b1 Al sc \n", 172 | "0 101 1b1 Pr sc \n", 173 | "0 102 1b1 Ar sc \n", 174 | "0 103 2b2 Ar mc \n", 175 | "0 104 1b1 Al sc \n", 176 | "\n", 177 | " Recording equipment \n", 178 | "0 Meditron \n", 179 | "0 Meditron \n", 180 | "0 Meditron \n", 181 | "0 LittC2SE \n", 182 | "0 Litt3200 " 183 | ] 184 | }, 185 | "execution_count": 14, 186 | "metadata": {}, 187 | "output_type": "execute_result" 188 | } 189 | ], 190 | "source": [ 191 | "i_list = []\n", 192 | "rec_annotations = []\n", 193 | "rec_annotations_dict = {}\n", 194 | "for s in filenames:\n", 195 | " (i,a) = Extract_Annotation_Data(s, root)\n", 196 | " i_list.append(i)\n", 197 | " rec_annotations.append(a)\n", 198 | " rec_annotations_dict[s] = a\n", 199 | "recording_info = pd.concat(i_list, axis = 0)\n", 200 | "recording_info.head()" 201 | ] 202 | }, 203 | { 204 | "cell_type": "code", 205 | "execution_count": 15, 206 | "metadata": {}, 207 | "outputs": [], 208 | "source": [ 209 | "no_label_list = []\n", 210 | "crack_list = []\n", 211 | "wheeze_list = []\n", 212 | "both_sym_list = []\n", 213 | "filename_list = []\n", 214 | "for f in filenames:\n", 215 | " d = rec_annotations_dict[f]\n", 216 | " no_labels = len(d[(d['Crackles'] == 0) & (d['Wheezes'] == 0)].index)\n", 217 | " n_crackles = len(d[(d['Crackles'] == 1) & (d['Wheezes'] == 0)].index)\n", 218 | " n_wheezes = len(d[(d['Crackles'] == 0) & (d['Wheezes'] == 1)].index)\n", 219 | " both_sym = len(d[(d['Crackles'] == 1) & (d['Wheezes'] == 1)].index)\n", 220 | " no_label_list.append(no_labels)\n", 221 | " crack_list.append(n_crackles)\n", 222 | " wheeze_list.append(n_wheezes)\n", 223 | " both_sym_list.append(both_sym)\n", 224 | " filename_list.append(f)" 225 | ] 226 | }, 227 | { 228 | "cell_type": "code", 229 | "execution_count": 16, 230 | "metadata": {}, 231 | "outputs": [ 232 | { 233 | "data": { 234 | "text/html": [ 235 | "
\n", 236 | "\n", 249 | "\n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | "
filenameno labelcrackles onlywheezes onlycrackles and wheezees
0101_1b1_Al_sc_Meditron12000
1101_1b1_Pr_sc_Meditron11000
2102_1b1_Ar_sc_Meditron13000
3103_2b2_Ar_mc_LittC2SE2040
4104_1b1_Al_sc_Litt32006000
\n", 303 | "
" 304 | ], 305 | "text/plain": [ 306 | " filename no label crackles only wheezes only \\\n", 307 | "0 101_1b1_Al_sc_Meditron 12 0 0 \n", 308 | "1 101_1b1_Pr_sc_Meditron 11 0 0 \n", 309 | "2 102_1b1_Ar_sc_Meditron 13 0 0 \n", 310 | "3 103_2b2_Ar_mc_LittC2SE 2 0 4 \n", 311 | "4 104_1b1_Al_sc_Litt3200 6 0 0 \n", 312 | "\n", 313 | " crackles and wheezees \n", 314 | "0 0 \n", 315 | "1 0 \n", 316 | "2 0 \n", 317 | "3 0 \n", 318 | "4 0 " 319 | ] 320 | }, 321 | "execution_count": 16, 322 | "metadata": {}, 323 | "output_type": "execute_result" 324 | } 325 | ], 326 | "source": [ 327 | "file_label_df = pd.DataFrame(data = {'filename':filename_list, 'no label':no_label_list, 'crackles only':crack_list, 'wheezes only':wheeze_list, 'crackles and wheezees':both_sym_list})\n", 328 | "file_label_df.head()" 329 | ] 330 | }, 331 | { 332 | "cell_type": "markdown", 333 | "metadata": {}, 334 | "source": [ 335 | "# Distribution of data classes" 336 | ] 337 | }, 338 | { 339 | "cell_type": "code", 340 | "execution_count": 17, 341 | "metadata": {}, 342 | "outputs": [ 343 | { 344 | "data": { 345 | "text/plain": [ 346 | "filename 101_1b1_Al_sc_Meditron101_1b1_Pr_sc_Meditron10...\n", 347 | "no label 3642\n", 348 | "crackles only 1864\n", 349 | "wheezes only 886\n", 350 | "crackles and wheezees 506\n", 351 | "dtype: object" 352 | ] 353 | }, 354 | "execution_count": 17, 355 | "metadata": {}, 356 | "output_type": "execute_result" 357 | } 358 | ], 359 | "source": [ 360 | "file_label_df.sum()" 361 | ] 362 | }, 363 | { 364 | "attachments": {}, 365 | "cell_type": "markdown", 366 | "metadata": {}, 367 | "source": [ 368 | "### Renaming " 369 | ] 370 | }, 371 | { 372 | "cell_type": "code", 373 | "execution_count": null, 374 | "metadata": {}, 375 | "outputs": [], 376 | "source": [ 377 | "audio, sr = librosa.load('ICBHI_final_database/226_1b1_Pl_sc_LittC2SE.wav', sr=None)\n", 378 | "sf.write('ICBHI_final_database/226_1b1_Pl_sc_Meditron.wav', audio, sr)" 379 | ] 380 | }, 381 | { 382 | "cell_type": "code", 383 | "execution_count": null, 384 | "metadata": {}, 385 | "outputs": [], 386 | "source": [ 387 | "rec_annotations_dict[\"226_1b1_Pl_sc_Meditron\"] = rec_annotations_dict.pop('226_1b1_Pl_sc_LittC2SE')\n", 388 | "file_label_df.iloc[919, file_label_df.columns.get_loc('filename')] = \"226_1b1_Pl_sc_Meditron\"" 389 | ] 390 | }, 391 | { 392 | "cell_type": "code", 393 | "execution_count": 21, 394 | "metadata": {}, 395 | "outputs": [ 396 | { 397 | "data": { 398 | "text/html": [ 399 | "
\n", 400 | "\n", 413 | "\n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | "
filenameidno labelcrackles onlywheezes onlycrackles and wheezees
0101_1b1_Al_sc_Meditron10112000
1101_1b1_Pr_sc_Meditron10111000
2102_1b1_Ar_sc_Meditron10213000
3103_2b2_Ar_mc_LittC2SE1032040
4104_1b1_Al_sc_Litt32001046000
\n", 473 | "
" 474 | ], 475 | "text/plain": [ 476 | " filename id no label crackles only wheezes only \\\n", 477 | "0 101_1b1_Al_sc_Meditron 101 12 0 0 \n", 478 | "1 101_1b1_Pr_sc_Meditron 101 11 0 0 \n", 479 | "2 102_1b1_Ar_sc_Meditron 102 13 0 0 \n", 480 | "3 103_2b2_Ar_mc_LittC2SE 103 2 0 4 \n", 481 | "4 104_1b1_Al_sc_Litt3200 104 6 0 0 \n", 482 | "\n", 483 | " crackles and wheezees \n", 484 | "0 0 \n", 485 | "1 0 \n", 486 | "2 0 \n", 487 | "3 0 \n", 488 | "4 0 " 489 | ] 490 | }, 491 | "execution_count": 21, 492 | "metadata": {}, 493 | "output_type": "execute_result" 494 | } 495 | ], 496 | "source": [ 497 | "file_label_df.insert(1, 'id', recording_info['Patient number'].tolist())\n", 498 | "file_label_df.head()" 499 | ] 500 | }, 501 | { 502 | "cell_type": "markdown", 503 | "metadata": {}, 504 | "source": [ 505 | "## Downloading Train/Test split" 506 | ] 507 | }, 508 | { 509 | "cell_type": "markdown", 510 | "metadata": {}, 511 | "source": [ 512 | "Import subjects information between training/test set (can be found [here](https://bhichallenge.med.auth.gr/sites/default/files/ICBHI_final_database/ICBHI_challenge_train_test.txt))" 513 | ] 514 | }, 515 | { 516 | "cell_type": "code", 517 | "execution_count": 23, 518 | "metadata": {}, 519 | "outputs": [ 520 | { 521 | "data": { 522 | "text/html": [ 523 | "
\n", 524 | "\n", 537 | "\n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | "
filenameset
0101_1b1_Al_sc_Meditrontest
1101_1b1_Pr_sc_Meditrontest
2102_1b1_Ar_sc_Meditrontest
3103_2b2_Ar_mc_LittC2SEtrain
4104_1b1_Al_sc_Litt3200test
\n", 573 | "
" 574 | ], 575 | "text/plain": [ 576 | " filename set\n", 577 | "0 101_1b1_Al_sc_Meditron test\n", 578 | "1 101_1b1_Pr_sc_Meditron test\n", 579 | "2 102_1b1_Ar_sc_Meditron test\n", 580 | "3 103_2b2_Ar_mc_LittC2SE train\n", 581 | "4 104_1b1_Al_sc_Litt3200 test" 582 | ] 583 | }, 584 | "execution_count": 23, 585 | "metadata": {}, 586 | "output_type": "execute_result" 587 | } 588 | ], 589 | "source": [ 590 | "train_test_df = pd.read_csv('/train_test.csv', names=['filename', 'set'])\n", 591 | "train_test_df.head()" 592 | ] 593 | }, 594 | { 595 | "cell_type": "code", 596 | "execution_count": null, 597 | "metadata": {}, 598 | "outputs": [], 599 | "source": [ 600 | "file_label_df = file_label_df.merge(train_test_df, on='filename', how='left')\n", 601 | "file_label_df.head()" 602 | ] 603 | }, 604 | { 605 | "cell_type": "code", 606 | "execution_count": 14, 607 | "metadata": {}, 608 | "outputs": [ 609 | { 610 | "data": { 611 | "text/plain": [ 612 | "filename 0\n", 613 | "id 0\n", 614 | "no label 0\n", 615 | "crackles only 0\n", 616 | "wheezes only 0\n", 617 | "crackles and wheezees 0\n", 618 | "set 0\n", 619 | "dtype: int64" 620 | ] 621 | }, 622 | "execution_count": 14, 623 | "metadata": {}, 624 | "output_type": "execute_result" 625 | } 626 | ], 627 | "source": [ 628 | "file_label_df.isna().sum()" 629 | ] 630 | }, 631 | { 632 | "cell_type": "markdown", 633 | "metadata": {}, 634 | "source": [ 635 | "## Spliting" 636 | ] 637 | }, 638 | { 639 | "cell_type": "code", 640 | "execution_count": 15, 641 | "metadata": {}, 642 | "outputs": [ 643 | { 644 | "data": { 645 | "text/html": [ 646 | "
\n", 647 | "\n", 660 | "\n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | " \n", 702 | " \n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | "
filenameidno labelcrackles onlywheezes onlycrackles and wheezeesset
3103_2b2_Ar_mc_LittC2SE1032040train
10105_1b1_Tc_sc_Meditron1058000train
11106_2b1_Pl_mc_LittC2SE1061800train
12106_2b1_Pr_mc_LittC2SE1062070train
13107_2b3_Al_mc_AKGC417L1071700train
\n", 726 | "
" 727 | ], 728 | "text/plain": [ 729 | " filename id no label crackles only wheezes only \\\n", 730 | "3 103_2b2_Ar_mc_LittC2SE 103 2 0 4 \n", 731 | "10 105_1b1_Tc_sc_Meditron 105 8 0 0 \n", 732 | "11 106_2b1_Pl_mc_LittC2SE 106 1 8 0 \n", 733 | "12 106_2b1_Pr_mc_LittC2SE 106 2 0 7 \n", 734 | "13 107_2b3_Al_mc_AKGC417L 107 1 7 0 \n", 735 | "\n", 736 | " crackles and wheezees set \n", 737 | "3 0 train \n", 738 | "10 0 train \n", 739 | "11 0 train \n", 740 | "12 0 train \n", 741 | "13 0 train " 742 | ] 743 | }, 744 | "execution_count": 15, 745 | "metadata": {}, 746 | "output_type": "execute_result" 747 | } 748 | ], 749 | "source": [ 750 | "train_only = file_label_df[file_label_df['set']=='train']\n", 751 | "train_only.head()" 752 | ] 753 | }, 754 | { 755 | "cell_type": "code", 756 | "execution_count": 16, 757 | "metadata": {}, 758 | "outputs": [ 759 | { 760 | "data": { 761 | "text/plain": [ 762 | "(539, 7)" 763 | ] 764 | }, 765 | "execution_count": 16, 766 | "metadata": {}, 767 | "output_type": "execute_result" 768 | } 769 | ], 770 | "source": [ 771 | "train_only.shape" 772 | ] 773 | }, 774 | { 775 | "cell_type": "markdown", 776 | "metadata": {}, 777 | "source": [ 778 | "### Validation" 779 | ] 780 | }, 781 | { 782 | "cell_type": "code", 783 | "execution_count": 17, 784 | "metadata": {}, 785 | "outputs": [], 786 | "source": [ 787 | "# Patients ID list, you can choose different ones\n", 788 | "val_id = ['112','132','138','163','166','221']" 789 | ] 790 | }, 791 | { 792 | "cell_type": "code", 793 | "execution_count": 18, 794 | "metadata": {}, 795 | "outputs": [ 796 | { 797 | "data": { 798 | "text/html": [ 799 | "
\n", 800 | "\n", 813 | "\n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | "
filenameidno labelcrackles onlywheezes onlycrackles and wheezeesset
55112_1b1_Ar_sc_Meditron11216100train
56112_1b1_Lr_sc_Meditron1121362train
57112_1p1_Ll_sc_Litt32001125050train
58112_1p1_Pl_sc_Litt32001121134train
59112_1p1_Pr_sc_Litt32001121080train
\n", 879 | "
" 880 | ], 881 | "text/plain": [ 882 | " filename id no label crackles only wheezes only \\\n", 883 | "55 112_1b1_Ar_sc_Meditron 112 16 1 0 \n", 884 | "56 112_1b1_Lr_sc_Meditron 112 1 3 6 \n", 885 | "57 112_1p1_Ll_sc_Litt3200 112 5 0 5 \n", 886 | "58 112_1p1_Pl_sc_Litt3200 112 1 1 3 \n", 887 | "59 112_1p1_Pr_sc_Litt3200 112 1 0 8 \n", 888 | "\n", 889 | " crackles and wheezees set \n", 890 | "55 0 train \n", 891 | "56 2 train \n", 892 | "57 0 train \n", 893 | "58 4 train \n", 894 | "59 0 train " 895 | ] 896 | }, 897 | "execution_count": 18, 898 | "metadata": {}, 899 | "output_type": "execute_result" 900 | } 901 | ], 902 | "source": [ 903 | "val_df = train_only.loc[(train_only.id.isin(val_id))]\n", 904 | "val_df.head()" 905 | ] 906 | }, 907 | { 908 | "cell_type": "code", 909 | "execution_count": 19, 910 | "metadata": {}, 911 | "outputs": [ 912 | { 913 | "data": { 914 | "text/plain": [ 915 | "(64, 7)" 916 | ] 917 | }, 918 | "execution_count": 19, 919 | "metadata": {}, 920 | "output_type": "execute_result" 921 | } 922 | ], 923 | "source": [ 924 | "val_df.shape" 925 | ] 926 | }, 927 | { 928 | "cell_type": "markdown", 929 | "metadata": {}, 930 | "source": [ 931 | "### Train" 932 | ] 933 | }, 934 | { 935 | "cell_type": "code", 936 | "execution_count": 20, 937 | "metadata": {}, 938 | "outputs": [ 939 | { 940 | "data": { 941 | "text/html": [ 942 | "
\n", 943 | "\n", 956 | "\n", 957 | " \n", 958 | " \n", 959 | " \n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | " \n", 968 | " \n", 969 | " \n", 970 | " \n", 971 | " \n", 972 | " \n", 973 | " \n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | "
filenameidno labelcrackles onlywheezes onlycrackles and wheezeesset
3103_2b2_Ar_mc_LittC2SE1032040train
10105_1b1_Tc_sc_Meditron1058000train
11106_2b1_Pl_mc_LittC2SE1061800train
12106_2b1_Pr_mc_LittC2SE1062070train
13107_2b3_Al_mc_AKGC417L1071700train
\n", 1022 | "
" 1023 | ], 1024 | "text/plain": [ 1025 | " filename id no label crackles only wheezes only \\\n", 1026 | "3 103_2b2_Ar_mc_LittC2SE 103 2 0 4 \n", 1027 | "10 105_1b1_Tc_sc_Meditron 105 8 0 0 \n", 1028 | "11 106_2b1_Pl_mc_LittC2SE 106 1 8 0 \n", 1029 | "12 106_2b1_Pr_mc_LittC2SE 106 2 0 7 \n", 1030 | "13 107_2b3_Al_mc_AKGC417L 107 1 7 0 \n", 1031 | "\n", 1032 | " crackles and wheezees set \n", 1033 | "3 0 train \n", 1034 | "10 0 train \n", 1035 | "11 0 train \n", 1036 | "12 0 train \n", 1037 | "13 0 train " 1038 | ] 1039 | }, 1040 | "execution_count": 20, 1041 | "metadata": {}, 1042 | "output_type": "execute_result" 1043 | } 1044 | ], 1045 | "source": [ 1046 | "train_df = train_only.drop(val_df.index.values, axis=0)\n", 1047 | "train_df.head()" 1048 | ] 1049 | }, 1050 | { 1051 | "cell_type": "code", 1052 | "execution_count": 21, 1053 | "metadata": {}, 1054 | "outputs": [ 1055 | { 1056 | "data": { 1057 | "text/plain": [ 1058 | "(475, 7)" 1059 | ] 1060 | }, 1061 | "execution_count": 21, 1062 | "metadata": {}, 1063 | "output_type": "execute_result" 1064 | } 1065 | ], 1066 | "source": [ 1067 | "train_df.shape" 1068 | ] 1069 | }, 1070 | { 1071 | "cell_type": "code", 1072 | "execution_count": 22, 1073 | "metadata": {}, 1074 | "outputs": [], 1075 | "source": [ 1076 | "train_df.reset_index(drop=True, inplace=True)\n", 1077 | "val_df.reset_index(drop=True, inplace=True)" 1078 | ] 1079 | }, 1080 | { 1081 | "cell_type": "markdown", 1082 | "metadata": {}, 1083 | "source": [ 1084 | "### Test" 1085 | ] 1086 | }, 1087 | { 1088 | "cell_type": "code", 1089 | "execution_count": 23, 1090 | "metadata": {}, 1091 | "outputs": [], 1092 | "source": [ 1093 | "test_df = file_label_df[file_label_df['set']=='test']" 1094 | ] 1095 | }, 1096 | { 1097 | "cell_type": "code", 1098 | "execution_count": 24, 1099 | "metadata": {}, 1100 | "outputs": [ 1101 | { 1102 | "data": { 1103 | "text/plain": [ 1104 | "(381, 7)" 1105 | ] 1106 | }, 1107 | "execution_count": 24, 1108 | "metadata": {}, 1109 | "output_type": "execute_result" 1110 | } 1111 | ], 1112 | "source": [ 1113 | "test_df.shape" 1114 | ] 1115 | }, 1116 | { 1117 | "cell_type": "code", 1118 | "execution_count": 25, 1119 | "metadata": {}, 1120 | "outputs": [], 1121 | "source": [ 1122 | "test_df.reset_index(drop=True, inplace=True)" 1123 | ] 1124 | }, 1125 | { 1126 | "cell_type": "markdown", 1127 | "metadata": {}, 1128 | "source": [ 1129 | "# Distribution of respiratory cycle lengths" 1130 | ] 1131 | }, 1132 | { 1133 | "cell_type": "code", 1134 | "execution_count": 28, 1135 | "metadata": {}, 1136 | "outputs": [ 1137 | { 1138 | "name": "stdout", 1139 | "output_type": "stream", 1140 | "text": [ 1141 | "longest cycle:16.16\n", 1142 | "shortest cycle:0.20\n", 1143 | "mean cycle length:2.70\n", 1144 | "Number of samples less than 10.00 seconds:6896.00\n", 1145 | "Number of samples higher than 10.00 seconds:2.00\n" 1146 | ] 1147 | }, 1148 | { 1149 | "data": { 1150 | "image/png": "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", 1151 | "text/plain": [ 1152 | "
" 1153 | ] 1154 | }, 1155 | "metadata": {}, 1156 | "output_type": "display_data" 1157 | } 1158 | ], 1159 | "source": [ 1160 | "duration_list = []\n", 1161 | "for i in range(len(rec_annotations)):\n", 1162 | " current = rec_annotations[i]\n", 1163 | " duration = current['End'] - current['Start']\n", 1164 | " duration_list.extend(duration)\n", 1165 | "\n", 1166 | "duration_list = np.array(duration_list)\n", 1167 | "plt.hist(duration_list, bins = 50)\n", 1168 | "print('longest cycle:{:.2f}'.format(max(duration_list)))\n", 1169 | "print('shortest cycle:{:.2f}'.format(min(duration_list)))\n", 1170 | "print('mean cycle length:{:.2f}'.format(np.mean(duration_list)))\n", 1171 | "threshold = 10\n", 1172 | "print('Number of samples less than {:.2f} seconds:{:.2f}'.format(threshold,\n", 1173 | " np.sum(duration_list < threshold)))\n", 1174 | "\n", 1175 | "print('Number of samples higher than {:.2f} seconds:{:.2f}'.format(threshold,\n", 1176 | " np.sum(duration_list > threshold)))" 1177 | ] 1178 | }, 1179 | { 1180 | "cell_type": "markdown", 1181 | "metadata": {}, 1182 | "source": [ 1183 | "# Data preparation utility functions" 1184 | ] 1185 | }, 1186 | { 1187 | "cell_type": "code", 1188 | "execution_count": 27, 1189 | "metadata": {}, 1190 | "outputs": [], 1191 | "source": [ 1192 | "#Used to split each individual sound file into separate sound clips containing one respiratory cycle each\n", 1193 | "#output: [filename, (sample_data:np.array, start:float, end:float, crackles:bool(float), wheezes:bool(float)) (...) ]\n", 1194 | "\n", 1195 | "def read_wav_file(str_filename, target_rate):\n", 1196 | " data, sample_rate = librosa.load(str_filename, sr=None)\n", 1197 | " \n", 1198 | " if (sample_rate != target_rate):\n", 1199 | " data = librosa.resample(y=data, orig_sr=sample_rate, target_sr=target_rate)\n", 1200 | " \n", 1201 | " return (target_rate, data.astype(np.float32))\n", 1202 | "\n", 1203 | "def slice_data(start, end, raw_data, sample_rate):\n", 1204 | " max_ind = len(raw_data) \n", 1205 | " start_ind = min(int(start * sample_rate), max_ind)\n", 1206 | " end_ind = min(int(end * sample_rate), max_ind)\n", 1207 | " return raw_data[start_ind: end_ind]\n", 1208 | "\n", 1209 | "def get_sound_samples(recording_annotations, file_name, root, sample_rate):\n", 1210 | " sample_data = [file_name]\n", 1211 | " (rate, data) = read_wav_file(os.path.join(root, file_name + '.wav'), sample_rate)\n", 1212 | " \n", 1213 | " for i in range(len(recording_annotations.index)):\n", 1214 | " row = recording_annotations.loc[i]\n", 1215 | " start = row['Start']\n", 1216 | " end = row['End']\n", 1217 | " crackles = row['Crackles']\n", 1218 | " wheezes = row['Wheezes']\n", 1219 | " audio_chunk = slice_data(start, end, data, rate)\n", 1220 | " sample_data.append((audio_chunk, start, end, crackles, wheezes))\n", 1221 | " return sample_data\n", 1222 | "\n", 1223 | "#Fits each respiratory cycle into a fixed length audio clip, splits may be performed and zero padding is added if necessary\n", 1224 | "#original:(arr,c,w) -> output:[(arr,c,w),(arr,c,w)]\n", 1225 | "def split_and_pad(original, desiredLength, sampleRate):\n", 1226 | " output_buffer_length = int(desiredLength * sampleRate)\n", 1227 | " soundclip = original[0]\n", 1228 | " n_samples = len(soundclip)\n", 1229 | " total_length = n_samples / sampleRate #length of cycle in seconds\n", 1230 | " n_slices = int(math.ceil(total_length / desiredLength)) #get the minimum number of slices needed\n", 1231 | " samples_per_slice = n_samples // n_slices\n", 1232 | " src_start = 0 #Starting index of the samples to copy from the original buffer\n", 1233 | " output = [] #Holds the resultant slices\n", 1234 | " for i in range(n_slices):\n", 1235 | " src_end = min(src_start + samples_per_slice, n_samples)\n", 1236 | " length = src_end - src_start\n", 1237 | " copy = generate_padded_samples(soundclip[src_start:src_end], output_buffer_length)\n", 1238 | " output.append((copy, original[1], original[2]))\n", 1239 | " src_start += length\n", 1240 | " return output\n", 1241 | "\n", 1242 | "def generate_padded_samples(source, output_length):\n", 1243 | " copy = np.zeros(output_length, dtype = np.float32)\n", 1244 | " src_length = len(source)\n", 1245 | " frac = src_length / output_length\n", 1246 | " if(frac < 0.5):\n", 1247 | " #tile forward sounds to fill empty space\n", 1248 | " cursor = 0\n", 1249 | " while(cursor + src_length) < output_length:\n", 1250 | " copy[cursor:(cursor + src_length)] = source[:]\n", 1251 | " cursor += src_length\n", 1252 | " else:\n", 1253 | " copy[:src_length] = source[:]\n", 1254 | " #\n", 1255 | " return copy\n", 1256 | "\n", 1257 | "# filter funtions, we user bandpass' butterworth filter \n", 1258 | "def bandpass_filter(signal, lowcut=100, highcut=2000, fs=None, order=5):\n", 1259 | " sos = butter(order, [lowcut, highcut], btype='bp', output='sos', fs=fs)\n", 1260 | " signal_filtered = sosfilt(sos, signal)\n", 1261 | " return signal_filtered" 1262 | ] 1263 | }, 1264 | { 1265 | "cell_type": "code", 1266 | "execution_count": 28, 1267 | "metadata": {}, 1268 | "outputs": [], 1269 | "source": [ 1270 | "#Takes a list of respiratory cycles, and splits and pads each cycle into fixed length buffers (determined by desiredLength(seconds))\n", 1271 | "#Then takes the split and padded sample and transforms it into a mel spectrogram\n", 1272 | "\n", 1273 | "def apply_split_and_pad(original, desiredLength, sampleRate):\n", 1274 | " output = []\n", 1275 | " for d in original:\n", 1276 | " \n", 1277 | " lst_result = split_and_pad(d, desiredLength, sampleRate) #Time domain\n", 1278 | " output.extend(lst_result)\n", 1279 | " \n", 1280 | " return output" 1281 | ] 1282 | }, 1283 | { 1284 | "cell_type": "markdown", 1285 | "metadata": {}, 1286 | "source": [ 1287 | "# Utility used to import all samples" 1288 | ] 1289 | }, 1290 | { 1291 | "cell_type": "code", 1292 | "execution_count": 29, 1293 | "metadata": {}, 1294 | "outputs": [], 1295 | "source": [ 1296 | "def extract_all_samples(filenames, annotation_dict, root, target_rate, desired_length):\n", 1297 | " cycle_list = []\n", 1298 | " for file in filenames:\n", 1299 | " data = get_sound_samples(annotation_dict[file], file, root, target_rate)\n", 1300 | " cycles_with_labels = [(d[0], d[3], d[4]) for d in data[1:]]\n", 1301 | " cycle_list.extend(cycles_with_labels)\n", 1302 | " \n", 1303 | " #Sort into respective classes\n", 1304 | " no_labels = [c for c in cycle_list if ((c[1] == 0) & (c[2] == 0))]\n", 1305 | " c_only = [c for c in cycle_list if ((c[1] == 1) & (c[2] == 0))] \n", 1306 | " w_only = [c for c in cycle_list if ((c[1] == 0) & (c[2] == 1))]\n", 1307 | " c_w = [c for c in cycle_list if ((c[1] == 1) & (c[2] == 1))]\n", 1308 | " \n", 1309 | " #Split up cycles into sound clips with fixed lengths so they can be fed into a CNN\n", 1310 | " \n", 1311 | " none = (apply_split_and_pad(no_labels, desired_length, target_rate))\n", 1312 | " \n", 1313 | " c = (apply_split_and_pad(c_only, desired_length, target_rate))\n", 1314 | " \n", 1315 | " w = (apply_split_and_pad(w_only, desired_length, target_rate))\n", 1316 | " \n", 1317 | " c_w = (apply_split_and_pad(c_w, desired_length, target_rate)) \n", 1318 | " \n", 1319 | " dict = {'none':none,'crackles':c,'wheezes':w, 'both':c_w}\n", 1320 | "\n", 1321 | " return dict\n", 1322 | "\n", 1323 | "# Function return number of samples \n", 1324 | "def print_sample_count(src_dict):\n", 1325 | " print('none:{}\\ncrackles:{}\\nwheezes:{}\\nboth:{}'.format(len(src_dict['none']),\n", 1326 | " len(src_dict['crackles']),\n", 1327 | " len(src_dict['wheezes']),\n", 1328 | " len(src_dict['both'])))\n", 1329 | " " 1330 | ] 1331 | }, 1332 | { 1333 | "cell_type": "markdown", 1334 | "metadata": {}, 1335 | "source": [ 1336 | "# Extracting Samples per set " 1337 | ] 1338 | }, 1339 | { 1340 | "cell_type": "code", 1341 | "execution_count": 30, 1342 | "metadata": {}, 1343 | "outputs": [], 1344 | "source": [ 1345 | "# Parameters\n", 1346 | "target_sample_rate = 32000\n", 1347 | "sample_length_seconds = 10" 1348 | ] 1349 | }, 1350 | { 1351 | "cell_type": "code", 1352 | "execution_count": 46, 1353 | "metadata": {}, 1354 | "outputs": [], 1355 | "source": [ 1356 | "# train \n", 1357 | "sample_dict_train = extract_all_samples(train_df.filename.tolist(), rec_annotations_dict, root, target_sample_rate, sample_length_seconds) " 1358 | ] 1359 | }, 1360 | { 1361 | "cell_type": "code", 1362 | "execution_count": 38, 1363 | "metadata": {}, 1364 | "outputs": [], 1365 | "source": [ 1366 | "# test\n", 1367 | "sample_dict_test = extract_all_samples(test_df.filename.tolist(), rec_annotations_dict, root, target_sample_rate, sample_length_seconds) " 1368 | ] 1369 | }, 1370 | { 1371 | "cell_type": "code", 1372 | "execution_count": 31, 1373 | "metadata": {}, 1374 | "outputs": [], 1375 | "source": [ 1376 | "# validation\n", 1377 | "sample_dict_val = extract_all_samples(val_df.filename.tolist(), rec_annotations_dict, root, target_sample_rate, sample_length_seconds) " 1378 | ] 1379 | }, 1380 | { 1381 | "cell_type": "code", 1382 | "execution_count": 163, 1383 | "metadata": {}, 1384 | "outputs": [ 1385 | { 1386 | "name": "stdout", 1387 | "output_type": "stream", 1388 | "text": [ 1389 | "Samples Available\n", 1390 | "[Training set]\n", 1391 | "none:1850\n", 1392 | "crackles:1058\n", 1393 | "wheezes:443\n", 1394 | "both:318\n" 1395 | ] 1396 | } 1397 | ], 1398 | "source": [ 1399 | "print('Samples Available')\n", 1400 | "print('[Training set]')\n", 1401 | "print_sample_count(sample_dict_train)" 1402 | ] 1403 | }, 1404 | { 1405 | "cell_type": "code", 1406 | "execution_count": 164, 1407 | "metadata": {}, 1408 | "outputs": [ 1409 | { 1410 | "name": "stdout", 1411 | "output_type": "stream", 1412 | "text": [ 1413 | "Samples Available\n", 1414 | "[Testing set]\n", 1415 | "none:1579\n", 1416 | "crackles:649\n", 1417 | "wheezes:385\n", 1418 | "both:143\n" 1419 | ] 1420 | } 1421 | ], 1422 | "source": [ 1423 | "print('Samples Available')\n", 1424 | "print('[Testing set]')\n", 1425 | "print_sample_count(sample_dict_test)" 1426 | ] 1427 | }, 1428 | { 1429 | "cell_type": "code", 1430 | "execution_count": 32, 1431 | "metadata": {}, 1432 | "outputs": [ 1433 | { 1434 | "name": "stdout", 1435 | "output_type": "stream", 1436 | "text": [ 1437 | "Samples Available\n", 1438 | "[Validation set]\n", 1439 | "none:215\n", 1440 | "crackles:157\n", 1441 | "wheezes:58\n", 1442 | "both:45\n" 1443 | ] 1444 | } 1445 | ], 1446 | "source": [ 1447 | "print('Samples Available')\n", 1448 | "print('[Validation set]')\n", 1449 | "print_sample_count(sample_dict_val)" 1450 | ] 1451 | }, 1452 | { 1453 | "cell_type": "markdown", 1454 | "metadata": {}, 1455 | "source": [ 1456 | "## Saving wav files" 1457 | ] 1458 | }, 1459 | { 1460 | "attachments": {}, 1461 | "cell_type": "markdown", 1462 | "metadata": {}, 1463 | "source": [ 1464 | "### Saving Train samples" 1465 | ] 1466 | }, 1467 | { 1468 | "cell_type": "code", 1469 | "execution_count": 51, 1470 | "metadata": {}, 1471 | "outputs": [], 1472 | "source": [ 1473 | "train_dir = 'ICBHI/Train'\n", 1474 | "os.makedirs(train_dir, exist_ok=True)\n", 1475 | "train_list = []\n", 1476 | "\n", 1477 | "for sample in ['none', 'crackles', 'wheezes', 'both']:\n", 1478 | " # Saving Normal Samples\n", 1479 | " for i, file in enumerate(sample_dict_train[sample]):\n", 1480 | " name = sample+\"_\"+str(i)+\".wav\"\n", 1481 | " x = file[0]\n", 1482 | " # filtering \n", 1483 | " x_filt = bandpass_filter(x, fs=target_sample_rate)\n", 1484 | " # Saving\n", 1485 | " path = os.path.join(train_dir, name)\n", 1486 | " sf.write(path, x_filt, target_sample_rate)\n", 1487 | " # Creating dictionary for filename and label\n", 1488 | " if sample=='none':\n", 1489 | " train_dict = {'filename':name, 'id':0}\n", 1490 | " elif sample=='crackles':\n", 1491 | " train_dict = {'filename':name, 'id':1}\n", 1492 | " elif sample=='wheezes':\n", 1493 | " train_dict = {'filename':name, 'id':2}\n", 1494 | " else:\n", 1495 | " train_dict = {'filename':name, 'id':3}\n", 1496 | " \n", 1497 | " train_list.append(train_dict)" 1498 | ] 1499 | }, 1500 | { 1501 | "cell_type": "code", 1502 | "execution_count": 52, 1503 | "metadata": {}, 1504 | "outputs": [], 1505 | "source": [ 1506 | "# Creating dataframe for train samples and save It\n", 1507 | "train_samples = pd.DataFrame(train_list, columns = train_dict.keys())\n", 1508 | "train_samples.to_csv(train_dir+'.csv', index=False)" 1509 | ] 1510 | }, 1511 | { 1512 | "attachments": {}, 1513 | "cell_type": "markdown", 1514 | "metadata": {}, 1515 | "source": [ 1516 | "### Saving Test samples" 1517 | ] 1518 | }, 1519 | { 1520 | "cell_type": "code", 1521 | "execution_count": 41, 1522 | "metadata": {}, 1523 | "outputs": [], 1524 | "source": [ 1525 | "# Saving Test samples\n", 1526 | "test_dir = 'ICBHI/Test'\n", 1527 | "os.makedirs(test_dir, exist_ok=True)\n", 1528 | "test_list = []\n", 1529 | "\n", 1530 | "for sample in ['none', 'crackles', 'wheezes', 'both']:\n", 1531 | " for i, file in enumerate(sample_dict_test[sample]):\n", 1532 | " name = sample+\"_\"+str(i)+\".wav\"\n", 1533 | " x = file[0]\n", 1534 | " # filtering \n", 1535 | " x_filt = bandpass_filter(x, fs=target_sample_rate)\n", 1536 | " # Saving\n", 1537 | " path = os.path.join(test_dir, name)\n", 1538 | " sf.write(path, x_filt, target_sample_rate)\n", 1539 | " # Creating dictionary for filename and label\n", 1540 | " if sample=='none':\n", 1541 | " test_dict = {'filename':name, 'id':0}\n", 1542 | " elif sample=='crackles':\n", 1543 | " test_dict = {'filename':name, 'id':1}\n", 1544 | " elif sample=='wheezes':\n", 1545 | " test_dict = {'filename':name, 'id':1}\n", 1546 | " else:\n", 1547 | " test_dict = {'filename':name, 'id':1}\n", 1548 | " \n", 1549 | " test_list.append(test_dict)" 1550 | ] 1551 | }, 1552 | { 1553 | "cell_type": "code", 1554 | "execution_count": 42, 1555 | "metadata": {}, 1556 | "outputs": [], 1557 | "source": [ 1558 | "# Creating dataframe for Test samples and save It \n", 1559 | "test_samples = pd.DataFrame(test_list, columns = test_dict.keys())\n", 1560 | "test_samples.to_csv(test_dir+'.csv', index=False)" 1561 | ] 1562 | }, 1563 | { 1564 | "attachments": {}, 1565 | "cell_type": "markdown", 1566 | "metadata": {}, 1567 | "source": [ 1568 | "### Saving Validation samples" 1569 | ] 1570 | }, 1571 | { 1572 | "cell_type": "code", 1573 | "execution_count": 37, 1574 | "metadata": {}, 1575 | "outputs": [], 1576 | "source": [ 1577 | "# Saving Validation samples\n", 1578 | "val_dir = 'ICBHI/Val'\n", 1579 | "os.makedirs(val_dir, exist_ok=True)\n", 1580 | "val_list = []\n", 1581 | "\n", 1582 | "# Saving Normal Samples\n", 1583 | "for sample in ['none', 'crackles', 'wheezes', 'both']:\n", 1584 | " for i, file in enumerate(sample_dict_val[sample]):\n", 1585 | " name = sample+\"_\"+str(i)+\".wav\"\n", 1586 | " x = file[0]\n", 1587 | " # filtering \n", 1588 | " x_filt = bandpass_filter(x, fs=target_sample_rate)\n", 1589 | " # Saving\n", 1590 | " path = os.path.join(val_dir, name)\n", 1591 | " sf.write(path, x_filt, target_sample_rate)\n", 1592 | " # Creating dictionary for filename and label\n", 1593 | " if sample=='none':\n", 1594 | " val_dict = {'filename':name, 'id':0}\n", 1595 | " elif sample=='crackles':\n", 1596 | " val_dict = {'filename':name, 'id':1}\n", 1597 | " elif sample=='wheezes':\n", 1598 | " val_dict = {'filename':name, 'id':1}\n", 1599 | " else:\n", 1600 | " val_dict = {'filename':name, 'id':1}\n", 1601 | " \n", 1602 | " val_list.append(val_dict)" 1603 | ] 1604 | }, 1605 | { 1606 | "cell_type": "code", 1607 | "execution_count": 36, 1608 | "metadata": {}, 1609 | "outputs": [], 1610 | "source": [ 1611 | "# Creating dataframe for validation samples nd save It \n", 1612 | "val_samples = pd.DataFrame(val_list, columns = val_dict.keys())\n", 1613 | "val_samples.to_csv(val_dir+'.csv', index=False)" 1614 | ] 1615 | }, 1616 | { 1617 | "cell_type": "code", 1618 | "execution_count": null, 1619 | "metadata": {}, 1620 | "outputs": [], 1621 | "source": [ 1622 | "# Removing files\n", 1623 | "os.remove('ICBHI_final_database')" 1624 | ] 1625 | } 1626 | ], 1627 | "metadata": { 1628 | "kernelspec": { 1629 | "display_name": "Python 3.10.4 ('tcc')", 1630 | "language": "python", 1631 | "name": "python3" 1632 | }, 1633 | "language_info": { 1634 | "codemirror_mode": { 1635 | "name": "ipython", 1636 | "version": 3 1637 | }, 1638 | "file_extension": ".py", 1639 | "mimetype": "text/x-python", 1640 | "name": "python", 1641 | "nbconvert_exporter": "python", 1642 | "pygments_lexer": "ipython3", 1643 | "version": "3.10.0" 1644 | }, 1645 | "vscode": { 1646 | "interpreter": { 1647 | "hash": "3b1f3976d9f1d9d0fd208cc8ca0ec295ceaf3eae61f9be2a9afbe480971bda05" 1648 | } 1649 | } 1650 | }, 1651 | "nbformat": 4, 1652 | "nbformat_minor": 1 1653 | } 1654 | --------------------------------------------------------------------------------