Kung-Hsun commited on
Commit
7b00b7a
·
verified ·
1 Parent(s): df20c05

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -6
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
- def train_and_predict(f, s):
190
- if not f: return "請先上傳CSV", ""
 
 
 
191
  df = add_fps_and_desc(load_csv(f))
192
  model, scores = train_model(df)
193
- pred = predict_single(model, s)
194
- return f"模型交叉驗證: {np.round(scores,3)}", str(pred)
195
- file5.upload(lambda f: "已載入, 請輸入SMILES進行預測" if f else "請上傳資料", file5, model_status)
196
- smiles_pred.change(lambda s: train_and_predict(file5.value, s), smiles_pred, [model_status, y_pred])
 
 
 
 
 
 
 
 
 
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