epipred / test_deployment.py
mercelv's picture
uploaded app
920c25b verified
Raw
History Blame Contribute Delete
3.74 kB
#!/usr/bin/env python3
"""
Test script for deployment compatibility
"""
import sys
import os
def test_basic_imports():
"""Test basic Python imports"""
print("Testing basic imports...")
try:
import flask
print(f"βœ“ Flask {flask.__version__}")
except ImportError as e:
print(f"βœ— Flask: {e}")
return False
try:
import numpy as np
print(f"βœ“ NumPy {np.__version__}")
except ImportError as e:
print(f"βœ— NumPy: {e}")
return False
try:
import pandas as pd
print(f"βœ“ Pandas {pd.__version__}")
except ImportError as e:
print(f"βœ— Pandas: {e}")
return False
return True
def test_tensorflow():
"""Test TensorFlow import"""
print("\nTesting TensorFlow...")
try:
import tensorflow as tf
print(f"βœ“ TensorFlow {tf.__version__}")
return True
except ImportError as e:
print(f"⚠ TensorFlow not available: {e}")
print(" App will run in demo mode")
return False
def test_model_predictor():
"""Test model predictor"""
print("\nTesting model predictor...")
try:
from model_predictor import EpitopePredictor
predictor = EpitopePredictor()
if predictor.model is None:
print("⚠ Model not loaded - will use demo mode")
else:
print("βœ“ Model loaded successfully")
# Test prediction with demo sequence
test_seq = "MKLLILTCLVAVALARPKHPIKHQGLPQEVLNENLLRFFVAPFPEVFGKEKVNEL"
b_epitopes, t_epitopes = predictor.predict_epitopes(test_seq)
print(f"βœ“ Prediction test: {len(b_epitopes)} B-cell, {len(t_epitopes)} T-cell epitopes")
return True
except Exception as e:
print(f"βœ— Model predictor failed: {e}")
return False
def test_flask_app():
"""Test Flask app creation"""
print("\nTesting Flask app...")
try:
from app import app
with app.test_client() as client:
# Test health endpoint
response = client.get('/health')
if response.status_code == 200:
print("βœ“ Health endpoint working")
else:
print(f"⚠ Health endpoint returned {response.status_code}")
# Test main page
response = client.get('/')
if response.status_code == 200:
print("βœ“ Main page working")
else:
print(f"⚠ Main page returned {response.status_code}")
return True
except Exception as e:
print(f"βœ— Flask app test failed: {e}")
return False
def main():
"""Run all deployment tests"""
print("EpiPred Deployment Test")
print("=" * 30)
tests = [
("Basic Imports", test_basic_imports),
("TensorFlow", test_tensorflow),
("Model Predictor", test_model_predictor),
("Flask App", test_flask_app)
]
passed = 0
total = len(tests)
for test_name, test_func in tests:
try:
if test_func():
passed += 1
except Exception as e:
print(f"βœ— {test_name} ERROR: {e}")
print("\n" + "=" * 30)
print(f"Results: {passed}/{total} tests passed")
if passed >= 3: # Allow TensorFlow to fail
print("πŸŽ‰ Deployment should work!")
if passed < total:
print("⚠ Some features may be limited (demo mode)")
else:
print("❌ Deployment may have issues")
return passed >= 3
if __name__ == '__main__':
success = main()
sys.exit(0 if success else 1)