/
compile_adni.py
52 lines (39 loc) · 1.48 KB
/
compile_adni.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from __future__ import division
import sys
import glob2
import os
import shutil
import pandas as pd
current_directory = os.getcwd()
parent_directory = os.path.dirname(current_directory)
master_dir = os.path.join(parent_directory, 'ADNI')
master_list = os.path.join(master_dir, 'introduce csv file name here')
write_dir = os.path.join(parent_directory, 'data')
label_dict = ['AD', 'MCI', 'CN']
if __name__ == '__main__':
adni_data = glob2.glob(master_dir + '/**/*.nii')
# We use only Scaled and not Scaled_2 images
adni_data_scaled = [i for i in adni_data if 'Scaled_2' not in i]
adni_list = pd.read_csv(master_list, skipinitialspace=True, dtype=str)
completed = 0
total = len(adni_data_scaled)
for adni in adni_data_scaled:
img_id = adni.split('_')[-1].split('.')[0]
relevant_rows = adni_list[adni_list['Image Data ID'] == img_id]
if (len(relevant_rows) != 1):
print(img_id)
print('Mismatch error')
completed += 1
continue
label = relevant_rows['Group'].values[0]
if (label not in label_dict):
print(img_id)
print(label)
print('Label not found')
completed += 1
continue
file_root = adni.split('/')[-1]
curr_dir = os.path.join(write_dir, label, file_root)
shutil.copyfile(adni, curr_dir)
completed += 1
print('Completed ' + str(completed / total * 100) + '%')