Spaces:
Running
Running
import gradio as gr | |
import joblib | |
import numpy as np | |
from propy import AAComposition | |
from sklearn.preprocessing import MinMaxScaler | |
# Load trained SVM model and scaler (Ensure both files exist in the Space) | |
model = joblib.load("SVM.joblib") | |
scaler = MinMaxScaler() | |
def extract_features(sequence): | |
"""Calculate AAC, Dipeptide Composition, and normalize features.""" | |
# Calculate Amino Acid Composition (AAC) | |
aac = AAComposition.CalculateAADipeptideComposition(sequence) | |
# Normalize with pre-trained scaler (avoid fitting new data) | |
normalized_features = scaler.fit_transform([aac]) | |
return normalized_features | |
def predict(sequence): | |
"""Predict AMP vs Non-AMP""" | |
features = extract_features(sequence) | |
prediction = model.predict(features)[0] | |
return "AMP" if prediction == 1 else "Non-AMP" | |
# Create Gradio interface | |
iface = gr.Interface( | |
fn=predict, | |
inputs=gr.Textbox(label="Enter Protein Sequence"), | |
outputs=gr.Label(label="Prediction"), | |
title="AMP Classifier", | |
description="Enter an amino acid sequence to predict whether it's an antimicrobial peptide (AMP) or not." | |
) | |
# Launch app | |
iface.launch(share=True) | |