CoolFace
Apppublic

MeraMK/Drugs_effect-side

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
app.py94 linesDownload Raw Back to root
1# -*- coding: utf-8 -*-2"""Untitled19.ipynb3 4Automatically generated by Colab.5 6Original file is located at7    https://colab.research.google.com/drive/1UK8ex5rmaHlIIRW5bT85IhaeILrFSAe28"""9 10from fastapi import FastAPI, HTTPException11from pydantic import BaseModel12import pandas as pd13import pickle14 15# =============================16# Load model & encoders17# =============================18try:19    with open("Drug_effect.pkl", "rb") as f:20        model = pickle.load(f)21 22    with open("onehot_encoder.pkl", "rb") as f:23        ohe = pickle.load(f)24 25except FileNotFoundError as e:26    raise RuntimeError(f"Missing file: {e}")27 28# =============================29# FastAPI app30# =============================31app = FastAPI(title="Drug Effect Prediction API")32 33# =============================34# Input schema35# =============================36class DrugRequest(BaseModel):37    drug_name: str38 39categorical_features = [40    'drug_name',41    'rx_otc',42    'drug_classes',43    'csa',44    'alcohol',45    'generic_name',46    'medical_condition',47    'activity'48]49 50# =============================51# Encoding function52# =============================53def encode_input(drug_name: str) -> pd.DataFrame:54    full_input_data = {55        'drug_name': drug_name,56        'rx_otc': 'Unknown',57        'drug_classes': 'Unknown',58        'csa': 'N',59        'alcohol': 'Unknown',60        'generic_name': 'Unknown',61        'medical_condition': 'Unknown',62        'activity': 'Unknown'63    }64    input_df = pd.DataFrame([full_input_data])65    encoded_array = ohe.transform(input_df[categorical_features])66    encoded_df = pd.DataFrame(67        encoded_array,68        columns=ohe.get_feature_names_out(categorical_features),69        index=input_df.index70    )71    return encoded_df72 73# =============================74# Routes75# =============================76@app.get("/")77def root():78    return {"message": "API running"}79 80@app.post("/predict")81def predict(request: DrugRequest):82    try:83        df_encoded = encode_input(request.drug_name)84        pred_label = model.predict(df_encoded)[0]85        return {"predicted_pregnancy_category": pred_label}86    except Exception as e:87        raise HTTPException(status_code=500, detail=str(e))88 89# =============================90# Run uvicorn when script is executed91# =============================92if __name__ == "__main__":93    import uvicorn94    uvicorn.run(app, host="0.0.0.0", port=8000)