import gradio as gr import joblib import numpy as np from propy3 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.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)