Spaces:
Runtime error
Runtime error
File size: 3,799 Bytes
c3c3a50 84f85ed aae7214 4b55a84 3c44b25 84f85ed 8b39a1b 3886250 e0e0ee4 84f85ed e0e0ee4 84f85ed c71c387 84f85ed c71c387 84f85ed c71c387 84f85ed c71c387 84f85ed 3c44b25 84f85ed 3c44b25 84f85ed 3c44b25 84f85ed c3c3a50 84f85ed c3c3a50 6d4537d |
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 |
import gradio as gr
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import joblib
import numpy as np
# Define the model architecture
model = joblib.load('Keras.pkl')
manual_encoding = {
"Gender": {"Male": 1, "Female": 0, "-99": -99},
"Race (Reported)": {"White": 0, "Other Mixed Race": 1, "African-American": 2, "Black": 3, "Hispanic": 4, "Japanese": 5, "Han Chinese": 6, "other": 7, "Asian": 8, "Korean": 9, "Caucasian": 10, "Black or African American": 11, "Other": 12, "Intermediate": 13, "Malay": 14, "Chinese": 15, "Indian": 16, "Black Caribbean": 17, "Other (Hungarian)": 18, "Other (Black British)": 19, "Black African": 20, "Black other": 21},
"Age": {"90+": 6, "80 - 89": 5, "70 - 79": 4, "60 - 69": 3, "50 - 59": 2, "40 - 49": 1, "30 - 39": 0, "20 - 29": 7, "10 - 19": 8},
"Diabetes": {1: 1, 0: 0},
"Simvastatin (Zocor)": {1: 1, 0: 0},
"Amiodarone (Cordarone)": {1: 1, 0: 0},
"Target INR": {3.5: 5, 3.25: 5, 3.0: 5, 2.8: 5, 2.7: 5, 2.6: 5, 2.5: 5, 2.3: 5, 2.2: 5, 2.0: 5, 1.75: 5, 1.3: 5},
"Cyp2C9 genotypes": {"*1/*1": 0, "*1/*3": 1, "*1/*2": 2, "*2/*2": 3, "*2/*3": 4, "*3/*3": 5, "*1/*5": 6, "*1/*13": 7, "*1/*14": 8, "*1/*11": 9, "*1/*6": 10},
"VKORC1 genotype: -1639 G>A (3673); chr16:31015190; rs9923231; C/T": {"A/A": 0, "A/G": 1, "G/G": 2}
}
def apply_encoding(input_data):
encoded_data = {}
for key, value in input_data.items():
if key in manual_encoding:
encoded_data[key] = manual_encoding[key][value]
else:
encoded_data[key] = value
return encoded_data
def predict_warfarin_dose(gender, race, age_group, height, weight, diabetes, simvastatin, amiodarone, target_inr, inr_on_reported_dose, cyp2c9, vkorc1):
# Encode input data
encoded_data = apply_encoding({
"Gender": gender,
"Race (Reported)": race,
"Age": age_group,
"Height": height,
"Weight": weight,
"Diabetes": diabetes,
"Simvastatin (Zocor)": simvastatin,
"Amiodarone (Cordarone)": amiodarone,
"Target INR": target_inr,
"INR on Reported Therapeutic Dose of Warfarin": inr_on_reported_dose,
"Cyp2C9 genotypes": cyp2c9,
"VKORC1 genotype: -1639 G>A (3673); chr16:31015190; rs9923231; C/T": vkorc1
})
# Convert encoded data to a format compatible with the model
input_data = [encoded_data[key] for key in encoded_data]
input_data = np.array(input_data).reshape(1, -1)
# Make prediction using the trained model
predicted_dose = model.predict(input_data)[0][0]
return str(-1*predicted_dose)
iface = gr.Interface(
fn=predict_warfarin_dose,
inputs=[
gr.Dropdown(["Male", "Female", "-99"], label="Gender"),
gr.Dropdown(list(manual_encoding["Race (Reported)"].keys()), label="Race"),
gr.Dropdown(list(manual_encoding["Age"].keys()), label="Age Group"),
gr.Number(label="Height (cm)"),
gr.Number(label="Weight (kg)"),
gr.Dropdown([1, 0], label="Diabetes"),
gr.Dropdown([1, 0], label="Simvastatin"),
gr.Dropdown([1, 0], label="Amiodarone"),
gr.Dropdown(list(manual_encoding["Target INR"].keys()), label="Target INR"),
gr.Number(label="INR on Reported Therapeutic Dose of Warfarin"),
gr.Dropdown(list(manual_encoding["Cyp2C9 genotypes"].keys()), label="CYP2C9 Genotypes"),
gr.Dropdown(list(manual_encoding["VKORC1 genotype: -1639 G>A (3673); chr16:31015190; rs9923231; C/T"].keys()), label="VKORC1 Genotype"),
],
outputs=gr.Textbox(label="Predicted Therapeutic Dose of Warfarin (mg/week)"),
title="Warfarin Dosing Prediction",
description="Enter patient information to predict the therapeutic dose of warfarin.",
)
iface.launch('share=True') |