From b6e5e75976ac0ffe823cbb282c9e6fb9ed0621bf Mon Sep 17 00:00:00 2001
From: Paul Andrey <paul.andrey@inria.fr>
Date: Tue, 23 Jul 2024 11:31:13 +0200
Subject: [PATCH] Update user-guide on fairness features.

---
 docs/user-guide/fairness.md | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/docs/user-guide/fairness.md b/docs/user-guide/fairness.md
index eb9d986..0d03d19 100644
--- a/docs/user-guide/fairness.md
+++ b/docs/user-guide/fairness.md
@@ -335,7 +335,7 @@ as follows:
 from declearn.fairness.monitor import FairnessMonitorServer
 
 fairness = FairnessMonitorServer(
-  f_type="demographic_parity",  # choose any fairness definition
+    f_type="demographic_parity",  # choose any fairness definition
 )
 
 optim = FLOptimConfig.from_params(
@@ -353,12 +353,26 @@ controller. For instance, to use Fed-FairGrad:
 from declearn.fairness.fairgrad import FairgradControllerServer
 
 fairness = FairgradControllerServer(
-  f_type="demographic_parity",  # choose any fairness definition
-  eta=0.1,  # adjust this based on the SGD learning rate and empirical tuning
-  eps=0.0,  # change this to configure epsilon-fairness
+    f_type="demographic_parity",  # choose any fairness definition
+    eta=0.1,  # adjust this based on the SGD learning rate and empirical tuning
+    eps=0.0,  # change this to configure epsilon-fairness
 )
 ```
 
+Equivalently, the choice of fairness controller class and parameters may be
+specified using a configuration dict (that may be parsed from a TOML file):
+
+```python
+fairness = {
+    # mandatory parmaeters:
+    "algorithm": "fairgrad",         # name of the algorithm
+    "f_type": "demographic_parity",  # name of the group-fairness definition
+    # optional, algorithm-dependent hyper-parameters:
+    "eta": 0.1,
+    "eps": 0.0,
+}
+```
+
 Notes:
 
 - `declearn.fairness.core.list_fairness_functions` may be used to review all
-- 
GitLab