problog python code error
astghaj opened this issue · comments
astghaj commented
`def fileReader():
global stayinglength
global evidence
global trained_model
# CSV READ
with open('AIProjectFile.csv', 'r') as read_obj:
read_file = reader(read_obj)
header = next(read_file)
# Check file as empty
if header != None:
# Iterate over each row after the header in the csv
for row in read_file:
evidence_list = []
# print(row)
# row variable is a list that represents a row in csv
if int(row[12]) == 1:
final_model = "t(_)::healthy:-"
else:
final_model = "t(_)::sick:-"
# Read from csv values one by one
# Age column
# If column is empty then age is 0
if row[0] == '':
age = 0
else:
age = int(row[0])
# If column < 50 then in model we have young (true)
if age < 50:
final_model = final_model + "young,"
evidence_list.append((Term("young"), True, None))
# If column >= 50 then in model we have \+young (false)
elif age >= 50:
final_model = final_model + "\+young,"
evidence_list.append((Term("young"), False, None))
# Gender column
# If column is empty then age is 0
if row[1] == '':
sex = 0
else:
sex = int(row[1])
# If column == 1 then in model we have male (true)
if sex == 1:
final_model = final_model + "male,"
evidence_list.append((Term("male"), True, None))
else:
# If column 1= 1 then in model we have \+male (false)
final_model = final_model + "\+male,"
evidence_list.append((Term("male"), False, None))
# previous_er_visit_within_14_days
if row[2] == '':
previous_er_visit_within_14_days = 0
else:
previous_er_visit_within_14_days = int(row[2])
if previous_er_visit_within_14_days == 1:
final_model = final_model + "previous_er_visit_within_14_days,"
evidence_list.append((Term("previous_er_visit_within_14_days"), True, None))
elif previous_er_visit_within_14_days == 0:
final_model = final_model + "\+previous_er_visit_within_14_days,"
evidence_list.append((Term("previous_er_visit_within_14_days"), False, None))
# admission_disposition
if row[3] == '':
admission_disposition = 0
else:
admission_disposition = int(row[3])
if admission_disposition == 1:
final_model = final_model + "WARD,"
evidence_list.append((Term("WARD"), True, None))
elif admission_disposition == 0:
final_model = final_model + "\+WARD,"
evidence_list.append((Term("WARD"), False, None))
# systolic_blood_pressure
if row[4] == '':
systolic_blood_pressure = 0
else:
systolic_blood_pressure = int(row[4])
if systolic_blood_pressure <= 120:
final_model = final_model + "normalsysbloodp,"
evidence_list.append((Term("normalsysbloodp"), True, None))
elif systolic_blood_pressure > 120:
final_model = final_model + "\+normalsysbloodp,"
evidence_list.append((Term("normalsysbloodp"), False, None))
# diastolic_blood_pressure
if row[5] == '':
diastolic_blood_pressure = 0
else:
diastolic_blood_pressure = int(row[5])
if diastolic_blood_pressure <= 80:
final_model = final_model + "normaldiasbloodp,"
evidence_list.append((Term("normaldiasbloodp"), True, None))
elif diastolic_blood_pressure > 80:
final_model = final_model + "\+normaldiasbloodp,"
evidence_list.append((Term("normaldiasbloodp"), False, None))
# heart_rate
if row[6] == '':
heart_rate = 0
else:
heart_rate = int(row[6])
if heart_rate >= 60 and heart_rate <= 100:
final_model = final_model + "heartrate,"
evidence_list.append((Term("heartrate"), True, None))
elif heart_rate < 80 and heart_rate > 100:
final_model = final_model + "\+heartrate,"
evidence_list.append((Term("heartrate"), False, None))
# respiratory_rate
if row[7] == '':
respiratory_rate = 0
else:
respiratory_rate = int(row[7])
if respiratory_rate >= 12 and respiratory_rate <= 20:
final_model = final_model + "respiratoryrate,"
evidence_list.append((Term("respiratoryrate"), True, None))
elif respiratory_rate < 12 and respiratory_rate > 20:
final_model = final_model + "\+respiratoryrate,"
evidence_list.append((Term("respiratoryrate"), False, None))
# oxygen_saturation
if row[8] == '':
oxygen_saturation = 0
else:
oxygen_saturation = int(row[8])
if oxygen_saturation >= 90:
final_model = final_model + "oxygensaturation,"
evidence_list.append((Term("oxygensaturation"), True, None))
elif oxygen_saturation < 90:
final_model = final_model + "\+oxygensaturation,"
evidence_list.append((Term("oxygensaturation"), False, None))
# temperature
if row[9] == '':
temperature = 0
else:
temperature = int(row[9])
if oxygen_saturation < 37:
final_model = final_model + "temperature,"
evidence_list.append((Term("temperature"), True, None))
elif temperature >= 37:
final_model = final_model + "\+temperature,"
evidence_list.append((Term("temperature"), False, None))
# intubated
if row[10] == '':
intubated = 0
else:
intubated = int(row[10])
if intubated == 0:
final_model = final_model + "intubated,"
evidence_list.append((Term("intubated"), True, None))
elif intubated == 1:
final_model = final_model + "\+intubated,"
evidence_list.append((Term("intubated"), False, None))
# hemoglobin
if row[11] == '':
hemoglobin = 0
else:
hemoglobin = int(row[11])
if hemoglobin >= 130:
final_model = final_model + "hemoglobin,"
evidence_list.append((Term("hemoglobin"), True, None))
elif intubated < 130:
final_model = final_model + "\+hemoglobin,"
evidence_list.append((Term("hemoglobin"), False, None))
if name == "main":
# First i create a set and a list to save the csv and input user data
stayinglength = set()
evidence = list()
# Function that rteads from csv and creates the training model
fileReader()
term_list = list(stayinglength)
term_list.sort()
# Model
model = """"""
model = model + "t(_)::young.\n"
model = model + "t(_)::male.\n"
model = model + "t(_)::previous_er_visit_within_14_days.\n"
model = model + "t(_)::WARD.\n"
model = model + "t(_)::normalsysbloodp.\n"
model = model + "t(_)::normaldiasbloodp.\n"
model = model + "t(_)::heartrate.\n"
model = model + "t(_)::respiratoryrate.\n"
model = model + "t(_)::oxygensaturation.\n"
model = model + "t(_)::temperature.\n"
model = model + "t(_)::intubated.\n"
model = model + "t(_)::hemoglobin.\n"
for y in range(len(term_list)):
if y != (len(term_list) - 1):
model = model + term_list[y] + "\n"
else:
model = model + term_list[y]
#print(model)
# Evaluete the learning model
score, weights, atoms, iteration, lfi_problem = lfi.run_lfi(PrologString(model), evidence)
trained_model = lfi_problem.get_model()
#print(trained_model)
`
Robin Manhaeve commented
Could you be a bit more specific about where exactly the error is thrown?