Python Open-source package for simulating federated learning and differential privacy
Project description
🧠 MEDfl
MEDfl: A Collaborative Framework for Federated Learning in Medicine
📚 Table of Contents
- Introduction
- Key Features
- Installation
- Modes of Operation
- Quick Start
- Documentation
- Contributing
- Acknowledgment
- Authors
1. Introduction
MEDfl is an open-source Federated Learning (FL) framework designed for both simulation and real-world distributed trainingin the medical and healthcare domains. It integrates Differential Privacy (DP), Transfer Learning (TL), and secure communication to enable privacy-preserving model training across multiple institutions—particularly suited for medical and clinical data.
2. Key Features
-
🧩 Two Operation Modes
- Simulation Mode: Run FL experiments locally for testing and benchmarking.
- Real-World Mode: Connect remote clients through Tailscale VPN + WebSockets for production-grade FL.
-
🔒 Differential Privacy (Opacus Integration)
Ensures client updates are mathematically protected against data leakage. -
🧠 Transfer Learning Integration
Improve convergence and accuracy in small or heterogeneous datasets. -
⚙️ Modular Design
Plug-and-play components for models, optimizers, datasets, and aggregation strategies.
3. Installation
pip install medfl
✅ Requires Python 3.9+ and optionally MySQL for local experiment storage.
If you prefer the development version:
git clone https://github.com/MEDomics-UdeS/MEDfl.git
cd MEDfl
pip install -e .
4. Modes of Operation
| Mode | Description | Typical Use Case |
|---|---|---|
| Simulation FL | Runs all clients locally in a controlled environment. | Benchmarking, debugging, or prototyping. |
| Real-World FL | Connects distributed client machines using Tailscale + WebSockets. | Multi-institution collaboration, production deployments. |
5. Quick Start
🌍 Real-World Federated Learning Example
Server Setup
from MEDfl.rw.server import FederatedServer, Strategy
custom_strategy = Strategy(
name="FedAvg",
fraction_fit=1,
min_fit_clients=1,
min_evaluate_clients=1,
min_available_clients=1,
local_epochs=1,
threshold=0.5,
learning_rate=0.01,
optimizer_name="SGD",
saveOnRounds=3,
savingPath="./",
total_rounds=10,
datasetConfig={"isGlobal": True, "globalConfig": {"target": "label", "testFrac": 0.2}},
)
server = FederatedServer(
host="0.0.0.0",
port=8080,
num_rounds=10,
strategy=custom_strategy,
)
server.start()
Client Setup
from MEDfl.rw.client import FlowerClient, DPConfig
# Example: XGBoost client
xgb_params = {
"objective": "binary:logistic",
"eval_metric": "logloss",
"eta": 0.1,
"max_depth": 6,
"subsample": 0.8,
"colsample_bytree": 0.8,
"tree_method": "hist", # GPU: "gpu_hist"
}
client = FlowerClient(
server_address="100.65.215.27:8080",
data_path="../data/client1.csv",
dp_config=None, # DP only applies to neural networks
model_type="xgb",
xgb_params=xgb_params,
xgb_rounds=10,
)
client.start()
💡 Tip:
Use Tailscale to connect clients and server under the same secure VPN for real-world deployments.
6. Documentation
You can generate and host the documentation locally with Sphinx:
cd docs
make clean && make html
cd _build/html
python -m http.server
Or visit the hosted documentation (coming soon):
👉 MEDfl Documentation Portal
7. Contributing
We welcome contributions of all kinds — from bug fixes to new modules.
- Fork the repo and create a feature branch.
- Run tests and format your code with
blackandflake8. - Submit a Pull Request with clear details on your changes.
8. Acknowledgment
MEDfl is part of the MEDomicsLab initiative at the Université de Sherbrooke.
It was developed to enable secure, privacy-preserving, and reproducible machine learning across distributed medical datasets.
9. Authors
- 🧑💻 Ouael Nedjem Eddine Sahbi — Master’s Research Student, Université de Sherbrooke
- 👨💻 Haithem Lamri — Research Intern
- 🧬 MEDomics-UdeS
⭐ If you find this project useful, please consider starring it on GitHub to support continued development.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file MEDfl-2.0.4.dev12.tar.gz.
File metadata
- Download URL: MEDfl-2.0.4.dev12.tar.gz
- Upload date:
- Size: 31.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb81c50c00e367eff523929605c1a874a699cd559fc9f2d3713a90e2594dc02c
|
|
| MD5 |
15860fad2a8bbe390d302198ca31c927
|
|
| BLAKE2b-256 |
74bd1551413d380413e4119b66f4907e553da42a710f4a69e89120007b2d0a39
|
File details
Details for the file MEDfl-2.0.4.dev12-py3-none-any.whl.
File metadata
- Download URL: MEDfl-2.0.4.dev12-py3-none-any.whl
- Upload date:
- Size: 68.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df4d35163b6a0c87f98b8300d0939146c246b55f77a8d19e7daa1d8cb805daea
|
|
| MD5 |
856b641702893d89fa314385e9eed359
|
|
| BLAKE2b-256 |
01ee757966ad80ab8211bffcddb5f421d48aad2777a912db9d262d1408d3ee9c
|