1 from os import listdir as ls
4 from os.path import join
7 from topng import topng
8 from regularjson import search, RT_PATH, JSON_GTS, INFA_STR
11 GLOB_DIR = '../../Data/Images_anonymous/'
15 START = None # to manage the number of Patient Case to use in training + validation, if START == None => 0, if END == None => last index, it will use all in GLOB_DIR
21 return sorted( ls(r) )
23 if __name__ == '__main__':
24 l = sorted(ls(GLOB_DIR))
25 for cas in l[START:END]:# cas like 'Case0002'
26 caspath = join(GLOB_DIR, cas)
28 if not INDICE_CASE in cas:# if the directory name doesn't sound familiar
31 l1 = sorted( ls( caspath ) )# just ls one CaseXXXX and sort the result
32 # $$NOTRUSTREF here we need to sort because there is no trusted ref or id
34 r = search(RT_PATH, cas)
36 print(cas, end=' ', flush=True) # log CaseXXXX
38 if not r: # if the feature doesn't yet labeled by an expert go to next
40 r = search(r['path'], '.') # to be more dynamic, here can just be '.' instead of '1.2.3.4.5.6'
45 l2 = sorted( ls(r) ) # $$NOTRUSTREF
46 except NotADirectoryError as e:
47 print("WARN", "a file in unexcepted place")
50 if 0 < len(l2) < len(l1):
52 l2 = sorted( ls(r) ) # $$NOTRUSTREF
53 # Try once : check subdirectory if i'am not the right
55 if 0 < len(l2) < len(l1):
56 # TODO: log, json doesn't match with images (labels != features)
57 print("WARN", "json doesn't match with images (labels != features), Case", cas)
62 for i, dic in enumerate(l1):
63 # print('join', r, l2[i])
64 ref = join(r, l2[i]) # logically, should be the json ref of i dicom image
66 infarctus = search(ref, INFA_STR)
68 # print("infarctus:", infarctus) # Testing..
69 # topng(join(caspath, dic), '%/%-%' % (join(OUT_DIR, 'infarctus'), cas, dic)
70 # print(join(caspath, dic), '{}/{}-{}'.format(join(OUT_DIR, 'infarctus'), cas, dic)) # Testing..
71 topng(join(caspath, dic), '{}/{}-{}'.format(join(OUT_DIR, 'infarctus'), cas, dic))
73 # print("no infarctus:", infarctus) # Testing..
74 # print(join(caspath, dic), '{}/{}-{}'.format(join(OUT_DIR, 'noinfarctus'), cas, dic)) # Testing..
75 topng(join(caspath, dic), '{}/{}-{}'.format(join(OUT_DIR, 'noinfarctus'), cas, dic))