File size: 14,306 Bytes
feca201
 
 
 
 
 
 
 
 
ad95c7a
feca201
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98d4147
feca201
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5d790f7
 
feca201
 
 
 
 
0efcb82
f02c206
0efcb82
 
01c77ff
8d3cd93
0efcb82
 
 
 
01c77ff
8d3cd93
0efcb82
 
 
f02c206
3d90220
feca201
 
 
 
 
 
 
5d790f7
feca201
 
 
3d90220
feca201
 
b0bfd3b
feca201
 
 
 
 
 
 
 
 
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
import os

import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

import gradio as gr

current_dir = os.path.dirname(os.path.realpath(__file__))
data = pd.read_csv(os.path.join(current_dir, "datav4.csv"))




X_all = data.drop(["targets"], axis=1)
y_all = data["targets"]

num_test = 0.20
X_train, X_test, y_train, y_test = train_test_split(
    X_all, y_all, test_size=num_test, random_state=23
)

clf = RandomForestClassifier()
clf.fit(X_train, y_train)
from joblib import dump, load


js = """
function createGradioAnimation() {

	


    var containerlog = document.createElement('div');
    containerlog.id = 'gradio-animation';
    containerlog.style.fontSize = '2em';
    containerlog.style.fontWeight = 'bold';
    containerlog.style.textAlign = 'center';
    containerlog.style.marginBottom = '50px';
    var logo = document.createElement('img');
    logo.src = 'https://data2innov.fr/build/img/data2innov_logo.svg'; // Replace with your logo URL
    logo.style.width = '200px'; // Adjust the size of the logo
    containerlog.appendChild(logo);

    var textElement = document.createElement('span');
   // Ajouter le texte entre les deux images
     textElement.textContent = "L'IA au service de l'implantologie   Pr. Zoubeir TOURKI "; // Remplacez par votre texte
   containerlog.appendChild(textElement);
    var logo2 = document.createElement('img');
    logo2.src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAABUFBMVEX////9/f3y8vIAitAAjdIAj9P4+v07qd8spt7///2s0O4bot211PBOreEAot4AkdTo6/TH0ugAmdhCjcphndO/2fGjzO11o9b5+PcAm9rJ3fLZ4O8AldYKf8aTrto2hsgjUIJ+vedks+PO2ux0uOaVxuvn9PosVobx+fxtt+XDz+ZYdZo1XIrx8/nd4+rDzdoArfCEmbSquMtHaZMAf86p3PHo6eza2+AAAFVgfJ9MbJRwiKiersOQoru3wtJZd5ymvN3O5PIAq/BmbYyEjKV5j63a8PiCx+nA4fTJ5fWVr9eGptVrpdlZt+OQy+rNz9Y2R3iLkahWY4kAJmdtc5Fah8QAbLxdodexwd59rdiMt+I6gcV8ms1MmNGbv+VFtONdwecXuPAAHGchOnEAAEwoN2tCUX4LMG6Z1vFFwvEAAEIAAF6foLB90PEPJ2QAGmH7nGDVAAAaw0lEQVR4nO2d+1/aSPfHEy7ReCkoKCig8ZoKJAg+BrlFqOANLUrpt+CK265b7e7q9v//7XtmkkAgCUQBgb728/RpXUlm5p1z5syZyZAQRM+i+FgozLLJQszZe2FYzlghybLhZIyn+lRiL+JihTDDsNEI39di+UgUig0XYlxfi32xqHghzDLJVGQQ15qMFJIAmYoPz5CkWGAZJiX213pq8WIK/KMgkgOroZOo2CHL7GX4wdZOCpkkw4Zib29HPg0edNi32NJJQizBMHvpwXmKnvjoHsMeim8VBSxiAtwl+naMpQIEgGjkzepDwqE19TZ1cpkwDA5vPlKRfJRlwpnBuw0XY96kHt26M3sMM+gBMgLxM/G2fV4tHgaP0ABdlYwnWHaQFZgQusSH8QGNUAJ0wPCwsyiCE6EVAwmrVGwPxvdh8yGh7hjufwogFCB7ive71FeKh2wx1edkI5JkwkPKDvVERvaYpNjHArkMwxSGF0H15ISsIyP0qzQ+xIbTozAXVYuKhZlQqS9FcemhDoHG4iEh70foc6b6U84AxKUhVe352ovsQJOIHhU/ZNgeAw4ARkfTgJK4KMPGejifjLLhXs5/C8XCbOHVUZCDUX50PVRRJMykXjls8KF+hePBKh5ikq+KN5A2JPo2pA5UXILZe4WvQQpfGOUYoxbEmxfHCzLNspmBtGYwSoeZzMvSZgAc9SDaKvFlFiEzTHj0g2irIi+yYpoN93Nq8jYSw+atGGPGEBBbMW3uyHR45BMZfYnhsClEsedkdmgSTcVHsxdiJAVJaldE0cQxI6wY280BI2F2fC2IBEGk4zgnJF+aGoyc0sxeh2yaCjGFt2vLgBRlkob5NJlhk+Mxm+gkLsREjfwQDDyKa2ovFZ80GvlLLDOuA2GrIgZLE3xyzMNoUzFWzxmpQ+b1KzojJjLKhDQs8MvkrwII5kpqo42+YcdWEG3aUjMu/ItEGUUiE265wUimmNSw2jIgFZiUutdFwr+UjyLxe+oc3Bke2ymhkWgiwoabVosyCYImfynRFJFqJtkiiqPDblKfBYTOhp9yIZj0/mImRIQwAsoTCfBR+M9hN6nPQoSk7Kdyjxx2k/osREjwYZSCcylprtH3Kmj482r1Xj0eDGNsgoPB/5AzQdi1Se2NokhKq/fdpK6PJHq4EBIhlYDkLSmna524cIt127rtdDqPc8tICzMzU1hbSGtNbW7uyFpXdDmrr3XlyK2PUMbiKWjh7Fil7YYoClonDX16qBIh2C9JsAlCn5CiOI7bBoQckoSAIRZBWw2ttbBgqWAabZ9AmkSaRnona0nSPJbf73c4HHaQzWZFCoD+1yL4BfrA4Z+fnJxYX187Ofn44/Q0l3vfzigTEimWUBbfdCwo2YpDoE4g9cmk2GAgyWSLTeAmZxuggjctS8Um8/mxlmRO6ZdLcCT6P5yIzgcLYxNDDScnJ1DzwsLyGRKyLGVgQ8hHiQJpSKh2VCMRcB1IkoPr8J6T3AcqhCsBNedw/Wenrdo31umZrGPwfeSHIOO1zc4dUiEkooSyo9KIsJu6RgMzWaROm7sHk87NUgibuelrCUdUtHbBYthN6rP+Ixx//Uf4Fk1Qguxg5m1DJkR0uf0fH09QSpIbCORwCWkq93F9dmJy+h1KXfzzazmy/1ObIRLSZG5rB/I5IIT0bQmyNPv82na/zTg8Qpp2bq1Bbr6+I8061tcnlvwO2+RZnxGHRkiTZzhBlxP1TTwJmZh2WOf7jDgsQppaQGx4MrKmEMLkY9JvnTjuK+KQCCVAebqlJpyddARmNcsEvVU1DEKaXF5clKaUbYQTE9M2634/22CSsPsxmmLa1WKX3NQUWiVQE67LhBNLr/PT9smZUoQ5QsrXKk6zVEA6NzZ8HeVsnkNvz0zNtBBuNm04MemwfsSNUM0ou84OCYJrb6MMaYqQ4G5/c4FWV1fxkslnX3uFBFG8LXpAbrfbJR+6ildXFP3fSvOqksszCwtNQhg01i++ICHCyclpq/+YADrKGZzK3oGyQSfXMd0haN/5rUupWKrXdb5B0WYJSaL6BV9ilH28e2fNakMBcV5dXljAy2vI4+RhHCUqDmk5KVBtFEw7ZxbUhJtuz012Zi5YvavV6whx3rrmc/qqtbrDgc+12eq1IGccIQiieuu5WWtUDBmS3++wurIU8ULCCanZ1qz2ghLBcw3hO4lQauXqhlIwTS0vLDcJ19y1OWXrEuU7r6N1Kpu1DnTSopRDvkT1IGVgRoI4d29BQc1Lu4QSJL8tUITu9GIbGhE6i2jNbVHHhhKhy9kg3MZLdDLhjTvY9EBgDNanJyf9tqV5ZeUNznfYUBGrWQNEsCDyhXZCh8MWOKdok4TZLzs4DuBm224ozUE058GNXjSwYcCjRCfIRlWEN0VfSxQh6Lk61GGff9dCiGQN3OkiEhu3Ur1qL8WEdhv0DVOENHV+obKhw+3U1ERzxanlmRoONXX3F6mieSXWWG2BrDJrACdtEE7deLi2+mjizj89Pe9f0hJarTM6Uw+Cur3DhDfueh3FGnxkwA4BwGYPgOuYi6XFdRXhvMunc1D2bsGTnUPaOHdLhK7qBtb5qirQYCeVCbc82pJop2cJ+RmeT6kJoeV1nYqJYBF1j8Utd3ZjTqofFHTZcf+Fek3Z0OnZVEWapVW9ijZWilW5hKBC6JN/kQ0E5hqEzgbhomdD73puuPBSODICyC73Q2yZmiaKE9zKFCasnbegBK349IDbacqGPrdEOC0TBrUjMOH7XJS7WpNQ9maau/3s0xLO3JzrZaAEUfO/m3e43DfZ6ky2Vl8FPpnQqr22tK+4jENc69WinS4b2NBq/W1Dm27p1Jm9kAhd05jQXtR2edp5q+QBxFwbIZjlXAlONJdrEOr4KD6aK3rOYWxAjYG8xnnnUvqhNaAZiongikzYEhwIwmPFhIFzU4TnMuHqPCb0uzVpGwQQH2VMyPkax3HLcixduNGPjehwTrWKT9MbdatCeKGpeSWLCW+KrZ8QWeSmcIbHhJfSZBHPwWfrn1040vhd2mBKNsOclpBUtZdbVmyo2wvbDpcKdLqs8m02V9s50LYFTFjLtsZZYm5VsqFL+1AJbdN9HplwpS4RWueM2mZAqGpSg3CxqHed9EsMyja0WqfaCDmZ0BNs/YDYUAh9Jgir7jWJMOhewomKXlZjkpDkpJusCws3HQtp5aBurPKt0rs2EGdxWZ/QJxGi4GSC8AITTrid536ca9h0Qs3LCaudHKGtyA3ZhIFaqwcTPoVwzoAwsNGVEEacGk6IJopU1YEJ9bIa04SKl9Y2zM9zacotE9bbAsrGiiGhTSKc60pI+zzSHLx+TgZd0tqt3phvjrDZD2umuyEK/jcSobWtzL4QEjIhdEPC6V7C6bS1+lobNkaLqZpmU0EnxKDSEX0DIKzKhG7IYlf8EuF5h47Y2Uspn2TDxRvtoNqB0OeyDoyQgm7YIDx3YEKb59WEpPN1hPWBEcKII62F1SHzooMO3A8dutMLU4RKXnpnlNHoinZ+UQhbB/Y+EOJuiAhdMOJAdiHNaqwdQv1gCC8GZkMi6JGmzyhhIjj3PJ5AB7KvJXydl9JcbXCE2ZpECN0QUr+iX7LhinFC0sWG1IgR0tzKDSb8sgJpLk1kHZjQvmo8mnUhlNdpploIpS1FxsiDJHQWZULsl0TQJS3VBTSrwiYJSWUlqqYipElftVoNOg0ZaU7uh6t9J4RAIy1j1XFsgTF/Hi9kBeZeS0hvL+D10lqzrZA/u9Gat3vFabT7U440gQHkNNWaROjGDaI5jx8TWlcMQ2E3Qkra0FibaSxs+DwX0p2ZSVe2ffFNuQZfBpSX0tT5DSZcl9b94L8d2EvtOvN8c4TgpmhVH80t5HUdrnjRuDNT9+iepIz4AQ/Zb0KuKBF+kfM0Ys4xj5dbjcf8boQ0h+9bLK5I14imsxfq+4duvYKJDbv+/LBnQph/4ftfm3U514YEUSJcDb6akFrA9548UkekfRebKsKJeT3vIKry3GKxbYGjd8KqR1owV0wGWY0fEwbOX0uIbj7NAGStKvGCCVV3SCcn/XeauwYEKYdS10bfCbM1TLiuXFgY8x14sd3qMdrd052QW0B3SBfx8hjh9Gw2CfGqc12zDERzcuLdPvXumRCmSzcSYVHhIap2TGhr3k16KaF8l1tabCOCF437+NL+78mli/ailemh5uZMz4Qw3m9hwi8Nn4QxHxPaA68npLmpRUC8uUP7nYubMuHEvN2Bb1Ms+autQz9N3QQw4f+C7QvCPdtwoyjdmnM34grEbdwR7QGjUGOCEO/FmFmEkQEGWHkvxoR//mQ/lzs9mbXZ2oyIxgqbtIbRbtye+2FVJrxtLu5yHgcmtBotuJnwUto5tbU4NQWxht64kL64MOFfOsWr+MT7/dm2qQuRlZ20pkm5eiSEOHcjEzZSDRjz7RKh5t7fCwjRjqEpaBdHVGt4M8bskuOj7Jo0sb12oT4VrbRJK8KaWWknQrsJQoJbucO3Vy9U6zJE0I77oWGoMUEIyekiMqKnSmQ3EeHOpP+yuTJFE8vqBJuYk+9baBcxeyb0FfF2iTW3Ks+GMR/HUrvRPN8UITWzBYh3Hu4OE86+m99vmUy1HHtjtRvc5jaxItyZMFicwoQti/9OtwMTwpivS2CGkKRzeGPbRfZmDSUULSbUULiku2s6iSLaIdHLqj5RvZEI3U7119WKdkRosxb1x3xzhO+n8NZEtwcR7kz7fxgeSdes0k6FC21oI3q7M0NTxTuJ8LNbkcvlqq/aJS816IimCEkit7WGjOhGhLNL04abgyFPlO+QBrU+A01U7q61fmju7hrN3S5OyVtVVBsVpC0SEIsD+jcAzRHS7xfXAHHrAnXDiaXftTtY5OPoOyu+za0TZ5BWqtId0hWufYCRCN2d7pBCyjg11diM09yp0CDUX9s3R0jSC40twjuTSyc6m/NwU2hfHd/GN6iNqOrf5aY9Vgd27Y53uYngyoyasLnRCRNCqNG98GYJt7cUwvXpd9o9pTQlnY5MiAZvfRNC1iUTtoQhmmvsVNAANo+Dsf1OQ/hOZUOr/jxftduk43ohPbW2uYYJZ6cnT7VdzIkaTTvr0n6aQFY3rkGomZIIs+rvB+JuiFzb5etgQ0i7p6T9VBcXaHdkvV7Hk1841eHHLrCq2xGJqknCHCRrEuG7iZxOmPTcUDQBYyGuq26UQVVX8H6atduqb6OhObfd333HEDjADLbhxe15q4qr2Ia2gO6Y3yQ0Xo/DhNzi5g424sS737XbgmnqDq6gz2VHhHa9LZ/yYbeSHTbRhjOXrFU73vaJRsNOhNk7eT9VsO0Qp8shEdZ0k++qvK/NUe0ECI073dnZNCREk8Iad2OD6RQ09cKwTxPBW9zKxs69SenrKYgQMvgOO/doauVO2lDpbrMF9A2HvCNSdzkq+0X6qo/jvAvh9toOMiIaLPQIN2wuj8shEVaNF4up82KTcKK5+xJCYZHrRAhOuiDbsH0TC+79dmnnr7b/UCsyob+o+WZ1aznE1vo6EG5O6tvQB81EX1uHeYzboBfiYsgVjw6h3xbwQEpiTAiXBu82AkRdQjveGKeT1hA+z/qltM2zU7twQQs76zuGhDR5Ie9NtNs67tuguayn1tzY+g57qcMaKKLGGRLS5PnnlZVisebxeD6339MO/hZYhf+BftNs+yGo89/qeKen3f6b7tY8VdOON5ERgfBS7wsIxIpd2gVtrXW+T0UQcys4p5TrRf1n1RPsvJOdpoJNbbSN7Buqz9rrpqm55odzne+CQkdcn13bgpTmUi8tJe4cMqHh/jClIIL0qapFNfvkre+dIo3q6w6aApsfaaO8+tPODSOpqdnZna11SNr0eixaEkL90Frr/rXEdgq6aSpDwrcQfQap0ubs9PS+7qdczY5sqLc12HwVQyZ8v4NWgacn9b8HRG+4YDg0HOzNVTHkbzoTp3hg+aj/tR+a8NVc1k47W7pr2IQ0tTCxtHRiNP2laW4jaLTybLaG4RICw/vt7Q5e2HOLhk4obVIYZPHDJxyw/iMcf/1HOP7qJ6H+w6G6Pj6q+6OlenpY1IsJOzRHOkB6MJfh0/WaT5LTe7qcrMbRcDoqrVmzprWE6Wd9dSNsNJjjOPTMNvn5dLnGQ9vwN5maj6lbU9T+xDbpQW2qB9D559uf17akHDA9iR7uNvE7aHb2cn39UnlOG1q/+giamplZzuWOt5sX6X17w80QUviRgT5fE6n5RWX9Z+41HrnXeHpg85l7qofuTWoeS6c8cE9+5J7yRRn8DfL/tSlgtdoc/nkoQHpMHVyDy69fZ9qnYea+Q4qnmBhWsqbsbQ1DtthSeWriVBNfha56cuLlJfwB60gmUth/l4Taq9La2skafsTeCTLdD9D+KXqIYE4yXMOVdRpvQKjn77LXN/xe1Q+kziBPeLU9UNPRzKjZFzs+ca/REY0+1CckLG8sLxL+u/9FjwbhIPUf4fjrP8Lx16gT9h5duxMe654XL+n9iCXgHOBY5+j2I1tUKgnyT3wuB3/ncmfb3tKnmNcilFTnxeNt53n5s5x+OZK6E35rOV9R+ad0cb2icPRH60f7uye7f/31rLr43tA970X/PLZW3tLQpz+Vtud2d4+9x7sfnre96TwNl+zqqnlY/jvdet7Hbz9+/7rd/EX+gNcndBoQ/gW1CXFBEOJxQb6C8FO8FPei3wiZh1I87kW/RwfhNu7nTj/s75/Cr9Bv0C+FUhwXUYrjEvAn8t+obNROIZ5/UAx0/G13G+r9Bh6KzxAen+BzHlfMS0VJzUAHP++eeX/s7nvjqB44wPv0QHtxW1sJOSKjT/gMhMJRuRLLX1XSwvXR9zR9ffTpWvw7bXnI/5MW/6w8/f0kHOXvxdKncujPiHxVvF7h6p7/non8WSkfCOmDp/xDKiP+mbHkrw/i5YPCHylL+f76IE+XEldJMG/86ujTkyV6fQD+6P3x/OHs+evuRy//dPSvV7wPfSoJ+fK98PTwbz59EE0fpB6ueKGQ/wcu0Onuidf7cXf/6dN92VIu/7wWrjLeWOgg5m0jzBDKy0laCL3PP56BsFwuCZWrkuX60VJOife8IIiP/FE5/gf8G498ilfKwtU1fxVKfJccbfcv6DwP+chjnD8IVe4tcNTRVcQi3sdT+cqRJfUYfczQlUfxQIzfi/8ClFCu8I+l63y+jK7989mH569gG6GcL+dLj2K6bHm4fngS70vgBgeC+ClaPrKUn8p5OPbr7g/v9l/fzp4eI3AV+PuI8EdcfLi+b7chnyRY9bvkFMD9k5Nv34698ceUl38oCz/T8Z+xSsLrpSsVyz+l2JXl+opIHQkHYumfiHgQOUK9Bs76AF03fhApXxHRR+HTkzf/QAgPD3S+HP9+9ETQ/+TFAwv//TpzL6S+58HHvZED/ulB+F5+QjXnfhzvftv++u24BAfS11dkOSP+W4kQ5TyquOzNX4nfY/GDiogq++sD1Lf7g05ULPHvYuzBUngQ7stPmn4YZYkww2sIc1+9XvBSsRR7iIul+/ifpcoDuCydj1wl0j/T/1YyV/noVSLzM/KQt1TK/GMKBT3v192cxXv9GP2ZSJfz/M9Q/D6fiIiPwlUq+ihaniJ/gNEzsU985SFWfrBkwNfEP/n7cvoxZrmG88/2t3fPjr89e0t/e8V0pZw+yCTu46JYPhKiwkE+c58Wf2YyP0vxGBz848PpMbgMfx/zRv6IXT2IV9fXn66FfBshz4aJNJMi2wj3L58t+2trz5F8JR65rpS8saMnuN6Vo3g8f22p5PN5IZ8vwd+ZyhMtVMR4/gl5/zOc4vWmK+nrPJ+PlKD7oqPQSXnLdaVCp6/hH8tTnn7Kx+OVowjqhlDWNRRTEVCtX4/3zy5Pvh5Dt7+2lKCetKVSydAlOFao5ONHQgnsV6lco8q8Py4v971eMS9YBPByqKhSilUq8VZCMsVkCGdS9dJHxUu9eGIj/yv9rPxkkSc88o/yr6Sz5GPRbyyNQ5STLOo/yoiuzJ6UWpUiveqPlDIaJTVrs3ibhVhaJ2GIR3oHksjucW2Ev4TQSLEnvVT1kIn+ooQZJoR7IN98OemwW9VPIR9V3viUZkPcL0jIJRrvsqQSTOaXI/TCKNF8CaIvzJaIX02+sPpdnRkmZfiG2TEVl2LUL5PnEozpd8uPidLyO5AURRj213o9oDPMtL1PNsMcjv/LjpvScUr41fi/sLqpAhvSGAzM+qu8Dhh1wrBOpxO7vHd9jATJjO47OWO64GMofs/IHQttAXZMBSHF6MW4XIKNjv97nckom9B+cU2WsXnHSGmm05t/I+zYR5tIl7dTi+OOGAmzsY4HkBkmrP1+6fiIDzOFbi9syIyzFSN7bLTrQVS0Y08daUGkNDUYFNhkvPtRIyg+xKa6v1MERBXG04p8kimYzFjIBHM4foj8IZMwZUEksGJy3BCdhy9aiaEOmdB4IfKJFybVVIoZq0EDMpnUC1NqcFT9OdZISgy/ZrEwFjY3uAxfKBF71YxBZJnoOMwXuSjTOdk2VjzEJA1nWiMjAVr56pDh7OXkNxIyQw9hnxv5eAMxptDbQm+GZaOj66lClGUyphMZfZFwkUKj6qmlEBOO9QgI4lNwnUYxpnLgX6m+ZF5UmmESo5fD8SmGyfRrwIakj0mP1uhPxeCy93EaC4MqmxqlgMNB1zE7GTSpSBI69aj0Rg4yyr2+hz++AG4xGkE1Ap2mMIjAIIZYdgQiDp8Ks6EBpSFcbI8JZ4Z7q5jLhGEiMbjuIkTDTDLd+xj7WpExGOOjg/UjH0xVQuJwRg4ycggdcOCxgISoyqaGEXIiKXCgt7m46RDD7IlvG3Oc4h4DHeStqhNiuLq3izkcuqjh2JsGOeQyTDT+Fj5D8dD3w4k3n6dSJUic2MH3eyIC8ZtJRYYS3JxRCDrJND+4yik+nWSZ5IDHh05yppMMGHJAHcQZK7Covw83j6IihT2W2UuJXH/zAJITUxDO9obknq0S8KVmUyLfL0iSF3GRhdiozNgoPnYYBksmon244lQkkwDrhQ9jA+zgrxEnRmHMghlWOsK/NjHm+Eg6hQpJRt927DMp0hmPJcJhlgVbpiMvpeQi6Whij2XD4UQs7uxjp/5/JLs32h6snw4AAAAASUVORK5CYII='
    logo2.style.width = '100px'; // Adjust the size of the logo
    containerlog.appendChild(logo2);
    containerlog.style.display = 'flex';
    containerlog.style.flexWrap = 'wrap';
    containerlog.style.justifyContent = 'space-between';

    var container = document.createElement('div');
    container.id = 'gradio-animation';
    container.style.fontSize = '2em';
    container.style.fontWeight = 'bold';
    container.style.textAlign = 'center';
    container.style.marginBottom = '50px';

    var text = 'Cette application est realisée dans le cadre du congrés ATMO 1-2  mars 2024 à Monastir';
    for (var i = 0; i < text.length; i++) {
        (function(i){
            setTimeout(function(){
                var letter = document.createElement('span');
                letter.style.opacity = '0';
                 letter.style.color='red'
                letter.style.transition = 'opacity 0.5s';
                letter.innerText = text[i];

                container.appendChild(letter);

                setTimeout(function() {
                    letter.style.opacity = '1';
                }, 50);
            }, i * 250);
        })(i);
    }

    var gradioContainerlog = document.querySelector('.gradio-container');

    gradioContainerlog.insertBefore(containerlog, gradioContainerlog.firstChild);
    var gradioContainer = document.querySelector('.gradio-container');
    gradioContainer.insertBefore(container, gradioContainer.firstChild);

    return 'Animation created';
}
"""


