|
|
|
|
|
"""
|
|
|
Docking@Hโ โ ๏ฟฝ๐งฌ AutoDock Suite 4.2.6 Integration โ
|
|
|
โ ๐ CUDA/CUDPP GPU Acceleration โ
|
|
|
โ ๐ BOINC Distributed Computing โ
|
|
|
โ ๐ Decentralized Internet SDK โ
|
|
|
โ ๐ค Cloud Agents AI Orchestration โoDock Suite 4.2.6 Integration โ
|
|
|
โ ๐ CUDA/CUDPP GPU Acceleration โ
|
|
|
โ ๐ BOINC Distributed Computing โ
|
|
|
โ ๐ Decentralized Internet SDK โ
|
|
|
โ ๐ค Cloud Agents AI Orchestration โ Complete Launch Script
|
|
|
|
|
|
This script starts the full Docking@HOME platform including:
|
|
|
- AutoDock GPU integration
|
|
|
- Web-based GUI
|
|
|
- Real-time job monitoring
|
|
|
- Distributed computing support
|
|
|
|
|
|
Authors: OpenPeer AI, Riemann Computing Inc., Bleunomics, Andrew Magdy Kamal
|
|
|
"""
|
|
|
|
|
|
import sys
|
|
|
import asyncio
|
|
|
import argparse
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
|
sys.path.insert(0, str(Path(__file__).parent))
|
|
|
|
|
|
from docking_at_home.gui import start_gui
|
|
|
|
|
|
|
|
|
def print_banner():
|
|
|
"""Print startup banner"""
|
|
|
banner = """
|
|
|
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
|
โ โ
|
|
|
โ Docking@HOME v1.0 โ
|
|
|
โ โ
|
|
|
โ Distributed Molecular Docking with GPU Acceleration โ
|
|
|
โ โ
|
|
|
โ Authors: OpenPeer AI โ
|
|
|
โ Riemann Computing Inc. โ
|
|
|
โ Bleunomics โ
|
|
|
โ Andrew Magdy Kamal โ
|
|
|
โ โ
|
|
|
โ ๐งฌ AutoDock Suite 4.2.6 Integration โ
|
|
|
โ ๐ CUDA/CUDPP GPU Acceleration โ
|
|
|
โ ๐ BOINC Distributed Computing โ
|
|
|
โ ๐ The Decentralized Internet SDK โ
|
|
|
โ ๐ค Cloud Agents AI Orchestration โ
|
|
|
โ โ
|
|
|
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
|
"""
|
|
|
print(banner)
|
|
|
|
|
|
|
|
|
def main():
|
|
|
"""Main entry point"""
|
|
|
|
|
|
parser = argparse.ArgumentParser(
|
|
|
description="Docking@HOME - Distributed Molecular Docking Platform",
|
|
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
|
epilog="""
|
|
|
Examples:
|
|
|
# Start GUI server (default)
|
|
|
python start.py
|
|
|
|
|
|
# Start on custom host/port
|
|
|
python start.py --host 0.0.0.0 --port 8888
|
|
|
|
|
|
# Show help
|
|
|
python start.py --help
|
|
|
|
|
|
Support:
|
|
|
๐ง Email: andrew@bleunomics.com
|
|
|
๐ค Issues: https://huggingface.co/OpenPeerAI/DockingAtHOME/discussions
|
|
|
๐ Docs: https://huggingface.co/OpenPeerAI/DockingAtHOME
|
|
|
"""
|
|
|
)
|
|
|
|
|
|
parser.add_argument(
|
|
|
'--host',
|
|
|
default='localhost',
|
|
|
help='Host to bind the server to (default: localhost)'
|
|
|
)
|
|
|
|
|
|
parser.add_argument(
|
|
|
'--port',
|
|
|
type=int,
|
|
|
default=8080,
|
|
|
help='Port to bind the server to (default: 8080)'
|
|
|
)
|
|
|
|
|
|
parser.add_argument(
|
|
|
'--workers',
|
|
|
type=int,
|
|
|
default=2,
|
|
|
help='Number of concurrent worker tasks (default: 2)'
|
|
|
)
|
|
|
|
|
|
parser.add_argument(
|
|
|
'--debug',
|
|
|
action='store_true',
|
|
|
help='Enable debug mode'
|
|
|
)
|
|
|
|
|
|
parser.add_argument(
|
|
|
'--no-browser',
|
|
|
action='store_true',
|
|
|
help="Don't automatically open browser"
|
|
|
)
|
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
|
|
|
print_banner()
|
|
|
|
|
|
|
|
|
try:
|
|
|
import fastapi
|
|
|
import uvicorn
|
|
|
import websockets
|
|
|
except ImportError as e:
|
|
|
print("โ Missing required dependencies!")
|
|
|
print("\nPlease install:")
|
|
|
print(" pip install -r requirements.txt")
|
|
|
print("\nOr install manually:")
|
|
|
print(" pip install fastapi uvicorn[standard] websockets python-multipart")
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
|
import shutil
|
|
|
autodock_found = False
|
|
|
for exe in ['autodock_gpu', 'autodock4', 'autodock']:
|
|
|
if shutil.which(exe):
|
|
|
print(f"โ
Found AutoDock: {exe}")
|
|
|
autodock_found = True
|
|
|
break
|
|
|
|
|
|
if not autodock_found:
|
|
|
print("โ ๏ธ AutoDock not found in PATH")
|
|
|
print(" Running in simulation mode")
|
|
|
print(" To use real AutoDock, install from:")
|
|
|
print(" https://autodock.scripps.edu/")
|
|
|
|
|
|
|
|
|
if shutil.which('nvidia-smi'):
|
|
|
print("โ
CUDA GPU detected")
|
|
|
else:
|
|
|
print("โ ๏ธ CUDA not detected - CPU mode only")
|
|
|
|
|
|
print("\n" + "="*70)
|
|
|
print(f"๐ Starting server on http://{args.host}:{args.port}")
|
|
|
print("="*70 + "\n")
|
|
|
|
|
|
|
|
|
if not args.no_browser:
|
|
|
import webbrowser
|
|
|
import threading
|
|
|
|
|
|
def open_browser():
|
|
|
import time
|
|
|
time.sleep(1.5)
|
|
|
webbrowser.open(f"http://{args.host}:{args.port}")
|
|
|
|
|
|
threading.Thread(target=open_browser, daemon=True).start()
|
|
|
|
|
|
|
|
|
try:
|
|
|
start_gui(host=args.host, port=args.port)
|
|
|
except KeyboardInterrupt:
|
|
|
print("\n\n๐ Server stopped. Thank you for using Docking@HOME!")
|
|
|
except Exception as e:
|
|
|
print(f"\nโ Error: {e}")
|
|
|
if args.debug:
|
|
|
raise
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
main()
|
|
|
|