File size: 3,277 Bytes
fcdf349
 
7db8dd1
fcdf349
 
 
7db8dd1
 
 
fcdf349
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import numpy as np
from sklearn.preprocessing import MinMaxScaler
import pickle
import joblib

# Create a min-max scaler object
scaler = MinMaxScaler()

def predict(Height,Weight,INR,Race,Age,gender,Diabetes,Simvastatin,Amiodarone,VKORC1, ml_model):

  age_encoder = joblib.load('my_le_age.joblib')
  en_age = age_encoder.transform([Age])[0]
  race_encoder = joblib.load('my_le_race.joblib')
  en_race = race_encoder.transform([Race])[0]
  gen_encoder = joblib.load('my_le_gender.joblib')
  en_gen = gen_encoder.transform([gender])[0]
  sim_encoder = joblib.load('my_le_sim.joblib')
  en_sim = sim_encoder.transform([Simvastatin])[0]
  ami_encoder = joblib.load('my_le_ami.joblib')
  en_ami = ami_encoder.transform([Amiodarone])[0]
  vk_encoder = joblib.load('my_le_vk.joblib')
  en_vk = vk_encoder.transform([VKORC1])[0]
  input_features=np.array([Height,Weight,INR,en_race,en_age,en_gen,Diabetes,en_sim,en_ami,en_vk]).reshape(1,-1)
  norm_features = scaler.fit_transform(input_features)

  if(ml_model == 'Linear'):
    with open('lrn_model.pkl', 'rb') as file:
      lrn_model = pickle.load(file)
    res = lrn_model.predict(norm_features)[0]
  elif(ml_model == 'SVRegressor'):
    with open('svr_model.pkl', 'rb') as file:
      lrn_model = pickle.load(file)
    res = lrn_model.predict(norm_features)[0]
  elif(ml_model == 'Decision Trees Regressor'):
    with open('dt_model.pkl', 'rb') as file:
      lrn_model = pickle.load(file)
    res = lrn_model.predict(norm_features)[0]
  elif(ml_model == 'Lasso Regression'):
    with open('lasso_model.pkl', 'rb') as file:
      lrn_model = pickle.load(file)
    res = lrn_model.predict(norm_features)[0]
  else:
    with open('mlp_model.pkl', 'rb') as file:
      lrn_model = pickle.load(file)
    res = lrn_model.predict(norm_features)[0]

  return res

  return en_gen


Height = gr.inputs.Number(label='Height (cm)')
Weight = gr.inputs.Number(label='Weight (kg)')
INR = gr.inputs.Number(label='INR on Reported Therapeutic Dose of Warfarin')
Race = gr.inputs.Dropdown(['African-American','Asian','Black','Black African','Black Caribbean',
 'Black or African American','Black other','Caucasian','Chinese',
 'Han Chinese','Hispanic','Indian','Intermediate' ,'Japanese', 'Korean',
 'Malay', 'Other' ,'Other (Black British)' ,'Other (Hungarian)',
 'Other Mixed Race' ,'White' ,'other'], label='Race')
Age = gr.inputs.Dropdown(['10 - 19','20 - 29','30 - 39','40 - 49','50 - 59','60 - 69','70 - 79','80 - 89','90+'],label='Age')
gender = gr.inputs.Dropdown(["male", "female"], label="Gender")
Diabetes = gr.inputs.Number(label='Diabetes')
Simvastatin = gr.inputs.Number(label='Simvastatin (Zocor)')
Amiodarone = gr.inputs.Number(label='Amiodarone (Cordarone)')
VKORC1 = gr.inputs.Dropdown(['A/A','A/G','G/G'], label='VKORC1 genotype: -1639 G>A (3673); chr16:31015190; rs9923231; C/T')
ml_model = gr.inputs.Dropdown(["Linear", "SVRegressor", "Decision Trees Regressor","Lasso Regression", "MLP Neural Network"], label="ML Model")
outputs = [
    gr.outputs.Textbox(label="Dose"),
]
# Create interface
interface = gr.Interface(
    fn=predict,
    inputs=[Height,Weight,INR,Race,Age,gender,Diabetes,Simvastatin,Amiodarone,VKORC1,
            ml_model],
    outputs=outputs
)

# Launch interface
interface.launch()