| from fastapi import FastAPI, HTTPException |
| from fastapi.middleware.cors import CORSMiddleware |
| from fastapi.staticfiles import StaticFiles |
| from fastapi.responses import FileResponse, HTMLResponse |
| from pydantic import BaseModel, Field |
| from typing import Dict, Any |
|
|
| from mimis_inference import predict_philicity |
| from routes_ui import router as ui_router |
|
|
| app = FastAPI(title="Philicity API", version="1.0") |
|
|
| app.include_router(ui_router) |
|
|
| |
| app.add_middleware( |
| CORSMiddleware, |
| allow_origins=["*"], |
| allow_credentials=True, |
| allow_methods=["*"], |
| allow_headers=["*"], |
| ) |
|
|
| |
| app.mount("/static", StaticFiles(directory="static"), name="static") |
|
|
|
|
| |
| |
| @app.get("/", response_class=HTMLResponse) |
| @app.head("/", response_class=HTMLResponse) |
| def home(): |
| return FileResponse("static/index.html") |
|
|
|
|
| @app.get("/health") |
| def health(): |
| return {"status": "ok"} |
|
|
|
|
| class PhilicityRequest(BaseModel): |
| original_smiles: str = Field(..., min_length=1) |
| radical_smiles: str = Field(..., min_length=1) |
|
|
|
|
| @app.post("/predict") |
| def predict(req: PhilicityRequest): |
| try: |
| y = predict_philicity(req.original_smiles, req.radical_smiles) |
| return {"philicity": y} |
| except Exception as e: |
| raise HTTPException(status_code=400, detail=str(e)) |
|
|
| |
| |
| |
|
|
| |
| |