File size: 3,592 Bytes
4d58ea1
 
 
c87c55c
4d58ea1
 
 
 
78f7cb6
 
 
6cf9c2b
398a6f6
6cf9c2b
78f7cb6
 
 
c6be718
4d58ea1
 
 
 
 
 
 
 
78f7cb6
 
4d58ea1
 
 
 
 
6cf9c2b
398a6f6
4d58ea1
 
 
 
6cf9c2b
4d58ea1
c87c55c
 
 
 
6cf9c2b
c87c55c
 
 
 
 
4d58ea1
 
6cf9c2b
 
c87c55c
6cf9c2b
 
 
4d58ea1
c87c55c
4d58ea1
6cf9c2b
 
 
 
78f7cb6
 
 
6cf9c2b
c87c55c
 
 
4d58ea1
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
# %%
import gradio as gr
import joblib
import numpy as np
loaded_rf_2way = joblib.load("STPI_2WAY_RandomForest.joblib")
loaded_rf_3way = joblib.load("STPI_3WAY_RandomForest.joblib")


def STPI(t_0_5_MaxValue,t_1_0_MaxValue,t_2_0_MaxValue,
# Acc_0_5__1_0_MaxValue,
Abs_Diff_t_0_5_MaxValue,Abs_Diff_t_1_0_MaxValue,Abs_Diff_t_2_0_MaxValue,Optional_Custom_Message='No_Message'):
    print('------------------')
    print(Optional_Custom_Message)
    
    X = [t_0_5_MaxValue,t_1_0_MaxValue,t_2_0_MaxValue,
    # Acc_0_5__1_0_MaxValue,
    Abs_Diff_t_0_5_MaxValue,Abs_Diff_t_1_0_MaxValue,Abs_Diff_t_2_0_MaxValue]
    print(X)
    outcome_decoded = ['Normal','Keratoconic','Suspect']
    file_object = open('stpi_data.txt', 'a')
    file_object.write(str(t_0_5_MaxValue))
    file_object.write(';')
    file_object.write(str(t_1_0_MaxValue))
    file_object.write(';')
    file_object.write(str(t_2_0_MaxValue))
    file_object.write(';')
    # file_object.write(str(Acc_0_5__1_0_MaxValue))
    # file_object.write(';')
    file_object.write(str(Abs_Diff_t_0_5_MaxValue))
    file_object.write(';')
    file_object.write(str(Abs_Diff_t_1_0_MaxValue))
    file_object.write(';')
    file_object.write(str(Abs_Diff_t_2_0_MaxValue))
    file_object.write(';')
    file_object.write(Optional_Custom_Message)
    file_object.write('\n')
    file_object.close()

    result_2way = loaded_rf_2way.predict([X])
    print('The patient is ', outcome_decoded[int(result_2way)], ' through the 2way method')

    probs_2way = loaded_rf_2way.predict_proba([X])
    probs_2way = str(np.round(probs_2way[0], decimals=2))
    print('2 way class Probabilities (Normal/KC) are ', probs_2way)

    result_3way = loaded_rf_3way.predict([X])

    probs_3way = loaded_rf_3way.predict_proba([X])
    probs_3way = str(np.round(probs_3way[0], decimals=2))
    print('3 way class Probabilities (Normal/Suspect/KC) are ', probs_3way)

    if result_2way == 0:
        print('The patient is ', outcome_decoded[int(result_3way)], 'through the 3way method')
        # result = 'The 3-way classification resulted in a ', outcome_decoded[int(result_3way)] + ' patient.'
        # further_analysis = 'Futher analysis using the 2-way classification resulted in a ' + outcome_decoded[int(result_2way)] + ' label.'
        return 'The 3-way classification resulted in a ' + outcome_decoded[int(result_3way)] + ' patient. Futher analysis using the 2-way classification resulted in a ' + outcome_decoded[int(result_2way)] + ' label. ' + '2 way class Probabilities (Normal/KC) are ' + probs_2way + ' and 3 way class Probabilities (Normal/Suspect/KC) are ' + probs_3way

    # result = 'The 2-way classification resulted in a ', outcome_decoded[int(result_2way)] + ' patient.'
    # further_analysis = 'Futher analysis using the 3-way classification resulted in a ' + outcome_decoded[int(result_3way)] + ' label.'

    return 'The 2-way classification resulted in a ' + outcome_decoded[int(result_2way)] + ' patient. Futher analysis using the 3-way classification resulted in a ' + outcome_decoded[int(result_3way)] + ' label. ' + '2 way class Probabilities (Normal/KC) are ' + probs_2way + ' and 3 way class Probabilities (Normal/Suspect/KC) are ' + probs_3way

iface = gr.Interface(
    fn=STPI, 
    title='STPI Calculator',
    description='Calculates the STPI through summarized tomographic parameters. Beta version by Prof. Shady Awwad, Jad Assaf MD and Jawad Kaisania.',
    inputs=["number", "number","number", 
    # "number",
    "number", "number","number","text"],
    outputs="text")
iface.launch(
    # share=True
    )
# %%