-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsvm_checks.py
83 lines (76 loc) · 2.9 KB
/
svm_checks.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
import os
import svm_lib
def checkPayload(payload):
if payload is None:
return False, {'results': 'Missing JSON payload.'}
if not 'dataset' in payload:
return False, {'results': 'Missing data field.'}
return True, ''
def checkTrainingElements(elements, received_dataset):
elements_num = -1
for row in elements:
if not 'data' in row:
return False, {'results': 'Missing data field.'}
if not 'result' in row:
return False, {'results': 'Missing result field.'}
elements = row['data'].split(',')
if elements_num == -1:
elements_num = len(elements)
else:
if (elements_num != len(elements)):
return False, {'results': 'Data field has a wrong size.'}
line = svm_lib.elementsToSVM(row["result"], elements)
received_dataset = f'{received_dataset}\n{line}'
return True, received_dataset
def checkPredictElements(predict_elements, predict_dataset):
elements_num = -1
j = 1
for predict_row in predict_elements:
if not 'data' in predict_row:
return False, {'results': 'Missing data field.'}
predict_elements = predict_row['data'].split(',')
if elements_num == -1:
elements_num = len(predict_elements)
else:
if (elements_num != len(predict_elements)):
return False, {'results': 'Data field has a wrong size.'}
line = svm_lib.elementsToSVM(j, predict_elements)
j = j + 1
predict_dataset = f'{predict_dataset}\n{line}'
return True, predict_dataset
def checkAppend(obj, configurations):
payload = obj['payload']
model = obj['model']
append = False
if 'append' in payload:
append = payload['append']
if append == False:
if os.path.isfile(f'{configurations["svmTrainings"]}/{model}.training'):
return False, {'results': 'Model is present, change name or use append.'}
return True, ''
def checkPresent(obj, configurations):
payload = obj['payload']
model = obj['model']
if not os.path.isfile(f'{configurations["svmTrainings"]}/{model}.training'):
return False, {'results': 'Model not is present, change model name.'}
return True, ''
def checkTrainingAll(obj, configurations):
payload = obj['payload']
model = obj['model']
result, message = checkPayload(payload)
if not result:
return False, message
result, message = checkAppend({'payload':payload, 'model':model}, configurations)
if not result:
return False, message
return True, ''
def checkPredictAll(obj, configurations):
payload = obj['payload']
model = obj['model']
result, message = checkPayload(payload)
if not result:
return False, message
result, message = checkPresent({'payload':payload, 'model':model}, configurations)
if not result:
return False, message
return True, ''