Docking@HOME System Architecture
Complete System Overview
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β USER INTERFACES β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββββββ β
β β Web Browser β β Terminal β β Python Scripts β β
β β localhost: β β CLI β β (API calls) β β
β β 8080 β β Commands β β β β
β ββββββββ¬ββββββββ ββββββββ¬ββββββββ ββββββββββββ¬ββββββββββββ β
β β β β β
βββββββββββΌββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββββ
β β β
β β β
βββββββββββΌββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββββ
β APPLICATION LAYER β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β FastAPI Web Server β β
β β (gui.py) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β β β
β β REST API: WebSockets: Static Files: β β
β β β’ POST /upload β’ /ws β’ HTML/CSS/JS β β
β β β’ POST /api/jobs β’ Real-time β’ Embedded GUI β β
β β β’ GET /api/jobs β’ Job updates β’ Responsive β β
β β β’ GET /api/stats β’ Progress β’ Dashboard β β
β β β β
β ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββ β
β β Job Manager β β
β β (server.py) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β β β
β β β’ Job Queue (asyncio.Queue) β β
β β β’ Worker Tasks (2-4 concurrent) β β
β β β’ Job Status Tracking β β
β β β’ Statistics & Monitoring β β
β β β β
β ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ β
β β β
βββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββ
β EXECUTION LAYER β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β AutoDock Executor β β
β β (server.py) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β β β
β β 1. Find AutoDock executable β β
β β 2. Generate DPF file β β
β β 3. Run docking calculation β β
β β 4. Parse DLG results β β
β β 5. Extract energies & poses β β
β β β β
β ββββββββββββββββββββ¬βββββββββββββββββββ¬ββββββββββββββββββββββββββββ β
β β β β
β βββββββββββββΌβββββββββ ββββββΌβββββββββββββββββ β
β β AutoDock Found? β β AutoDock NOT Found? β β
β βββββββββββββ¬βββββββββ ββββββ¬βββββββββββββββββ β
β β β β
βββββββββββββββββββββββΌβββββββββββββββββββΌββββββββββββββββββββββββββββββββ
β β
ββββββββββββββΌββββββ βββββββββΌββββββββββ
β REAL MODE β β SIMULATION MODE β
ββββββββββββββ¬ββββββ βββββββββ¬ββββββββββ
β β
βββββββββββββββββββββββΌβββββββββββββββββββΌββββββββββββββββββββββββββββββββ
β COMPUTATION LAYER β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββ β
β β Real AutoDock β β Simulation Engine β β
β ββββββββββββββββββββββββββββββββ€ βββββββββββββββββββββββββββββββ€ β
β β β β β β
β β ββββββββββββββββββββββββββ β β β’ Fast execution (0.01s) β β
β β β autodock4 (CPU) β β β β’ Realistic energies β β
β β β or β β β β’ JSON results β β
β β β autodock_gpu (CUDA) β β β β’ Perfect for testing β β
β β ββββββββββββββββββββββββββ β β β β
β β β β βββββββββββββββββββββββββββββββ β
β β ββββββββββββββββββββββββββ β β
β β β GPU Acceleration β β β
β β β (CUDPP Primitives) β β β
β β ββββββββββββββββββββββββββ β β
β β β β β
β β ββββββββββββββββββββββββββ β β
β β β Genetic Algorithm β β β
β β β Energy Calculations β β β
β β β Pose Clustering β β β
β β ββββββββββββββββββββββββββ β β
β β β β β
β β ββββββββββββββββββββββββββ β β
β β β DLG Output File β β β
β β β β’ Binding energies β β β
β β β β’ Poses & conformers β β β
β β β β’ Cluster analysis β β β
β β ββββββββββββββββββββββββββ β β
β β β β
β ββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β RESULTS STORAGE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β results/ β
β βββ job_abc123/ β
β β βββ results.json (Parsed results) β
β β βββ docking.dpf (AutoDock parameters) β
β β βββ docking.dlg (AutoDock log/results) β
β β βββ docking.glg (AutoDock general log) β
β β β
β βββ job_def456/ β
β β βββ ... β
β β β
β βββ uploads/ β
β βββ ligand_xxx.pdbqt β
β βββ receptor_yyy.pdbqt β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Data Flow Diagram
User Action (Upload files)
β
GUI sends POST /upload
β
Files saved to uploads/
β
User clicks "Start Docking"
β
GUI sends POST /api/jobs
β
Job Manager creates job
β
Job added to queue
β
Worker picks up job
β
AutoDock Executor runs
β
βββββββββββββββββββββ
β Is AutoDock β
β installed? β
ββββββββββ¬βββββββββββ
β
ββββββ΄βββββ
β β
Yes No
β β
β ββββββΌβββββββββ
β β Simulation β
β β Mode β
β ββββββ¬βββββββββ
β β
β ββββββΌβββββββββββββ
β β Generate random β
β β realistic data β
β ββββββ¬βββββββββββββ
β β
βββββΌββββββββββΌββββ
β Progress updatesβ
β via WebSocket β
ββββββββββ¬βββββββββ
β
ββββββΌβββββ
β Results β
β ready β
ββββββ¬βββββ
β
GUI displays results
β
User sees:
β’ Binding energies
β’ Poses
β’ Clusters
β’ Statistics
Technology Stack
βββββββββββββββββββββββββββββββββββββββ
β FRONTEND β
βββββββββββββββββββββββββββββββββββββββ€
β HTML5 + CSS3 + JavaScript (Vanilla) β
β WebSockets for real-time updates β
β Responsive design (mobile-ready) β
βββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββ
β BACKEND β
βββββββββββββββββββββββββββββββββββββββ€
β FastAPI (Python async framework) β
β Uvicorn (ASGI server) β
β WebSockets (bidirectional comms) β
β Pydantic (data validation) β
βββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββ
β COMPUTATION ENGINE β
βββββββββββββββββββββββββββββββββββββββ€
β AutoDock Suite 4.2.6 β
β CUDPP (GPU primitives) β
β Python asyncio (concurrency) β
βββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββ
β DISTRIBUTED LAYER β
βββββββββββββββββββββββββββββββββββββββ€
β BOINC (volunteer computing) β
β The Decentralized Internet SDK β
β Cloud Agents (AI orchestration) β
βββββββββββββββββββββββββββββββββββββββ
Deployment Options
Option 1: Localhost (Current Implementation)
[Your Computer]
β
http://localhost:8080
β
All processing local
Option 2: Single Server
[Central Server]
β
http://server-ip:8080
β
Multiple users connect
All jobs on one machine
Option 3: Distributed (Future)
[Master Server]
β
Task Distribution
β β β
[Worker 1] [Worker 2] [Worker 3]
β β β
GPU Jobs GPU Jobs GPU Jobs
Option 4: Cloud (Future)
[Cloud Load Balancer]
β
ββββββββββΌβββββββββ
β β β
[Node 1] [Node 2] [Node 3]
β β β
[DB] [Storage] [Cache]
File Processing Flow
1. User uploads ligand.pdbqt and receptor.pdbqt
β
2. Files saved to uploads/ directory
β
3. Job created with file paths
β
4. AutoDock Executor generates DPF file
β
5. DPF specifies:
- Ligand/receptor paths
- Grid box parameters
- Search parameters
- Output file path
β
6. AutoDock runs using DPF
β
7. Results written to DLG file
β
8. Parser extracts:
- Binding energies
- Conformations
- RMSD values
- Cluster information
β
9. Results converted to JSON
β
10. Stored in results/job_id/
β
11. Sent to GUI for display
β
12. User downloads or views results
Authors
- OpenPeer AI
- Riemann Computing Inc.
- Bleunomics
- Andrew Magdy Kamal