| |
| """ |
| Launch script for B-cell Epitope Prediction Server |
| Allows users to choose between Gradio and FastAPI interfaces |
| """ |
|
|
| import sys |
| import os |
| import argparse |
| from pathlib import Path |
|
|
| def print_banner(): |
| """Print application banner""" |
| print("=" * 60) |
| print("𧬠B-cell Epitope Prediction Server") |
| print(" AI-powered epitope prediction using ReCEP model") |
| print("=" * 60) |
| print() |
|
|
| def launch_gradio(): |
| """Launch the Gradio interface""" |
| print("π Starting Gradio Interface...") |
| print("π Interface will be available at: http://localhost:7860") |
| print("β¨ Features: Advanced UI with progress tracking") |
| print() |
| |
| |
| import app |
| interface = app.create_interface() |
| |
| |
| is_spaces = os.getenv("SPACE_ID") is not None |
| |
| interface.launch( |
| server_name="0.0.0.0", |
| server_port=7860, |
| share=is_spaces, |
| show_error=True, |
| max_threads=4 if is_spaces else 8 |
| ) |
|
|
| def launch_fastapi(): |
| """Launch the FastAPI interface""" |
| print("π Starting FastAPI Interface...") |
| print("π Interface will be available at: http://localhost:8000") |
| print("π API documentation at: http://localhost:8000/docs") |
| print("β¨ Features: RESTful API with interactive web interface") |
| print() |
| |
| |
| import uvicorn |
| import fastapi_app |
| |
| uvicorn.run( |
| fastapi_app.app, |
| host="0.0.0.0", |
| port=8000, |
| reload=False, |
| access_log=True |
| ) |
|
|
| def main(): |
| """Main launcher function""" |
| parser = argparse.ArgumentParser(description="Launch B-cell Epitope Prediction Server") |
| parser.add_argument( |
| "--interface", |
| choices=["gradio", "fastapi", "interactive"], |
| default="interactive", |
| help="Interface type to launch (default: interactive)" |
| ) |
| parser.add_argument( |
| "--port", |
| type=int, |
| help="Port number (7860 for Gradio, 8000 for FastAPI)" |
| ) |
| |
| args = parser.parse_args() |
| |
| print_banner() |
| |
| if args.interface == "gradio": |
| launch_gradio() |
| elif args.interface == "fastapi": |
| launch_fastapi() |
| else: |
| |
| print("Please choose an interface:") |
| print("1. Gradio Interface (Recommended for beginners)") |
| print(" - User-friendly web interface") |
| print(" - Progress tracking") |
| print(" - Built-in file handling") |
| print(" - Port: 7860") |
| print() |
| print("2. FastAPI Interface (Recommended for developers)") |
| print(" - RESTful API") |
| print(" - Interactive documentation") |
| print(" - Programmatic access") |
| print(" - Port: 8000") |
| print() |
| |
| while True: |
| choice = input("Enter your choice (1 or 2): ").strip() |
| if choice == "1": |
| launch_gradio() |
| break |
| elif choice == "2": |
| launch_fastapi() |
| break |
| else: |
| print("Invalid choice. Please enter 1 or 2.") |
|
|
| if __name__ == "__main__": |
| try: |
| main() |
| except KeyboardInterrupt: |
| print("\nπ Server stopped by user") |
| sys.exit(0) |
| except Exception as e: |
| print(f"β Error: {e}") |
| sys.exit(1) |