Spaces:
Runtime error
Runtime error
File size: 9,192 Bytes
6e991d4 c21f511 6e991d4 |
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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
import pandas as pd
import jinja2
from pycaret.classification import *
import imblearn as im
import sklearn
import gradio as gr
import numpy as np
ex_data = pd.read_csv('example_data.csv')
ex_data = ex_data.to_numpy()
ex_data = ex_data.tolist()
def predict(age, female, race, elective, aweekend, zipinc_qrtl, hosp_region, hosp_division, hosp_locteach,
hosp_bedsize, h_contrl, pay, anemia, atrial_fibrillation,
cancer, cardiac_arrhythmias, carotid_artery_disease,
chronic_kidney_disease, chronic_pulmonary_disease, coagulopathy,
depression, diabetes_mellitus, drug_abuse, dyslipidemia, endocarditis,
family_history, fluid_and_electrolyte_disorder, heart_failure,
hypertension, known_cad, liver_disease, obesity, peripheral_vascular_disease,
prior_cabg, prior_icd, prior_mi, prior_pci, prior_ppm, prior_tia_stroke,
pulmonary_circulation_disorder, smoker, valvular_disease, weight_loss,
endovascular_tavr, transapical_tavr):
model = load_model('final_model')
df = pd.DataFrame.from_dict({
'age': [age], 'female': [female], 'race': [race], 'elective': elective,
'aweekend': [aweekend], 'zipinc_qrtl': [zipinc_qrtl],
'hosp_region': [hosp_region], 'hosp_division': [hosp_division],
'hosp_locteach': [hosp_locteach], 'hosp_bedsize': [hosp_bedsize],
'h_contrl': [h_contrl], 'pay': [pay], 'anemia': [anemia],
'atrial_fibrillation': [atrial_fibrillation], 'cancer': [cancer],
'cardiac_arrhythmias': [cardiac_arrhythmias],
'carotid_artery_disease': [carotid_artery_disease],
'chronic_kidney_disease': [chronic_kidney_disease],
'chronic_pulmonary_disease': [chronic_pulmonary_disease],
'coagulopathy': [coagulopathy], 'depression': [depression],
'diabetes_mellitus': [diabetes_mellitus], 'drug_abuse': [drug_abuse],
'dyslipidemia': [dyslipidemia], 'endocarditis': [endocarditis],
'family_history': [family_history], 'fluid_and_electrolyte_disorder': [fluid_and_electrolyte_disorder],
'heart_failure': [heart_failure], 'hypertension': [hypertension],
'known_cad': [known_cad], 'liver_disease': [liver_disease],
'obesity': [obesity], 'peripheral_vascular_disease': [peripheral_vascular_disease],
'prior_cabg': [prior_cabg], 'prior_icd': [prior_icd], 'prior_mi': [prior_mi],
'prior_pci': [prior_pci], 'prior_ppm': [prior_ppm], 'prior_tia_stroke': [prior_tia_stroke],
'pulmonary_circulation_disorder': [pulmonary_circulation_disorder],
'smoker': [smoker], 'valvular_disease': [valvular_disease],
'weight_loss': [weight_loss], 'endovascular_tavr': [endovascular_tavr],
'transapical_tavr': [transapical_tavr]
})
df.loc[:, df.dtypes == 'object'] =\
df.select_dtypes(['object'])\
.apply(lambda x: x.astype('category'))
# converting ordinal column to ordinal
df.zipinc_qrtl = df.zipinc_qrtl.astype(ordinal_cat)
pred = predict_model(model, df, raw_score=True)
return {'Death %': round(100*pred['Score_Yes'][0], 2),
'Survival %': round(100*pred['Score_No'][0], 2),
'Predicting Death Outcome:': pred['Label'][0]}
# Defining the containers for each input
age = gr.inputs.Slider(minimum=0, maximum=100, default=60, label="Age")
female = gr.inputs.Dropdown(choices=["Female", "Male"],label = 'Sex')
race = gr.inputs.Dropdown(choices=['Asian or Pacific Islander', 'Black', 'Hispanic', 'Native American', 'White', 'Other'], label = 'Race')
elective = gr.inputs.Radio(choices=['Elective', 'NonElective'], label = 'Elective')
aweekend = gr.inputs.Radio(choices=["No", "Yes"], label = 'Weekend')
zipinc_qrtl = gr.inputs.Radio(choices=['FirstQ', 'SecondQ', 'ThirdQ', 'FourthQ'], label = 'Zip Income Quartile')
hosp_region = gr.inputs.Radio(choices=['Midwest', 'Northeast', 'South', 'West'], label = 'Hospital Region')
hosp_division = gr.inputs.Radio(choices=['New England', 'Middle Atlantic', 'East North Central', 'West North Central', 'South Atlantic', 'East South Central', 'West South Central', 'Mountain', 'Pacific'], label = 'Hospital Division')
hosp_locteach = gr.inputs.Radio(choices=['Urban teaching', 'Urban nonteaching', 'Rural'], label= 'Hospital Location/Teaching')
hosp_bedsize = gr.inputs.Radio(choices=['Small', 'Medium', 'Large'], label= 'Hospital Bedsize')
h_contrl = gr.inputs.Radio(choices= ['Government_nonfederal', 'Private_invest_own', 'Private_not_profit'], label = 'Hospital Control')
pay = gr.inputs.Dropdown(choices= ['Private insurance', 'Medicare', 'Medicaid', 'Self-pay', 'No charge', 'Other'], label = 'Payee')
anemia = gr.inputs.Radio(choices=["No", "Yes"], label = 'Anemia')
atrial_fibrillation = gr.inputs.Radio(choices=["No", "Yes"], label = 'Atrial Fibrillation')
cancer = gr.inputs.Radio(choices=["No", "Yes"], label = 'Cancer')
cardiac_arrhythmias = gr.inputs.Radio(choices=["No", "Yes"], label = 'Cardiac Arrhythmias')
carotid_artery_disease = gr.inputs.Radio(choices=["No", "Yes"], label = 'Carotid Artery Disease')
chronic_kidney_disease = gr.inputs.Radio(choices=["No", "Yes"], label = 'Chronic Kidney Disease')
chronic_pulmonary_disease = gr.inputs.Radio(choices=["No", "Yes"], label = 'Chronic Pulmonary Disease')
coagulopathy = gr.inputs.Radio(choices=["No", "Yes"], label = 'Coagulopathy')
depression = gr.inputs.Radio(choices=["No", "Yes"], label = 'Depression')
diabetes_mellitus = gr.inputs.Radio(choices=["No", "Yes"], label = 'Diabetes Mellitus')
drug_abuse = gr.inputs.Radio(choices=["No", "Yes"], label = 'Drug Abuse')
dyslipidemia = gr.inputs.Radio(choices=["No", "Yes"], label = 'Dyslipidemia')
endocarditis = gr.inputs.Radio(choices=["No", "Yes"], label = 'Endocarditis')
family_history = gr.inputs.Radio(choices=["No", "Yes"], label = 'Family History')
fluid_and_electrolyte_disorder = gr.inputs.Radio(choices=["No", "Yes"], label = 'Fluid and Electrolyte Disorder')
heart_failure = gr.inputs.Radio(choices=["No", "Yes"], label = 'Heart Failure')
hypertension = gr.inputs.Radio(choices=["No", "Yes"], label = 'Hypertension')
known_cad = gr.inputs.Radio(choices=["No", "Yes"], label = 'Known CAD')
liver_disease = gr.inputs.Radio(choices=["No", "Yes"], label = 'Liver Disease')
obesity = gr.inputs.Radio(choices=["No", "Yes"], label = 'Obesity')
peripheral_vascular_disease = gr.inputs.Radio(choices=["No", "Yes"], label = 'Peripheral Vascular Disease')
prior_cabg = gr.inputs.Radio(choices=["No", "Yes"], label = 'Prior CABG')
prior_icd = gr.inputs.Radio(choices=["No", "Yes"], label = 'Prior ICD')
prior_mi = gr.inputs.Radio(choices=["No", "Yes"], label = 'Prior MI')
prior_pci = gr.inputs.Radio(choices=["No", "Yes"], label = 'Prior PCI')
prior_ppm = gr.inputs.Radio(choices=["No", "Yes"], label = 'Prior PPM')
prior_tia_stroke = gr.inputs.Radio(choices=["No", "Yes"], label = 'Prior TIA Stroke')
pulmonary_circulation_disorder = gr.inputs.Radio(choices=["No", "Yes"], label = 'Pulmonary Circulation Disorder')
smoker = gr.inputs.Radio(choices=["No", "Yes"], label = 'Smoker')
valvular_disease = gr.inputs.Radio(choices=["No", "Yes"], label = 'Valvular Disease')
weight_loss = gr.inputs.Radio(choices=["No", "Yes"], label = 'Weight Loss')
endovascular_tavr = gr.inputs.Radio(choices=["No", "Yes"], label = 'Endovascular TAVR')
transapical_tavr = gr.inputs.Radio(choices=["No", "Yes"], label = 'Transapical TAVR', default= 'Yes')
# Defining and launching the interface
gr.Interface(predict, [age, female, race, elective, aweekend, zipinc_qrtl, hosp_region, hosp_division, hosp_locteach,
hosp_bedsize, h_contrl, pay, anemia, atrial_fibrillation,
cancer, cardiac_arrhythmias, carotid_artery_disease,
chronic_kidney_disease, chronic_pulmonary_disease, coagulopathy,
depression, diabetes_mellitus, drug_abuse, dyslipidemia, endocarditis,
family_history, fluid_and_electrolyte_disorder, heart_failure,
hypertension, known_cad, liver_disease, obesity, peripheral_vascular_disease,
prior_cabg, prior_icd, prior_mi, prior_pci, prior_ppm, prior_tia_stroke,
pulmonary_circulation_disorder, smoker, valvular_disease, weight_loss,
endovascular_tavr, transapical_tavr],
outputs = gr.Textbox(label="Predicted Outcomes for this Patient", lines=4),
live=True,
title = "Predicting In-Hospital Mortality After TAVR Using Preoperative Variables and Penalized Logistic Regression",
description = "The app below utilizes the finalized logistic regression model with an l2 penalty based on the manuscript by Alhwiti et al. The manuscript will be submitted to JACC: Cardiovascular Interventions. The data used for model building is all TAVR procedures between 2012 and 2019 as reported in the HCUP NIS database. <br><br> The purpose of the app is to provide evidence-based clinical support for interventional cardiology. <br> <br> For instruction on how to use the app and the encoding required for the variables, please see <b>XYZ: insert website link here</b>.",
examples = ex_data,
css = 'https://bootswatch.com/5/journal/bootstrap.css').launch(debug = False); |