├── 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 | " Patient number | \n",
118 | " Recording index | \n",
119 | " Chest location | \n",
120 | " Acquisition mode | \n",
121 | " Recording equipment | \n",
122 | "
\n",
123 | " \n",
124 | " \n",
125 | " \n",
126 | " | 0 | \n",
127 | " 101 | \n",
128 | " 1b1 | \n",
129 | " Al | \n",
130 | " sc | \n",
131 | " Meditron | \n",
132 | "
\n",
133 | " \n",
134 | " | 0 | \n",
135 | " 101 | \n",
136 | " 1b1 | \n",
137 | " Pr | \n",
138 | " sc | \n",
139 | " Meditron | \n",
140 | "
\n",
141 | " \n",
142 | " | 0 | \n",
143 | " 102 | \n",
144 | " 1b1 | \n",
145 | " Ar | \n",
146 | " sc | \n",
147 | " Meditron | \n",
148 | "
\n",
149 | " \n",
150 | " | 0 | \n",
151 | " 103 | \n",
152 | " 2b2 | \n",
153 | " Ar | \n",
154 | " mc | \n",
155 | " LittC2SE | \n",
156 | "
\n",
157 | " \n",
158 | " | 0 | \n",
159 | " 104 | \n",
160 | " 1b1 | \n",
161 | " Al | \n",
162 | " sc | \n",
163 | " Litt3200 | \n",
164 | "
\n",
165 | " \n",
166 | "
\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 | " filename | \n",
254 | " no label | \n",
255 | " crackles only | \n",
256 | " wheezes only | \n",
257 | " crackles and wheezees | \n",
258 | "
\n",
259 | " \n",
260 | " \n",
261 | " \n",
262 | " | 0 | \n",
263 | " 101_1b1_Al_sc_Meditron | \n",
264 | " 12 | \n",
265 | " 0 | \n",
266 | " 0 | \n",
267 | " 0 | \n",
268 | "
\n",
269 | " \n",
270 | " | 1 | \n",
271 | " 101_1b1_Pr_sc_Meditron | \n",
272 | " 11 | \n",
273 | " 0 | \n",
274 | " 0 | \n",
275 | " 0 | \n",
276 | "
\n",
277 | " \n",
278 | " | 2 | \n",
279 | " 102_1b1_Ar_sc_Meditron | \n",
280 | " 13 | \n",
281 | " 0 | \n",
282 | " 0 | \n",
283 | " 0 | \n",
284 | "
\n",
285 | " \n",
286 | " | 3 | \n",
287 | " 103_2b2_Ar_mc_LittC2SE | \n",
288 | " 2 | \n",
289 | " 0 | \n",
290 | " 4 | \n",
291 | " 0 | \n",
292 | "
\n",
293 | " \n",
294 | " | 4 | \n",
295 | " 104_1b1_Al_sc_Litt3200 | \n",
296 | " 6 | \n",
297 | " 0 | \n",
298 | " 0 | \n",
299 | " 0 | \n",
300 | "
\n",
301 | " \n",
302 | "
\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 | " filename | \n",
418 | " id | \n",
419 | " no label | \n",
420 | " crackles only | \n",
421 | " wheezes only | \n",
422 | " crackles and wheezees | \n",
423 | "
\n",
424 | " \n",
425 | " \n",
426 | " \n",
427 | " | 0 | \n",
428 | " 101_1b1_Al_sc_Meditron | \n",
429 | " 101 | \n",
430 | " 12 | \n",
431 | " 0 | \n",
432 | " 0 | \n",
433 | " 0 | \n",
434 | "
\n",
435 | " \n",
436 | " | 1 | \n",
437 | " 101_1b1_Pr_sc_Meditron | \n",
438 | " 101 | \n",
439 | " 11 | \n",
440 | " 0 | \n",
441 | " 0 | \n",
442 | " 0 | \n",
443 | "
\n",
444 | " \n",
445 | " | 2 | \n",
446 | " 102_1b1_Ar_sc_Meditron | \n",
447 | " 102 | \n",
448 | " 13 | \n",
449 | " 0 | \n",
450 | " 0 | \n",
451 | " 0 | \n",
452 | "
\n",
453 | " \n",
454 | " | 3 | \n",
455 | " 103_2b2_Ar_mc_LittC2SE | \n",
456 | " 103 | \n",
457 | " 2 | \n",
458 | " 0 | \n",
459 | " 4 | \n",
460 | " 0 | \n",
461 | "
\n",
462 | " \n",
463 | " | 4 | \n",
464 | " 104_1b1_Al_sc_Litt3200 | \n",
465 | " 104 | \n",
466 | " 6 | \n",
467 | " 0 | \n",
468 | " 0 | \n",
469 | " 0 | \n",
470 | "
\n",
471 | " \n",
472 | "
\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 | " filename | \n",
542 | " set | \n",
543 | "
\n",
544 | " \n",
545 | " \n",
546 | " \n",
547 | " | 0 | \n",
548 | " 101_1b1_Al_sc_Meditron | \n",
549 | " test | \n",
550 | "
\n",
551 | " \n",
552 | " | 1 | \n",
553 | " 101_1b1_Pr_sc_Meditron | \n",
554 | " test | \n",
555 | "
\n",
556 | " \n",
557 | " | 2 | \n",
558 | " 102_1b1_Ar_sc_Meditron | \n",
559 | " test | \n",
560 | "
\n",
561 | " \n",
562 | " | 3 | \n",
563 | " 103_2b2_Ar_mc_LittC2SE | \n",
564 | " train | \n",
565 | "
\n",
566 | " \n",
567 | " | 4 | \n",
568 | " 104_1b1_Al_sc_Litt3200 | \n",
569 | " test | \n",
570 | "
\n",
571 | " \n",
572 | "
\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 | " filename | \n",
665 | " id | \n",
666 | " no label | \n",
667 | " crackles only | \n",
668 | " wheezes only | \n",
669 | " crackles and wheezees | \n",
670 | " set | \n",
671 | "
\n",
672 | " \n",
673 | " \n",
674 | " \n",
675 | " | 3 | \n",
676 | " 103_2b2_Ar_mc_LittC2SE | \n",
677 | " 103 | \n",
678 | " 2 | \n",
679 | " 0 | \n",
680 | " 4 | \n",
681 | " 0 | \n",
682 | " train | \n",
683 | "
\n",
684 | " \n",
685 | " | 10 | \n",
686 | " 105_1b1_Tc_sc_Meditron | \n",
687 | " 105 | \n",
688 | " 8 | \n",
689 | " 0 | \n",
690 | " 0 | \n",
691 | " 0 | \n",
692 | " train | \n",
693 | "
\n",
694 | " \n",
695 | " | 11 | \n",
696 | " 106_2b1_Pl_mc_LittC2SE | \n",
697 | " 106 | \n",
698 | " 1 | \n",
699 | " 8 | \n",
700 | " 0 | \n",
701 | " 0 | \n",
702 | " train | \n",
703 | "
\n",
704 | " \n",
705 | " | 12 | \n",
706 | " 106_2b1_Pr_mc_LittC2SE | \n",
707 | " 106 | \n",
708 | " 2 | \n",
709 | " 0 | \n",
710 | " 7 | \n",
711 | " 0 | \n",
712 | " train | \n",
713 | "
\n",
714 | " \n",
715 | " | 13 | \n",
716 | " 107_2b3_Al_mc_AKGC417L | \n",
717 | " 107 | \n",
718 | " 1 | \n",
719 | " 7 | \n",
720 | " 0 | \n",
721 | " 0 | \n",
722 | " train | \n",
723 | "
\n",
724 | " \n",
725 | "
\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 | " filename | \n",
818 | " id | \n",
819 | " no label | \n",
820 | " crackles only | \n",
821 | " wheezes only | \n",
822 | " crackles and wheezees | \n",
823 | " set | \n",
824 | "
\n",
825 | " \n",
826 | " \n",
827 | " \n",
828 | " | 55 | \n",
829 | " 112_1b1_Ar_sc_Meditron | \n",
830 | " 112 | \n",
831 | " 16 | \n",
832 | " 1 | \n",
833 | " 0 | \n",
834 | " 0 | \n",
835 | " train | \n",
836 | "
\n",
837 | " \n",
838 | " | 56 | \n",
839 | " 112_1b1_Lr_sc_Meditron | \n",
840 | " 112 | \n",
841 | " 1 | \n",
842 | " 3 | \n",
843 | " 6 | \n",
844 | " 2 | \n",
845 | " train | \n",
846 | "
\n",
847 | " \n",
848 | " | 57 | \n",
849 | " 112_1p1_Ll_sc_Litt3200 | \n",
850 | " 112 | \n",
851 | " 5 | \n",
852 | " 0 | \n",
853 | " 5 | \n",
854 | " 0 | \n",
855 | " train | \n",
856 | "
\n",
857 | " \n",
858 | " | 58 | \n",
859 | " 112_1p1_Pl_sc_Litt3200 | \n",
860 | " 112 | \n",
861 | " 1 | \n",
862 | " 1 | \n",
863 | " 3 | \n",
864 | " 4 | \n",
865 | " train | \n",
866 | "
\n",
867 | " \n",
868 | " | 59 | \n",
869 | " 112_1p1_Pr_sc_Litt3200 | \n",
870 | " 112 | \n",
871 | " 1 | \n",
872 | " 0 | \n",
873 | " 8 | \n",
874 | " 0 | \n",
875 | " train | \n",
876 | "
\n",
877 | " \n",
878 | "
\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 | " filename | \n",
961 | " id | \n",
962 | " no label | \n",
963 | " crackles only | \n",
964 | " wheezes only | \n",
965 | " crackles and wheezees | \n",
966 | " set | \n",
967 | "
\n",
968 | " \n",
969 | " \n",
970 | " \n",
971 | " | 3 | \n",
972 | " 103_2b2_Ar_mc_LittC2SE | \n",
973 | " 103 | \n",
974 | " 2 | \n",
975 | " 0 | \n",
976 | " 4 | \n",
977 | " 0 | \n",
978 | " train | \n",
979 | "
\n",
980 | " \n",
981 | " | 10 | \n",
982 | " 105_1b1_Tc_sc_Meditron | \n",
983 | " 105 | \n",
984 | " 8 | \n",
985 | " 0 | \n",
986 | " 0 | \n",
987 | " 0 | \n",
988 | " train | \n",
989 | "
\n",
990 | " \n",
991 | " | 11 | \n",
992 | " 106_2b1_Pl_mc_LittC2SE | \n",
993 | " 106 | \n",
994 | " 1 | \n",
995 | " 8 | \n",
996 | " 0 | \n",
997 | " 0 | \n",
998 | " train | \n",
999 | "
\n",
1000 | " \n",
1001 | " | 12 | \n",
1002 | " 106_2b1_Pr_mc_LittC2SE | \n",
1003 | " 106 | \n",
1004 | " 2 | \n",
1005 | " 0 | \n",
1006 | " 7 | \n",
1007 | " 0 | \n",
1008 | " train | \n",
1009 | "
\n",
1010 | " \n",
1011 | " | 13 | \n",
1012 | " 107_2b3_Al_mc_AKGC417L | \n",
1013 | " 107 | \n",
1014 | " 1 | \n",
1015 | " 7 | \n",
1016 | " 0 | \n",
1017 | " 0 | \n",
1018 | " train | \n",
1019 | "
\n",
1020 | " \n",
1021 | "
\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 |
--------------------------------------------------------------------------------