]> AND Private Git Repository - myo-class.git/blob - regularjson.py
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
stable, day after meeting
[myo-class.git] / regularjson.py
1 """
2 by @res
3
4 1) Read -R json_GT* and recup "Feature Refs" & labels (0: Infarctus, 1: No
5 2) store "Feature Refs" & labels
6     Format:
7         {
8             nb_infarct: 2,
9             infarcts: [],
10             no_infarcts: [],
11         }
12 """
13 from os import listdir as ls
14 from os.path import getsize as size, join
15 from pprint import pprint
16
17
18 # constants
19 # json OLD may be it was just a separation for the copy, new -> no more that, stay in one directory
20 #   |--> json_GT
21 #   |--> json_GT_part2
22 RT_PATH = '../../Data/Contours_updated/'
23 JSON_GTS = ['json_GT']
24 INFA_STR = 'Infarction'
25 EPI_STR = 'Epicardic'
26 ENDO_STR = 'Endocardic'
27
28 # Globals
29 featurerefs = []
30 labellist = []
31 details = []
32
33 from os.path import isfile, join
34
35 def search(path, name, recursive=True, fsize=True):
36     """
37     :param path:
38     :param name:
39     :param recursive: Recursive or not
40     :param fsize: show the size of not
41     :return: {path: p, size: None}
42     """
43     for d in ls(path):
44         p = join(path, d)
45         if name in d:
46             return {'path': p, 'size': size(p) if fsize else None}
47         elif recursive and not isfile(p):# only enter if it's a directory
48             res = search(p, name)# stop if found
49             if res:
50                 return res
51
52 def merge(dirlist, root='', indice='Case'):
53     l = []
54     for d in dirlist:
55         l += [e for e in ls(join(root, d)) if indice in e]
56
57     return sorted(l)
58
59 def mergejsons():
60     return merge(JSON_GTS, RT_PATH)
61
62 def featurerefs():
63     """
64         fill l with features references
65         use JSON_GTS, a little bit static in this sens
66     :return:
67     """
68     global featurerefs
69     # for d in JSON_GTS:
70     #     #frefs += ls(RT_PATH + d)
71     #     featurerefs += [e for e in ls(join(RT_PATH, d)) if "Case" in e]
72
73     featurerefs = sorted(mergejsons())
74
75 def label(fref):
76     res = search(RT_PATH, fref)
77     b = search(res['path'], INFA_STR)
78     return (0, b['size']) if b else (1, None)
79
80 def labels():
81     global labellist, details
82     for name in featurerefs:
83         lab, detail = label(name)
84         labellist.append(lab)
85         details.append(detail)
86
87
88
89 if __name__ == '__main__':
90     featurerefs()
91     labels()
92
93     print('featurerefs:', len(featurerefs), featurerefs)
94     print('labels:', len(labellist), labellist)
95     print('details:', len(details), details)
96
97     # print( label('Case_02') )
98     # print( search(RT_PATH, INFA_STR) )
99
100
101