Spaces:
Running
Running
| import gradio as gr | |
| import joblib | |
| from fastapi import FastAPI | |
| import joblib | |
| import numpy as np | |
| from pydantic import BaseModel | |
| import propy | |
| from sklearn.preprocessing import MinMaxScaler | |
| # Load trained SVM model | |
| model = joblib.load("SVM.joblib") | |
| # Define request model | |
| class SequenceInput(BaseModel): | |
| sequence: str | |
| def extract_features(sequence): | |
| """Calculate AAC, Dipeptide Composition and normalize features.""" | |
| # Calculate Amino Acid Composition (AAC) | |
| aac = propy.AAComposition.CalculateAAC(sequence) | |
| # Calculate Dipeptide Composition | |
| dipeptide_comp = propy.AAComposition.CalculateAADipeptideComposition(sequence) | |
| # Combine both features (AAC and Dipeptide Composition) | |
| features = np.concatenate((aac, dipeptide_comp)) | |
| # Min-Max Normalization | |
| scaler = MinMaxScaler() | |
| normalized_features = scaler.fit_transform(features.reshape(-1, 1)).flatten() | |
| return normalized_features | |
| def predict(sequence_input: SequenceInput): | |
| """Predict AMP vs Non-AMP""" | |
| sequence = sequence_input.sequence | |
| features = extract_features(sequence) | |
| prediction = model.predict([features])[0] | |
| return {"sequence": sequence, "prediction": "AMP" if prediction == 1 else "Non-AMP"} | |