| # Cancer@Home v2 - Architecture Diagram | |
| ## System Architecture | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β WEB BROWSER β | |
| β http://localhost:5000 β | |
| ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββ | |
| β | |
| β HTTP/WebSocket | |
| βΌ | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β FRONTEND (HTML5/CSS3/JS) β | |
| β ββββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββββββββββββββ β | |
| β βDashboard β Neo4j β BOINC β GDC β Pipeline β β | |
| β β View β Viz β Tasks β Data β Tools β β | |
| β ββββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββββββββββββββ β | |
| β β | |
| β Technologies: D3.js, Chart.js, Vanilla JavaScript β | |
| ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββ | |
| β | |
| β REST API + GraphQL | |
| βΌ | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β BACKEND (FastAPI + Python) β | |
| β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β API Layer β β | |
| β β β’ REST Endpoints (/api/*) β β | |
| β β β’ GraphQL Endpoint (/graphql) β β | |
| β β β’ WebSocket Support β β | |
| β β β’ Swagger Documentation (/docs) β β | |
| β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β β | |
| β β Python Modules β | |
| β βΌ β | |
| β ββββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββ¬ββββββββββββββββββββββ β | |
| β β BOINC β GDC β Neo4j β Pipeline β Utilities β β | |
| β β Client β Client β DB β Tools β β β | |
| β ββββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββ΄ββββββββββββββββββββββ β | |
| βββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββββββββββββββββββββββββ | |
| β β β β | |
| β β β β | |
| βΌ βΌ βΌ βΌ | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β DATA & SERVICES LAYER β | |
| β β | |
| β ββββββββββββββββββββββ ββββββββββββββββββββββ ββββββββββββββββββββ β | |
| β β Neo4j Graph β β BOINC Server β β GDC Portal β β | |
| β β Database β β (Distributed) β β (External) β β | |
| β β β β β β β β | |
| β β Port: 7687 (Bolt) β β Local/Remote β β api.gdc.cancer β | |
| β β 7474 (HTTP) β β Task Processing β β .gov β β | |
| β β β β β β β β | |
| β β β’ Genes β β β’ Variant Calling β β β’ TCGA Data β β | |
| β β β’ Mutations β β β’ BLAST Search β β β’ TARGET Data β β | |
| β β β’ Patients β β β’ Alignment β β β’ Clinical Data β β | |
| β β β’ Cancer Types β β β’ Annotation β β β’ Genomic Files β β | |
| β ββββββββββββββββββββββ ββββββββββββββββββββββ ββββββββββββββββββββ β | |
| β β | |
| β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β β Bioinformatics Tools (Local) ββ | |
| β β ββ | |
| β β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββββββ ββ | |
| β β β FASTQ β β BLAST β β Variant Caller β ββ | |
| β β β Processor β β Runner β β β ββ | |
| β β β β β β β β ββ | |
| β β β β’ QC β β β’ BLASTN β β β’ VCF Generation β ββ | |
| β β β β’ Filtering β β β’ BLASTP β β β’ Annotation β ββ | |
| β β β β’ Trimming β β β’ Parsing β β β’ TMB Calculation β ββ | |
| β β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββββββ ββ | |
| β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β | |
| βΌ | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β FILE STORAGE β | |
| β β | |
| β data/ β | |
| β βββ gdc/ # Downloaded GDC files β | |
| β βββ boinc/ # BOINC task data β | |
| β βββ processed/ # Analysis results β | |
| β β βββ fastq/ β | |
| β β βββ blast/ β | |
| β β βββ variants/ β | |
| β βββ cache/ # Temporary files β | |
| β β | |
| β logs/ # Application logs β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ``` | |
| ## Data Flow Diagram | |
| ``` | |
| ββββββββββββββββ | |
| β User β | |
| β Browser β | |
| ββββββββ¬ββββββββ | |
| β 1. Request | |
| βΌ | |
| ββββββββββββββββββββββββββββββββββββ | |
| β Dashboard β | |
| β (View Gene/Mutation Data) β | |
| ββββββββ¬ββββββββββββββββββββββββββββ | |
| β 2. GraphQL Query | |
| βΌ | |
| ββββββββββββββββββββββββββββββββββββ | |
| β FastAPI Backend β | |
| β - Parse Query β | |
| β - Validate Request β | |
| ββββββββ¬ββββββββββββββββββββββββββββ | |
| β 3. Cypher Query | |
| βΌ | |
| ββββββββββββββββββββββββββββββββββββ | |
| β Neo4j Database β | |
| β - Execute Graph Query β | |
| β - Traverse Relationships β | |
| β - Aggregate Results β | |
| ββββββββ¬ββββββββββββββββββββββββββββ | |
| β 4. Graph Data | |
| βΌ | |
| ββββββββββββββββββββββββββββββββββββ | |
| β GraphQL Resolver β | |
| β - Transform Data β | |
| β - Format Response β | |
| ββββββββ¬ββββββββββββββββββββββββββββ | |
| β 5. JSON Response | |
| βΌ | |
| ββββββββββββββββββββββββββββββββββββ | |
| β Frontend Visualization β | |
| β - Render Graph β | |
| β - Display Charts β | |
| β - Show Statistics β | |
| ββββββββββββββββββββββββββββββββββββ | |
| ``` | |
| ## BOINC Task Processing Flow | |
| ``` | |
| ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ | |
| β Submit β β Queue β β Execute β | |
| β Task βββββββΆβ Task βββββββΆβ Analysis β | |
| β β β β β β | |
| ββββββββββββββββ ββββββββββββββββ ββββββββ¬ββββββββ | |
| β | |
| βΌ | |
| ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ | |
| β Store β β Import to β β Generate β | |
| β Results ββββββββ Neo4j ββββββββ Results β | |
| β β β β β β | |
| ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ | |
| ``` | |
| ## Neo4j Graph Schema | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β Neo4j Graph Model β | |
| β β | |
| β ββββββββββββ ββββββββββββ β | |
| β β Gene β β Mutation β β | |
| β ββββββββββββ€ ββββββββββββ€ β | |
| β β gene_id βββββββββAFFECTSββββββmut_id β β | |
| β β symbol β β chr β β | |
| β β name β β position β β | |
| β β chr β β ref β β | |
| β ββββββββββββ β alt β β | |
| β ββββββ²ββββββ β | |
| β β β | |
| β β HAS_MUTATION β | |
| β β β | |
| β ββββββββββββ ββββββ΄ββββββ β | |
| β β Cancer β β Patient β β | |
| β β Type β ββββββββββββ€ β | |
| β ββββββββββββ€ βpatient_idβ β | |
| β βcancer_id β β age β β | |
| β β name ββββDIAGNOSED_WITHββββ gender β β | |
| β β tissue β β race β β | |
| β ββββββββββββ β status β β | |
| β ββββββββββββ β | |
| β β | |
| β Relationships: β | |
| β β’ Gene β AFFECTS β Mutation β | |
| β β’ Patient β HAS_MUTATION β Mutation β | |
| β β’ Patient β DIAGNOSED_WITH β CancerType β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ``` | |
| ## Technology Stack | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β Technology Layers β | |
| β β | |
| β Frontend: β | |
| β β’ HTML5, CSS3, JavaScript (ES6+) β | |
| β β’ D3.js (Graph Visualization) β | |
| β β’ Chart.js (Charts & Analytics) β | |
| β β’ Responsive Design β | |
| β β | |
| β Backend: β | |
| β β’ Python 3.8+ β | |
| β β’ FastAPI (Web Framework) β | |
| β β’ Uvicorn (ASGI Server) β | |
| β β’ Strawberry (GraphQL) β | |
| β β | |
| β Database: β | |
| β β’ Neo4j 5.13 (Graph Database) β | |
| β β’ Bolt Protocol β | |
| β β’ APOC & GDS Plugins β | |
| β β | |
| β Data Processing: β | |
| β β’ Biopython (Sequence Analysis) β | |
| β β’ NumPy & Pandas (Data Manipulation) β | |
| β β’ BLAST+ (Sequence Alignment) β | |
| β β | |
| β Infrastructure: β | |
| β β’ Docker & Docker Compose β | |
| β β’ YAML Configuration β | |
| β β’ Python Virtual Environments β | |
| β β | |
| β External APIs: β | |
| β β’ GDC Portal API (Cancer Data) β | |
| β β’ BOINC RPC (Distributed Computing) β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ``` | |
| ## Deployment Architecture | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β Local Development β | |
| β β | |
| β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β Host Machine β β | |
| β β β β | |
| β β βββββββββββββββββββ ββββββββββββββββββββββββ β β | |
| β β β Python venv β β Docker Desktop β β β | |
| β β β Port 5000 β β β β β | |
| β β β β β ββββββββββββββββββ β β β | |
| β β β β’ FastAPI β β β Neo4j β β β β | |
| β β β β’ Backend API ββββββββββΆβ β Port 7474 β β β β | |
| β β β β’ GraphQL β β β Port 7687 β β β β | |
| β β β β’ WebSocket β β ββββββββββββββββββ β β β | |
| β β β β β β β β | |
| β β βββββββββββββββββββ ββββββββββββββββββββββββ β β | |
| β β β β | |
| β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β | |
| β Access URLs: β | |
| β β’ http://localhost:5000 - Main Application β | |
| β β’ http://localhost:5000/docs - API Documentation β | |
| β β’ http://localhost:5000/graphql - GraphQL Playground β | |
| β β’ http://localhost:7474 - Neo4j Browser β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ``` | |