- Environment
python -m venv .venv
pip install -r requirements.txt
- Data placement (PTB-XL v1.0.3)
Place files like this (example): /dataset/ptbxl/ ptbxl_database.csv scp_statements.csv records100/ records500/ # optional
- Configure (src/config.py)
- Set DATA_DIR to your dataset folder path, e.g.:
DATA_DIR = "/dataset/ptbxl"
- Keep defaults unless you know you need changes. Common edits: SAMPLE_RATE = 100 CLIENTS = 4 ROUNDS = 15 EPOCHS_LOCAL = 2 BATCH_SIZE = 64 LR = 1e-3 FREEZE_ENABLED = False SPLITS = {"train": 0.70, "val": 0.15, "test": 0.15} MODEL["type"] = "cnn" TUNING["enabled"] = False ANOVA_FSCORE_THRESHOLD: float = 300.0 ANOVA_FALLBACK_LEADS: int = 6
- Run order (from project root)
python -m src.eda
python -m src.Centralized
python -m src.Server
python -m src.Client --cid 0 python -m src.Client --cid 1 python -m src.Client --cid 2 python -m src.Client --cid 3
python -m src.tuning
python -m src.results_visualization
- Outputs (results/)
<run_name>.csv # global + per-client round metrics <run_name>_perclass.csv # per-class accuracy across rounds <run_name>_cm.csv # confusion matrix (long) viz/ # PNG plots (accuracy, per-class, confusion)
- Quick fixes
- "Data not found": Check DATA_DIR and that ptbxl_database.csv, scp_statements.csv, and records100/ exist.
- "Clients can't connect": Start Server first; leave defaults for local run (127.0.0.1:8080).
- "GPU not used": python -c "import torch; print(torch.cuda.is_available())"