MEDfl 2.0.10.dev9__tar.gz → 2.0.10.dev10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/rw/client.py +5 -4
  2. medfl-2.0.10.dev10/MEDfl/rw/identity.py +12 -0
  3. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/rw/xgboost/client.py +6 -5
  4. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/PKG-INFO +1 -1
  5. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/medfl.egg-info/PKG-INFO +1 -1
  6. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/medfl.egg-info/SOURCES.txt +1 -0
  7. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/setup.py +1 -1
  8. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/LICENSE +0 -0
  9. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/__init__.py +0 -0
  10. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/client.py +0 -0
  11. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/dynamicModal.py +0 -0
  12. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/federated_dataset.py +0 -0
  13. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/flpipeline.py +0 -0
  14. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/model.py +0 -0
  15. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/params.yaml +0 -0
  16. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/params_optimiser.py +0 -0
  17. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/plot.py +0 -0
  18. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/server.py +0 -0
  19. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/shap/__init__.py +0 -0
  20. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/shap/aggregation.py +0 -0
  21. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/shap/config.py +0 -0
  22. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/shap/explainer.py +0 -0
  23. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/shap/xgboost_explainer.py +0 -0
  24. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/strategy.py +0 -0
  25. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/utils.py +0 -0
  26. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/xgboost/__init__.py +0 -0
  27. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/xgboost/client.py +0 -0
  28. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/xgboost/config.py +0 -0
  29. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/xgboost/data.py +0 -0
  30. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/xgboost/metrics.py +0 -0
  31. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/xgboost/serialization.py +0 -0
  32. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/xgboost/server.py +0 -0
  33. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/LearningManager/xgboost/strategy.py +0 -0
  34. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/NetManager/__init__.py +0 -0
  35. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/NetManager/database_connector.py +0 -0
  36. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/NetManager/dataset.py +0 -0
  37. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/NetManager/flsetup.py +0 -0
  38. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/NetManager/net_helper.py +0 -0
  39. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/NetManager/net_manager_queries.py +0 -0
  40. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/NetManager/network.py +0 -0
  41. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/NetManager/node.py +0 -0
  42. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/__init__.py +0 -0
  43. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/rw/__init__.py +0 -0
  44. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/rw/holdout.py +0 -0
  45. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/rw/model.py +0 -0
  46. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/rw/server.py +0 -0
  47. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/rw/strategy.py +0 -0
  48. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/rw/xgboost/__init__.py +0 -0
  49. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/rw/xgboost/config.py +0 -0
  50. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/rw/xgboost/data.py +0 -0
  51. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/rw/xgboost/metrics.py +0 -0
  52. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/rw/xgboost/serialization.py +0 -0
  53. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/rw/xgboost/strategy.py +0 -0
  54. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/scripts/__init__.py +0 -0
  55. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/scripts/base.py +0 -0
  56. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/MEDfl/scripts/create_db.py +0 -0
  57. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/README.md +0 -0
  58. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/alembic/__init__.py +0 -0
  59. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/alembic/env.py +0 -0
  60. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/medfl.egg-info/dependency_links.txt +0 -0
  61. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/medfl.egg-info/requires.txt +0 -0
  62. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/medfl.egg-info/top_level.txt +0 -0
  63. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/setup.cfg +0 -0
  64. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/tests/test_dataset.py +0 -0
  65. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/tests/test_federated_dataset.py +0 -0
  66. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/tests/test_flpipeline.py +0 -0
  67. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/tests/test_flsetup.py +0 -0
  68. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/tests/test_network.py +0 -0
  69. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/tests/test_node.py +0 -0
  70. {medfl-2.0.10.dev9 → medfl-2.0.10.dev10}/tests/test_rw_holdout.py +0 -0
@@ -13,6 +13,7 @@ from sklearn.model_selection import train_test_split
13
13
  from MEDfl.rw.model import Net # votre définition de modèle
14
14
  from MEDfl.LearningManager.shap import LocalPyTorchSHAPExplainer
15
15
  from MEDfl.rw.holdout import run_local_holdout
16
+ from MEDfl.rw.identity import client_name
16
17
  import socket
17
18
  import platform
18
19
  import psutil
@@ -426,7 +427,7 @@ class FlowerClient(fl.client.NumPyClient):
426
427
 
427
428
  # Convert NumPy arrays to lists before JSON serialization.
