ML-KULeuven / problog

ProbLog is a Probabilistic Logic Programming Language for logic programs with probabilities.

Home Page:https://dtai.cs.kuleuven.be/problog/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

problog python code error

astghaj opened this issue · comments

`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)        
`

error
I am getting this error. Can you help me to fix it?

Could you be a bit more specific about where exactly the error is thrown?