Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -186,14 +186,26 @@ with gr.Blocks(title="Cheminformatics Platform") as demo:
|
|
| 186 |
model_status = gr.Markdown("模型狀態")
|
| 187 |
smiles_pred = gr.Textbox(label="預測SMILES")
|
| 188 |
y_pred = gr.Textbox(label="預測值/類別")
|
| 189 |
-
|
| 190 |
-
|
|
|
|
|
|
|
|
|
|
| 191 |
df = add_fps_and_desc(load_csv(f))
|
| 192 |
model, scores = train_model(df)
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 197 |
|
| 198 |
gr.Markdown("---\n> 建議工作流:1️⃣資料導入 → 2️⃣特徵生成 → 3️⃣EDA探索 → 4️⃣分群 → 5️⃣建模預測")
|
| 199 |
|
|
|
|
| 186 |
model_status = gr.Markdown("模型狀態")
|
| 187 |
smiles_pred = gr.Textbox(label="預測SMILES")
|
| 188 |
y_pred = gr.Textbox(label="預測值/類別")
|
| 189 |
+
model_state = gr.State(None) # 新增 State 儲存模型
|
| 190 |
+
|
| 191 |
+
def handle_train(f):
|
| 192 |
+
if not f:
|
| 193 |
+
return "請上傳資料", None
|
| 194 |
df = add_fps_and_desc(load_csv(f))
|
| 195 |
model, scores = train_model(df)
|
| 196 |
+
return f"模型交叉驗證: {np.round(scores,3)}", model
|
| 197 |
+
|
| 198 |
+
def handle_predict(s, model):
|
| 199 |
+
if model is None:
|
| 200 |
+
return "請先訓練模型", ""
|
| 201 |
+
try:
|
| 202 |
+
pred = predict_single(model, s)
|
| 203 |
+
return "已預測", str(pred)
|
| 204 |
+
except Exception as e:
|
| 205 |
+
return f"預測失敗: {e}", ""
|
| 206 |
+
|
| 207 |
+
file5.upload(handle_train, file5, [model_status, model_state])
|
| 208 |
+
smiles_pred.change(handle_predict, [smiles_pred, model_state], [model_status, y_pred])
|
| 209 |
|
| 210 |
gr.Markdown("---\n> 建議工作流:1️⃣資料導入 → 2️⃣特徵生成 → 3️⃣EDA探索 → 4️⃣分群 → 5️⃣建模預測")
|
| 211 |
|