428
429
  serializable_result = {
429
- "client_id": socket.gethostname(),
430
+ "client_id": client_name(),
430
431
  "feature_names": feature_names,
431
432
  "available_samples": int(len(loader.dataset)),
432
433
  "sample_count": explained_samples,
@@ -502,7 +503,7 @@ class FlowerClient(fl.client.NumPyClient):
502
503
  auc = float("nan")
503
504
  acc = accuracy_score(y_true, binary_preds)
504
505
 
505
- hostname = socket.gethostname()
506
+ hostname = client_name()
506
507
  os_type = platform.system()
507
508
  metrics = {
508
509
  "hostname": hostname,
@@ -608,7 +609,7 @@ class FlowerClient(fl.client.NumPyClient):
608
609
  features=self.effective_features,
609
610
  target=self.effective_target,
610
611
  predict=self._predict_probabilities,
611
- client_id=socket.gethostname(),
612
+ client_id=client_name(),
612
613
  drop_missing_features=True,
613
614
  validation=self._validation_predictions,
614
615
  )
@@ -636,7 +637,7 @@ class FlowerClient(fl.client.NumPyClient):
636
637
  return np.concatenate(y_parts), np.concatenate(prob_parts)
637
638
 
638
639
  def get_properties(self, config):
639
- hostname = socket.gethostname()
640
+ hostname = client_name()
640
641
  os_type = platform.system()
641
642
 
642
643
  if self._initialized:
@@ -0,0 +1,12 @@
1
+ """
2
+ Name a real-world client reports to the server (properties, metrics, SHAP and holdout results).
3
+
4
+ The MEDfl agent ID (MEDFL_AGENT_ID, inherited from the agent that starts the client) when it is set,
5
+ so several agents on the same machine are told apart. Else the machine hostname, as before.
6
+ """
7
+ import os
8
+ import socket
9
+
10
+
11
+ def client_name() -> str:
12
+ return (os.getenv("MEDFL_AGENT_ID") or "").strip() or socket.gethostname()
@@ -31,6 +31,7 @@ try:
31
31
  except ImportError:
32
32
  GPUtil = None
33
33
 
34
+ from MEDfl.rw.identity import client_name
34
35
  from MEDfl.rw.xgboost.data import XGBoostDataModule
35
36
  from MEDfl.rw.xgboost.metrics import evaluate_predictions
36
37
  from MEDfl.rw.xgboost.serialization import (
@@ -374,7 +375,7 @@ class XGBoostFlowerClient(fl.client.Client):
374
375
  )
375
376
 
376
377
  return {
377
- "client_id": socket.gethostname(),
378
+ "client_id": client_name(),
378
379
  "feature_names": feature_names,
379
380
  "available_samples": available_samples,
380
381
  "sample_count": explained_samples,
@@ -457,7 +458,7 @@ class XGBoostFlowerClient(fl.client.Client):
457
458
  metrics = {
458
459
  "backend": "xgboost",
459
460
  "task": self.task,
460
- "hostname": socket.gethostname(),
461
+ "hostname": client_name(),
461
462
  "os_type": platform.system(),
462
463
  "num_train": int(self.metadata.get("num_train", 0)),
463
464
  "features": ",".join(self.metadata.get("features", [])),
@@ -574,7 +575,7 @@ class XGBoostFlowerClient(fl.client.Client):
574
575
  if bool(config.get("holdout_enabled", False)):
575
576
  if self.task != "binary":
576
577
  metrics["holdout_status"] = HOLDOUT_UNSUPPORTED
577
- metrics["holdout_client_id"] = socket.gethostname()
578
+ metrics["holdout_client_id"] = client_name()
578
579
  metrics["holdout_error"] = (
579
580
  "The holdout test supports binary classification "
580
581
  f"only (task is '{self.task}')"
@@ -587,7 +588,7 @@ class XGBoostFlowerClient(fl.client.Client):
587
588
  features=self.data_module.effective_features,
588
589
  target=self.data_module.effective_target,
589
590
  predict=self._predict_probabilities,
590
- client_id=socket.gethostname(),
591
+ client_id=client_name(),
591
592
  drop_missing_features=False,
592
593
  validation=self._validation_predictions,
593
594
  )
@@ -622,7 +623,7 @@ class XGBoostFlowerClient(fl.client.Client):
622
623
  Return machine and dataset properties.
623
624
  """
624
625
 
625
- hostname = socket.gethostname()
626
+ hostname = client_name()
626
627
  os_type = platform.system()
627
628
 
628
629
  df = self.data_module.df
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: medfl
3
- Version: 2.0.10.dev9
3
+ Version: 2.0.10.dev10
4
4
  Summary: Python Open-source package for simulating federated learning and differential privacy
5
5
  Home-page: https://github.com/MEDomics-UdeS/MEDfl
6
6
  Author: MEDomics consortium
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: medfl
3
- Version: 2.0.10.dev9
3
+ Version: 2.0.10.dev10
4
4
  Summary: Python Open-source package for simulating federated learning and differential privacy
5
5
  Home-page: https://github.com/MEDomics-UdeS/MEDfl
6
6
  Author: MEDomics consortium
@@ -38,6 +38,7 @@ MEDfl/NetManager/node.py
38
38
  MEDfl/rw/__init__.py
39
39
  MEDfl/rw/client.py
40
40
  MEDfl/rw/holdout.py
41
+ MEDfl/rw/identity.py
41
42
  MEDfl/rw/model.py
42
43
  MEDfl/rw/server.py
43
44
  MEDfl/rw/strategy.py
@@ -14,7 +14,7 @@ with open('requirements.txt') as f:
14
14
 
15
15
  setup(
16
16
  name="medfl",
17
- version="2.0.10.dev9",
17
+ version="2.0.10.dev10",
18
18
  author="MEDomics consortium",
19
19
  author_email="medomics.info@gmail.com",
20
20
  description="Python Open-source package for simulating federated learning and differential privacy",
File without changes
File without changes
File without changes
File without changes