Spaces:
Sleeping
Sleeping
| 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)), dtype=float) | |
| # Normalize using the pre-trained scaler (Ensure the scaler is loaded correctly) | |
| normalized_features = scaler.fit_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) |