| # 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 | |