#clf = load('filename.model') 
#predictions = clf.predict(X_test)


def predict_survival(densites,  diametres):
   
    df = pd.DataFrame.from_dict(
        {
            "densites": [densites],
            "diametres": [diametres]
        }
    )
    if 300> densites or densites>1200 :
    	 gr.Info("La densité doit être entre 300 et 1200 HU'")
    	 return None
    if 3> diametres or diametres>6 :
    	 gr.Info("le diametre doit être entre 3 et 6 mm")
    	 return None
    pred = clf.predict_proba(df)[0]

    html=0
    if (pred[0]<pred[1]):
        html = (
            "<div style='max-width:100%; color:green; font-size: 20px; background-color:white; text-align:center; max-height:360px; overflow:auto'>"
            + "<br> <br> Vous pouvez poser l'implant (précison : "+str(int(pred[1]*100))+"%)<br> <br>"
            + "</div>"
        )
    else:
        html = (
            "<div style='max-width:100%; color:red; font-size: 20px; background-color:white; text-align:center; max-height:360px; overflow:auto'>"
            + "<br> <br> Vous ne pouvez pas poser l'implant (précison : "+str(int(pred[0]*100))+"%)<br> <br>"
            + "</div>"
        )

    json_pred={"No": float(pred[0]), "Yes": float(pred[1])}
    return html


demo = gr.Interface(
    predict_survival,
    [
       
        
        gr.Number(label="Densité 'entre 300 et 1200 HU'"),
        gr.Number(label="Diametre 'entre 3 et 6 mm'")
        
    ],
    ["html"],
    examples=[
        [700, 5],
        [1200, 3],
        [311, 5.2]
    ],
    live=False,
    js=js,
    submit_btn="Prédire"
)

if __name__ == "__main__":
    demo.launch(share=True)