Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,13 @@ python /Users/noone/QuLabInfinite/alzheimers_early_detection.py

### Start All Labs (10 concurrent servers)
```bash
for port in {8001..8010}; do
lab=$(ls /Users/noone/QuLabInfinite/*.py | sed -n "$((port-8000))p")
python "$lab" &
done
# Labs available on ports 8001-8010
LAB_HOST=0.0.0.0 LAB_PORT_PREFIX=800 bash scripts/start_medical_labs.sh
# Ports: ${LAB_PORT_PREFIX}1-${LAB_PORT_PREFIX}10 (defaults to 8001-8010)
```

### Docker Compose (all 10 medical labs)
```bash
docker compose -f docker-compose.medical.yml up --build
```

### API Documentation
Expand Down
76 changes: 76 additions & 0 deletions docker-compose.medical.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
version: "3.8"

x-medical-service: &medical-service
build:
context: .
dockerfile: Dockerfile
environment:
- PYTHONUNBUFFERED=1
restart: unless-stopped
networks:
- medical-labs

services:
medical-alzheimers:
<<: *medical-service
command: ["uvicorn", "alzheimers_early_detection:app", "--host", "0.0.0.0", "--port", "8001", "--app-dir", "/app"]
ports:
- "8001:8001"

medical-parkinsons:
<<: *medical-service
command: ["uvicorn", "parkinsons_progression_predictor:app", "--host", "0.0.0.0", "--port", "8002", "--app-dir", "/app"]
ports:
- "8002:8002"

medical-autoimmune:
<<: *medical-service
command: ["uvicorn", "autoimmune_disease_classifier:app", "--host", "0.0.0.0", "--port", "8003", "--app-dir", "/app"]
ports:
- "8003:8003"

medical-sepsis:
<<: *medical-service
command: ["uvicorn", "sepsis_early_warning:app", "--host", "0.0.0.0", "--port", "8004", "--app-dir", "/app"]
ports:
- "8004:8004"

medical-wound:
<<: *medical-service
command: ["uvicorn", "wound_healing_optimizer:app", "--host", "0.0.0.0", "--port", "8005", "--app-dir", "/app"]
ports:
- "8005:8005"

medical-bone-density:
<<: *medical-service
command: ["uvicorn", "bone_density_predictor:app", "--host", "0.0.0.0", "--port", "8006", "--app-dir", "/app"]
ports:
- "8006:8006"

medical-kidney:
<<: *medical-service
command: ["uvicorn", "kidney_function_calculator:app", "--host", "0.0.0.0", "--port", "8007", "--app-dir", "/app"]
ports:
- "8007:8007"

medical-liver:
<<: *medical-service
command: ["uvicorn", "liver_disease_staging:app", "--host", "0.0.0.0", "--port", "8008", "--app-dir", "/app"]
ports:
- "8008:8008"

medical-lung:
<<: *medical-service
command: ["uvicorn", "lung_function_analyzer:app", "--host", "0.0.0.0", "--port", "8009", "--app-dir", "/app"]
ports:
- "8009:8009"

medical-pain:
<<: *medical-service
command: ["uvicorn", "pain_management_optimizer:app", "--host", "0.0.0.0", "--port", "8010", "--app-dir", "/app"]
ports:
- "8010:8010"

networks:
medical-labs:
driver: bridge
55 changes: 55 additions & 0 deletions scripts/start_medical_labs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/usr/bin/env bash
# Launch all 10 medical FastAPI labs with configurable host and port prefix.
# Usage:
# LAB_HOST=127.0.0.1 LAB_PORT_PREFIX=90 scripts/start_medical_labs.sh
# Defaults: LAB_HOST=0.0.0.0, LAB_PORT_PREFIX=800 (ports 8001-8010)

set -euo pipefail

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
HOST="${LAB_HOST:-0.0.0.0}"
PORT_PREFIX="${LAB_PORT_PREFIX:-800}"

# Ensure the codebase is importable regardless of where the script is run from.
export PYTHONPATH="${ROOT_DIR}:${PYTHONPATH:-}"

labs=(
"alzheimers_early_detection:1"
"parkinsons_progression_predictor:2"
"autoimmune_disease_classifier:3"
"sepsis_early_warning:4"
"wound_healing_optimizer:5"
"bone_density_predictor:6"
"kidney_function_calculator:7"
"liver_disease_staging:8"
"lung_function_analyzer:9"
"pain_management_optimizer:10"
)

pids=()

cleanup() {
if [[ ${#pids[@]} -gt 0 ]]; then
echo "Stopping medical labs..."
for pid in "${pids[@]}"; do
kill "$pid" 2>/dev/null || true
done
fi
}

trap cleanup EXIT

for lab in "${labs[@]}"; do
IFS=":" read -r module suffix <<<"$lab"
port="${PORT_PREFIX}${suffix}"

echo "Starting ${module} on ${HOST}:${port}"
python -m uvicorn "${module}:app" \
--host "${HOST}" \
--port "${port}" \
--app-dir "${ROOT_DIR}" &

pids+=("$!")
done

wait