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) and convert to array aac = np.array(list(AAComposition.CalculateAADipeptideComposition(sequence))) # Normalize using the pre-trained scaler (Ensure the scaler is loaded correctly) normalized_features = scaler.transform([aac]) # Don't use fit_transform(), only transform() 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)