-
Notifications
You must be signed in to change notification settings - Fork 0
/
OutputData.py
100 lines (91 loc) · 3.7 KB
/
OutputData.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# definizione
class Printer:
cahd = None
bm = None
# inizializzazione
def __init__(self, cahd=None, bm=None):
self.cahd = cahd
self.bm = bm
# metodo per la stampa dei gruppi anonimizzati
def stampa_gruppi(self):
label = " "
# labelizzazione dei dati della matrice
for t in range(len(str(self.bm.size))):
label += " "
labels_size = list()
for c in self.cahd.lista_gruppi[0].columns:
temp = self.bm.items_final.get(c)
label += " " + temp
labels_size.append(len(temp))
label += " "
for j, v in self.cahd.sd_gruppi[0].iteritems():
temp = self.bm.items_final.get(j)
label += " " + temp
labels_size.append(len(temp))
print(label)
print("")
# formattazione e stampa output a schermo
for i in range(len(self.cahd.lista_gruppi)):
group_indexes = self.cahd.lista_gruppi[i].index
group_position = 0
for index in group_indexes:
row = str(index)
dbm = self.cahd.lista_gruppi[i].loc[index]
single_transaction = list(dbm)
data = 0
a_l = len(row)
b_l = len(str(self.bm.size))
for t in range(max(b_l - a_l, 0)):
row += " "
row += " "
for transaction in single_transaction:
row += " " + str(transaction)
for d in range(max(labels_size[data] - len(str(transaction)), 0)):
row += " "
data += 1
if group_position == 0:
row += " "
data = 0
for j, v in self.cahd.sd_gruppi[i].iteritems():
row += " " + str(v)
for d in range(max(labels_size[data] - len(str(v)), 0)):
row += " "
data += 1
print(row)
group_position += 1
print("")
# metodo per controllo integrità dei dati
def controllo_dati(self, control=False):
errore = 0
# controllo riga per riga che i QID siano corretti e segno, nel caso, il numero di errori
for i in range(len(self.cahd.lista_gruppi)):
row = str(i) + " || QID : "
group_rows = self.cahd.dict_group[i]
initial_dataframe = self.bm.df_square_complete.loc[group_rows][self.cahd.QID_items]
final_dataframe = self.cahd.lista_gruppi[i]
final_dataframe = final_dataframe.loc[group_rows]
# se non sono presenti errori nel campionamento
if initial_dataframe.equals(final_dataframe):
row += "ok"
else:
# se sono presenti errori nel campionamento
row += "KOOO"
errore += 1
row += " || SENSITIVE : "
initial_sensitive = self.bm.df_square_complete.loc[group_rows][self.bm.lista_sensibili].sum()
# controllo che i sensitive item siano corretti e segno, nel caso, il numero di errori
for j in self.bm.lista_sensibili:
initial_sensitive[j] -= self.cahd.sd_gruppi[i][j]
err = False
for j in initial_sensitive:
if j != 0:
err = True
break
if err:
row += "KOOO"
errore += 1
else:
row += "ok"
if control:
print(row)
return errore