MEDfl 2.0.4.dev3__tar.gz → 2.0.4.dev4__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 (375) hide show
  1. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/.gitignore +1 -0
  2. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/database_connector.py +4 -2
  3. MEDfl-2.0.4.dev4/MEDfl/rw/client.py +231 -0
  4. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl.egg-info/PKG-INFO +1 -1
  5. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/PKG-INFO +1 -1
  6. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/banchmarking/network_architecture/net_bachmarking_conf_1.ipynb +15 -75
  7. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/setup.py +1 -1
  8. MEDfl-2.0.4.dev3/MEDfl/rw/client.py +0 -108
  9. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/.github/workflows/main.yml +0 -0
  10. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/.idea/.gitignore +0 -0
  11. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/.idea/MEDfl.iml +0 -0
  12. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/.idea/inspectionProfiles/profiles_settings.xml +0 -0
  13. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/.idea/misc.xml +0 -0
  14. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/.idea/modules.xml +0 -0
  15. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/.idea/vcs.xml +0 -0
  16. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/LICENSE +0 -0
  17. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/__init__.py +0 -0
  18. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/client.py +0 -0
  19. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/dynamicModal.py +0 -0
  20. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/federated_dataset.py +0 -0
  21. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/flpipeline.py +0 -0
  22. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/model.py +0 -0
  23. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/params.yaml +0 -0
  24. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/params_optimiser.py +0 -0
  25. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/plot.py +0 -0
  26. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/server.py +0 -0
  27. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/strategy.py +0 -0
  28. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/utils.py +0 -0
  29. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/__init__.py +0 -0
  30. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/dataset.py +0 -0
  31. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/flsetup.py +0 -0
  32. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/net_helper.py +0 -0
  33. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/net_manager_queries.py +0 -0
  34. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/network.py +0 -0
  35. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/node.py +0 -0
  36. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/__init__.py +0 -0
  37. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/rw/__init__.py +0 -0
  38. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/rw/model.py +0 -0
  39. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/rw/server.py +0 -0
  40. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/rw/strategy.py +0 -0
  41. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/scripts/__init__.py +0 -0
  42. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/scripts/base.py +0 -0
  43. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl/scripts/create_db.py +0 -0
  44. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl.egg-info/SOURCES.txt +0 -0
  45. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl.egg-info/dependency_links.txt +0 -0
  46. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl.egg-info/requires.txt +0 -0
  47. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/MEDfl.egg-info/top_level.txt +0 -0
  48. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/README.md +0 -0
  49. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/alembic/README +0 -0
  50. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/alembic/__init__.py +0 -0
  51. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/alembic/__pycache__/env.cpython-38.pyc +0 -0
  52. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/alembic/alembic_logging.ini +0 -0
  53. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/alembic/debug.log +0 -0
  54. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/alembic/env.py +0 -0
  55. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/alembic/script.py.mako +0 -0
  56. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/alembic/versions/__pycache__/b159ee510a90_initial.cpython-38.pyc +0 -0
  57. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/alembic/versions/b159ee510a90_initial.py +0 -0
  58. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/alembic.ini +0 -0
  59. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/Makefile +0 -0
  60. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/.buildinfo +0 -0
  61. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/.doctrees/Medfl.LearningManager.doctree +0 -0
  62. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/.doctrees/Medfl.NetManager.doctree +0 -0
  63. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/.doctrees/Medfl.doctree +0 -0
  64. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/.doctrees/environment.pickle +0 -0
  65. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/.doctrees/index.doctree +0 -0
  66. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/.doctrees/modules.doctree +0 -0
  67. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/.nojekyll +0 -0
  68. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/Medfl.LearningManager.html +0 -0
  69. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/Medfl.NetManager.html +0 -0
  70. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/Medfl.html +0 -0
  71. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/client.html +0 -0
  72. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/dynamicModal.html +0 -0
  73. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/federated_dataset.html +0 -0
  74. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/flpipeline.html +0 -0
  75. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/model.html +0 -0
  76. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/plot.html +0 -0
  77. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/server.html +0 -0
  78. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/strategy.html +0 -0
  79. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/utils.html +0 -0
  80. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/NetManager/dataset.html +0 -0
  81. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/NetManager/flsetup.html +0 -0
  82. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/NetManager/net_helper.html +0 -0
  83. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/NetManager/network.html +0 -0
  84. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/NetManager/node.html +0 -0
  85. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_modules/index.html +0 -0
  86. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_sources/Medfl.LearningManager.rst.txt +0 -0
  87. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_sources/Medfl.NetManager.rst.txt +0 -0
  88. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_sources/Medfl.rst.txt +0 -0
  89. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_sources/index.rst.txt +0 -0
  90. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_sources/modules.rst.txt +0 -0
  91. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/MEDomics.png +0 -0
  92. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  93. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/basic.css +0 -0
  94. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/badge_only.css +0 -0
  95. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  96. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  97. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  98. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  99. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/fontawesome-webfont.eot +0 -0
  100. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/fontawesome-webfont.svg +0 -0
  101. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  102. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/fontawesome-webfont.woff +0 -0
  103. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  104. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-bold-italic.woff +0 -0
  105. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  106. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-bold.woff +0 -0
  107. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-bold.woff2 +0 -0
  108. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-normal-italic.woff +0 -0
  109. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  110. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-normal.woff +0 -0
  111. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-normal.woff2 +0 -0
  112. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/theme.css +0 -0
  113. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/dark_mode_css/custom.css +0 -0
  114. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/dark_mode_css/dark.css +0 -0
  115. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/dark_mode_css/general.css +0 -0
  116. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/dark_mode_js/default_dark.js +0 -0
  117. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/dark_mode_js/default_light.js +0 -0
  118. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/dark_mode_js/theme_switcher.js +0 -0
  119. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/doctools.js +0 -0
  120. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/documentation_options.js +0 -0
  121. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/file.png +0 -0
  122. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/jquery.js +0 -0
  123. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/js/badge_only.js +0 -0
  124. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/js/html5shiv-printshiv.min.js +0 -0
  125. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/js/html5shiv.min.js +0 -0
  126. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/js/theme.js +0 -0
  127. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/language_data.js +0 -0
  128. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/minus.png +0 -0
  129. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/plus.png +0 -0
  130. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/pygments.css +0 -0
  131. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/searchtools.js +0 -0
  132. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/_static/sphinx_highlight.js +0 -0
  133. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/genindex.html +0 -0
  134. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/index.html +0 -0
  135. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/modules.html +0 -0
  136. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/objects.inv +0 -0
  137. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/py-modindex.html +0 -0
  138. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/search.html +0 -0
  139. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/_build/searchindex.js +0 -0
  140. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/doctrees/Documentation.doctree +0 -0
  141. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/doctrees/Installation.doctree +0 -0
  142. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/doctrees/Medfl.LearningManager.doctree +0 -0
  143. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/doctrees/Medfl.NetManager.doctree +0 -0
  144. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/doctrees/Medfl.doctree +0 -0
  145. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/doctrees/configuration_file.doctree +0 -0
  146. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/doctrees/environment.pickle +0 -0
  147. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/doctrees/index.doctree +0 -0
  148. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/doctrees/modules.doctree +0 -0
  149. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/doctrees/tutorials.doctree +0 -0
  150. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/.buildinfo +0 -0
  151. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/.nojekyll +0 -0
  152. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/Documentation.html +0 -0
  153. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/Installation.html +0 -0
  154. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/Medfl.LearningManager.html +0 -0
  155. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/Medfl.NetManager.html +0 -0
  156. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/Medfl.html +0 -0
  157. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_images/FTL_comp.png +0 -0
  158. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_images/LearningManager.png +0 -0
  159. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_images/MEDfl_Diagramm.png +0 -0
  160. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_images/NetManager_Diagramm.png +0 -0
  161. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_images/learningresults.png +0 -0
  162. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_images/mysqllogo.png +0 -0
  163. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_images/phpmyadmin.png +0 -0
  164. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_images/wampLogo.png +0 -0
  165. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_images/xampplogo.png +0 -0
  166. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/client.html +0 -0
  167. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/dynamicModal.html +0 -0
  168. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/federated_dataset.html +0 -0
  169. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/flpipeline.html +0 -0
  170. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/model.html +0 -0
  171. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/plot.html +0 -0
  172. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/server.html +0 -0
  173. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/strategy.html +0 -0
  174. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/utils.html +0 -0
  175. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/NetManager/dataset.html +0 -0
  176. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/NetManager/flsetup.html +0 -0
  177. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/NetManager/net_helper.html +0 -0
  178. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/NetManager/network.html +0 -0
  179. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/NetManager/node.html +0 -0
  180. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/index.html +0 -0
  181. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/Documentation.rst.txt +0 -0
  182. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/Installation.rst.txt +0 -0
  183. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/Medfl.LearningManager.rst.txt +0 -0
  184. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/Medfl.NetManager.rst.txt +0 -0
  185. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/Medfl.rst.txt +0 -0
  186. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/configuration_file.rst.txt +0 -0
  187. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/index.rst.txt +0 -0
  188. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/modules.rst.txt +0 -0
  189. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/tutorials.rst.txt +0 -0
  190. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/MEDomics.png +0 -0
  191. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  192. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/basic.css +0 -0
  193. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/badge_only.css +0 -0
  194. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  195. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  196. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  197. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  198. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  199. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
  200. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  201. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  202. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  203. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  204. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  205. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-bold.woff +0 -0
  206. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  207. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  208. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  209. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-normal.woff +0 -0
  210. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  211. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/theme.css +0 -0
  212. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/custom.css +0 -0
  213. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/dark_mode_css/custom.css +0 -0
  214. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/dark_mode_css/dark.css +0 -0
  215. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/dark_mode_css/general.css +0 -0
  216. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/dark_mode_js/default_dark.js +0 -0
  217. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/dark_mode_js/default_light.js +0 -0
  218. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/dark_mode_js/theme_switcher.js +0 -0
  219. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/doctools.js +0 -0
  220. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/documentation_options.js +0 -0
  221. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/file.png +0 -0
  222. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/jquery-3.6.0.js +0 -0
  223. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/jquery.js +0 -0
  224. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/js/badge_only.js +0 -0
  225. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/js/html5shiv-printshiv.min.js +0 -0
  226. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/js/html5shiv.min.js +0 -0
  227. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/js/theme.js +0 -0
  228. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/language_data.js +0 -0
  229. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/minus.png +0 -0
  230. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/plus.png +0 -0
  231. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/pygments.css +0 -0
  232. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/searchtools.js +0 -0
  233. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/sphinx_highlight.js +0 -0
  234. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/underscore-1.13.1.js +0 -0
  235. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/_static/underscore.js +0 -0
  236. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/configuration_file.html +0 -0
  237. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/genindex.html +0 -0
  238. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/index.html +0 -0
  239. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/modules.html +0 -0
  240. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/objects.inv +0 -0
  241. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/py-modindex.html +0 -0
  242. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/search.html +0 -0
  243. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/searchindex.js +0 -0
  244. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/build/html/tutorials.html +0 -0
  245. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/make.bat +0 -0
  246. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/Documentation.rst +0 -0
  247. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/Installation.rst +0 -0
  248. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/Medfl.LearningManager.rst +0 -0
  249. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/Medfl.NetManager.rst +0 -0
  250. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/Medfl.rst +0 -0
  251. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/_static/custom.css +0 -0
  252. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/conf.py +0 -0
  253. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/configuration_file.rst +0 -0
  254. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/FL_gen.png +0 -0
  255. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/FTL_comp.png +0 -0
  256. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/FlDatasetDiagramm.png +0 -0
  257. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/GDP.png +0 -0
  258. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/LDP.png +0 -0
  259. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/LearningManager.png +0 -0
  260. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/MEDfl_Diagramm.png +0 -0
  261. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/Modelinit.png +0 -0
  262. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/NetManager_Diagramm.png +0 -0
  263. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/NetworkCreation.png +0 -0
  264. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/createServer.png +0 -0
  265. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/learningresults.png +0 -0
  266. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/logos/mysqllogo.png +0 -0
  267. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/logos/phpmyadmin.png +0 -0
  268. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/logos/wampLogo.png +0 -0
  269. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/logos/xampplogo.png +0 -0
  270. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/modeltest.png +0 -0
  271. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/netMan.png +0 -0
  272. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/nodecreation.png +0 -0
  273. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/pipeline.png +0 -0
  274. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/strategy.png +0 -0
  275. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/figures/MEDomics.png +0 -0
  276. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/index.rst +0 -0
  277. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/modules.rst +0 -0
  278. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/docs/source/tutorials.rst +0 -0
  279. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/global_params.yaml +0 -0
  280. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/medfl.egg-info/PKG-INFO +0 -0
  281. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/medfl.egg-info/SOURCES.txt +0 -0
  282. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/medfl.egg-info/dependency_links.txt +0 -0
  283. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/medfl.egg-info/requires.txt +0 -0
  284. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/medfl.egg-info/top_level.txt +0 -0
  285. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/.ipynb_checkpoints/trainedModels/binary_classifier.pth +0 -0
  286. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/.ipynb_checkpoints/trainedModels/eicu_binary_classifier.pth +0 -0
  287. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/.ipynb_checkpoints/trainedModels/grid_search_classifier.pth +0 -0
  288. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/.ipynb_checkpoints/trainedModels/new_binary_classifier.pth +0 -0
  289. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/.ipynb_checkpoints/trainedModels/updated_model.pth +0 -0
  290. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/First_Tuto.ipynb +0 -0
  291. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/FL_gen.png +0 -0
  292. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/FTL_comp.png +0 -0
  293. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/FlDatasetDiagramm.png +0 -0
  294. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/GDP.png +0 -0
  295. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/LDP.png +0 -0
  296. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/LearningManager.png +0 -0
  297. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/MEDfl_Diagramm.png +0 -0
  298. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/MEDfl_bachmarking_plan.png +0 -0
  299. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/Modelinit.png +0 -0
  300. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/NetManager_Diagramm.png +0 -0
  301. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/NetworkCreation.png +0 -0
  302. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/createServer.png +0 -0
  303. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/learningresults.png +0 -0
  304. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/logos/mysqllogo.png +0 -0
  305. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/logos/phpmyadmin.png +0 -0
  306. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/logos/wampLogo.png +0 -0
  307. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/logos/xampplogo.png +0 -0
  308. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/modeltest.png +0 -0
  309. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/netMan.png +0 -0
  310. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/nodecreation.png +0 -0
  311. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/optuna_optim_diag.png +0 -0
  312. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/pipeline.png +0 -0
  313. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/Images/strategy.png +0 -0
  314. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/banchmarking/MEDfl_benchmarks.ipynb +0 -0
  315. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/banchmarking/banchmarking_plan.md +0 -0
  316. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/banchmarking/benchmarks_results.txt +0 -0
  317. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/banchmarking/network_architecture/net_bachmarking_conf_2.ipynb +0 -0
  318. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/banchmarking/transfer_learning/TL_activated.ipynb +0 -0
  319. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/banchmarking/transfer_learning/TL_dectivated.ipynb +0 -0
  320. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/chunk_1.csv +0 -0
  321. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/chunk_2.csv +0 -0
  322. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/chunk_3.csv +0 -0
  323. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/config_1/part_1.csv +0 -0
  324. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/config_1/part_2.csv +0 -0
  325. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/config_1/part_3.csv +0 -0
  326. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/config_1/test_1.csv +0 -0
  327. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/config_1/test_2.csv +0 -0
  328. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/eicu_sapsii_data.csv +0 -0
  329. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/eicu_sapsii_data_test.csv +0 -0
  330. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/eicu_sapsii_data_test_1.csv +0 -0
  331. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/masterDataSet/Mimic_ouael.csv +0 -0
  332. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/masterDataSet/Mimic_train.csv +0 -0
  333. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/masterDataSet/eICU.csv +0 -0
  334. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/nodesData/output_1.csv +0 -0
  335. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/nodesData/output_2.csv +0 -0
  336. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/nodesData/output_3.csv +0 -0
  337. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/nodesData/output_4.csv +0 -0
  338. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/nodesData/output_5.csv +0 -0
  339. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/test_1.csv +0 -0
  340. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/test_2.csv +0 -0
  341. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/test_3.csv +0 -0
  342. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/data/validation/Mimic_validation.csv +0 -0
  343. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/eicu_test.csv +0 -0
  344. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/eicu_test_1.csv +0 -0
  345. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/eicu_test_2.csv +0 -0
  346. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/eicu_test_3.csv +0 -0
  347. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/sapsii_score_knnimputed_eicu.csv +0 -0
  348. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/tutorial/1_DB.ipynb +0 -0
  349. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/tutorial/2_NetManager.ipynb +0 -0
  350. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/tutorial/3_TransferLearning copy.ipynb +0 -0
  351. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/tutorial/3_TransferLearning.ipynb +0 -0
  352. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/tutorial/4_LearningManager.ipynb +0 -0
  353. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/tutorial/5_LearningResults.ipynb +0 -0
  354. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/tutorial/6_ModelChoice.ipynb +0 -0
  355. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/tutorial/7_ParamsOptimiser.ipynb +0 -0
  356. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/tutorial/8_complete_tutorial.ipynb +0 -0
  357. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/tutorial/newplot2.png +0 -0
  358. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/notebooks/tutorial/newplot4.png +0 -0
  359. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/requirements.txt +0 -0
  360. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/setup.cfg +0 -0
  361. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/setup_mysql.sh +0 -0
  362. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/tests/__init__.py +0 -0
  363. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/tests/__pycache__/test_dataset.cpython-38.pyc +0 -0
  364. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/tests/__pycache__/test_federated_dataset.cpython-38.pyc +0 -0
  365. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/tests/__pycache__/test_flpipeline.cpython-38.pyc +0 -0
  366. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/tests/__pycache__/test_flsetup.cpython-38.pyc +0 -0
  367. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/tests/__pycache__/test_network.cpython-38.pyc +0 -0
  368. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/tests/__pycache__/test_node.cpython-38.pyc +0 -0
  369. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/tests/test_dataset.py +0 -0
  370. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/tests/test_federated_dataset.py +0 -0
  371. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/tests/test_flpipeline.py +0 -0
  372. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/tests/test_flsetup.py +0 -0
  373. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/tests/test_network.py +0 -0
  374. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/tests/test_node.py +0 -0
  375. {MEDfl-2.0.4.dev3 → MEDfl-2.0.4.dev4}/workflows/migration.yml +0 -0
@@ -3,3 +3,4 @@ MEDfl.egg-info/
3
3
  fl-env/
4
4
  dist/
5
5
  build/
6
+ notebooks/
@@ -1,5 +1,5 @@
1
1
  import os
2
- import subprocess
2
+ import subprocess , sys
3
3
  from sqlalchemy import create_engine
4
4
  from configparser import ConfigParser
5
5
 
@@ -34,7 +34,9 @@ class DatabaseManager:
34
34
  create_db_script_path = os.path.join(current_directory, '..', 'scripts', 'create_db.py')
35
35
 
36
36
  # Execute the create_db.py script
37
- subprocess.run(['python3', create_db_script_path, path_to_csv], check=True)
37
+ print(sys.executable)
38
+ result = subprocess.run([sys.executable, create_db_script_path, path_to_csv],
39
+ capture_output=True, text=True)
38
40
 
39
41
  return
40
42
 
@@ -0,0 +1,231 @@
1
+ # client.py
2
+ import argparse
3
+ import pandas as pd
4
+ import flwr as fl
5
+ import torch
6
+ import torch.nn as nn
7
+ import torch.optim as optim
8
+ from torch.utils.data import TensorDataset, DataLoader
9
+ from sklearn.metrics import accuracy_score, roc_auc_score
10
+ from model import Net # your model definition in model.py
11
+ import socket
12
+ import platform
13
+
14
+ # Differential Privacy configuration class
15
+ class DPConfig:
16
+ """
17
+ Configuration for differential privacy.
18
+
19
+ Attributes:
20
+ noise_multiplier (float): Noise multiplier for DP.
21
+ max_grad_norm (float): Maximum gradient norm for clipping.
22
+ batch_size (int): Batch size for training.
23
+ secure_rng (bool): Whether to use secure random generator.
24
+ """
25
+ def __init__(
26
+ self,
27
+ noise_multiplier: float = 1.0,
28
+ max_grad_norm: float = 1.0,
29
+ batch_size: int = 32,
30
+ secure_rng: bool = False,
31
+ ):
32
+ self.noise_multiplier = noise_multiplier
33
+ self.max_grad_norm = max_grad_norm
34
+ self.batch_size = batch_size
35
+ self.secure_rng = secure_rng
36
+
37
+
38
+ class FlowerClient(fl.client.NumPyClient):
39
+ def __init__(
40
+ self,
41
+ server_address: str,
42
+ data_path: str = "data/data.csv",
43
+ dp_config: DPConfig = None,
44
+ ):
45
+ self.server_address = server_address
46
+
47
+ # 1. Load data from CSV
48
+ df = pd.read_csv(data_path)
49
+ X = df.iloc[:, :-1].values
50
+ y = df.iloc[:, -1].values
51
+
52
+ # Convert to tensors and store for metrics
53
+ self.X_tensor = torch.tensor(X, dtype=torch.float32)
54
+ self.y_tensor = torch.tensor(y, dtype=torch.float32)
55
+
56
+ # Create DataLoader
57
+ batch_size = dp_config.batch_size if dp_config else 32
58
+ dataset = TensorDataset(self.X_tensor, self.y_tensor)
59
+ self.train_loader = DataLoader(dataset, batch_size=batch_size, shuffle=True)
60
+
61
+ # 2. Initialize model, loss, optimizer
62
+ input_dim = X.shape[1]
63
+ self.model = Net(input_dim)
64
+
65
+ self.criterion = nn.BCEWithLogitsLoss()
66
+ self.optimizer = optim.SGD(self.model.parameters(), lr=0.01)
67
+
68
+ # 3. Set up differential privacy if requested
69
+ self.privacy_engine = None
70
+ if dp_config is not None:
71
+ try:
72
+ from opacus import PrivacyEngine
73
+
74
+ # Instantiate engine without secure_rng argument
75
+ self.privacy_engine = PrivacyEngine()
76
+ # Attach privacy engine with secure_rng flag
77
+ self.model, self.optimizer, self.train_loader = self.privacy_engine.make_private(
78
+ module=self.model,
79
+ optimizer=self.optimizer,
80
+ data_loader=self.train_loader,
81
+ noise_multiplier=dp_config.noise_multiplier,
82
+ max_grad_norm=dp_config.max_grad_norm,
83
+ secure_rng=dp_config.secure_rng,
84
+ )
85
+ except ImportError:
86
+ print("Opacus not installed, running without DP.")
87
+
88
+ def get_parameters(self, config):
89
+ return [val.cpu().numpy() for val in self.model.state_dict().values()]
90
+
91
+ def set_parameters(self, parameters):
92
+ params_dict = zip(self.model.state_dict().keys(), parameters)
93
+ state_dict = {k: torch.tensor(v) for k, v in params_dict}
94
+ self.model.load_state_dict(state_dict, strict=True)
95
+
96
+ def fit(self, parameters, config):
97
+ # Update model parameters
98
+ self.set_parameters(parameters)
99
+ self.model.train()
100
+
101
+ total_loss = 0.0
102
+ for X_batch, y_batch in self.train_loader:
103
+ self.optimizer.zero_grad()
104
+ outputs = self.model(X_batch)
105
+ loss = self.criterion(outputs.squeeze(), y_batch)
106
+ loss.backward()
107
+ self.optimizer.step()
108
+ total_loss += loss.item() * X_batch.size(0)
109
+
110
+ avg_loss = total_loss / len(self.train_loader.dataset)
111
+ # Compute training metrics (accuracy, AUC) on full dataset
112
+ with torch.no_grad():
113
+ logits = self.model(self.X_tensor).squeeze()
114
+ probs = torch.sigmoid(logits).cpu().numpy()
115
+ y_true = self.y_tensor.cpu().numpy()
116
+ binary_preds = (probs >= 0.5).astype(int)
117
+ acc = accuracy_score(y_true, binary_preds)
118
+ auc = roc_auc_score(y_true, probs)
119
+
120
+ hostname = socket.gethostname()
121
+ os_type = platform.system()
122
+
123
+ metrics = {"hostname": hostname, "train_loss": avg_loss, "train_accuracy": acc, "train_auc": auc , "os_type": os_type}
124
+ return self.get_parameters(config), len(self.train_loader.dataset), metrics
125
+
126
+ def evaluate(self, parameters, config):
127
+ # Update model parameters
128
+ self.set_parameters(parameters)
129
+ self.model.eval()
130
+
131
+ total_loss = 0.0
132
+ all_probs = []
133
+ all_true = []
134
+ with torch.no_grad():
135
+ for X_batch, y_batch in self.train_loader:
136
+ outputs = self.model(X_batch)
137
+ loss = self.criterion(outputs.squeeze(), y_batch)
138
+ total_loss += loss.item() * X_batch.size(0)
139
+ probs = torch.sigmoid(outputs.squeeze()).cpu().numpy()
140
+ all_probs.extend(probs.tolist())
141
+ all_true.extend(y_batch.cpu().numpy().tolist())
142
+
143
+ avg_loss = total_loss / len(self.train_loader.dataset)
144
+ binary_preds = [1 if p >= 0.5 else 0 for p in all_probs]
145
+ acc = accuracy_score(all_true, binary_preds)
146
+ auc = roc_auc_score(all_true, all_probs)
147
+
148
+ metrics = {"eval_loss": avg_loss, "eval_accuracy": acc, "eval_auc": auc}
149
+ print(f"Evaluation metrics: {metrics}")
150
+ return float(avg_loss), len(self.train_loader.dataset), metrics
151
+
152
+ # client.py - Update the get_properties method
153
+ def get_properties(self, config):
154
+ """
155
+ Return dataset statistics before training starts.
156
+
157
+ NOTE: Only scalar values (int, float, str, bool, bytes) are allowed.
158
+ Lists will cause the “not a 1:1 mapping” TypeError.
159
+ """
160
+ num_samples = len(self.X_tensor)
161
+ num_features = self.X_tensor.shape[1]
162
+ # Convert list to comma‑separated string
163
+ column_names = [f"feature_{i}" for i in range(num_features)]
164
+ columns_str = ",".join(column_names)
165
+
166
+ hostname = socket.gethostname()
167
+ os_type = platform.system()
168
+
169
+ return {
170
+ "hostname": hostname,
171
+ "os_type": os_type,
172
+ "num_samples": num_samples,
173
+ "num_features": num_features,
174
+ "columns": columns_str, # now a single str, not a list
175
+ }
176
+
177
+
178
+
179
+ if __name__ == "__main__":
180
+ parser = argparse.ArgumentParser(description="Flower client with DP support and metrics")
181
+ parser.add_argument(
182
+ "--server_address",
183
+ type=str,
184
+ required=True,
185
+ help="Address of the Flower server (e.g., 127.0.0.1:8080)",
186
+ )
187
+ parser.add_argument(
188
+ "--data_path",
189
+ type=str,
190
+ default="data/data.csv",
191
+ help="Path to your CSV training data",
192
+ )
193
+ parser.add_argument(
194
+ "--dp",
195
+ action="store_true",
196
+ help="Enable differential privacy",
197
+ )
198
+ parser.add_argument(
199
+ "--noise_multiplier",
200
+ type=float,
201
+ default=1.0,
202
+ help="Noise multiplier for DP",
203
+ )
204
+ parser.add_argument(
205
+ "--max_grad_norm",
206
+ type=float,
207
+ default=1.0,
208
+ help="Clip norm for DP",
209
+ )
210
+ parser.add_argument(
211
+ "--batch_size",
212
+ type=int,
213
+ default=32,
214
+ help="Batch size for training",
215
+ )
216
+ args = parser.parse_args()
217
+
218
+ dp_config = None
219
+ if args.dp:
220
+ dp_config = DPConfig(
221
+ noise_multiplier=args.noise_multiplier,
222
+ max_grad_norm=args.max_grad_norm,
223
+ batch_size=args.batch_size,
224
+ )
225
+
226
+ client = FlowerClient(
227
+ server_address=args.server_address,
228
+ data_path=args.data_path,
229
+ dp_config=dp_config,
230
+ )
231
+ fl.client.start_numpy_client(server_address=client.server_address, client=client)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MEDfl
3
- Version: 2.0.4.dev3
3
+ Version: 2.0.4.dev4
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.4.dev3
3
+ Version: 2.0.4.dev4
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
@@ -9,7 +9,7 @@
9
9
  },
10
10
  {
11
11
  "cell_type": "code",
12
- "execution_count": 2,
12
+ "execution_count": 1,
13
13
  "metadata": {},
14
14
  "outputs": [],
15
15
  "source": [
@@ -22,75 +22,7 @@
22
22
  },
23
23
  {
24
24
  "cell_type": "code",
25
- "execution_count": 3,
26
- "metadata": {},
27
- "outputs": [
28
- {
29
- "name": "stderr",
30
- "output_type": "stream",
31
- "text": [
32
- "\u001b[93mWARNING \u001b[0m: DEPRECATED FEATURE: flwr.server.start_server() is deprecated.\n",
33
- "\tInstead, use the `flower-superlink` CLI command to start a SuperLink as shown below:\n",
34
- "\n",
35
- "\t\t$ flower-superlink --insecure\n",
36
- "\n",
37
- "\tTo view usage and all available options, run:\n",
38
- "\n",
39
- "\t\t$ flower-superlink --help\n",
40
- "\n",
41
- "\tUsing `start_server()` is deprecated.\n",
42
- "\n",
43
- " This is a deprecated feature. It will be removed\n",
44
- " entirely in future versions of Flower.\n",
45
- " \n",
46
- "\u001b[92mINFO \u001b[0m: Starting Flower server, config: num_rounds=3, no round_timeout\n",
47
- "\u001b[92mINFO \u001b[0m: Flower ECE: gRPC server running (3 rounds), SSL is disabled\n",
48
- "\u001b[92mINFO \u001b[0m: [INIT]\n",
49
- "\u001b[92mINFO \u001b[0m: Requesting initial parameters from one random client\n"
50
- ]
51
- },
52
- {
53
- "name": "stdout",
54
- "output_type": "stream",
55
- "text": [
56
- "Starting Flower server on 0.0.0.0:8080\n"
57
- ]
58
- },
59
- {
60
- "name": "stderr",
61
- "output_type": "stream",
62
- "text": [
63
- "\u001b[92mINFO \u001b[0m: Flower server terminated gracefully.\n"
64
- ]
65
- },
66
- {
67
- "ename": "SystemExit",
68
- "evalue": "0",
69
- "output_type": "error",
70
- "traceback": [
71
- "An exception has occurred, use %tb to see the full traceback.\n",
72
- "\u001b[31mSystemExit\u001b[39m\u001b[31m:\u001b[39m 0\n"
73
- ]
74
- },
75
- {
76
- "name": "stderr",
77
- "output_type": "stream",
78
- "text": [
79
- "/home/local/USHERBROOKE/saho6810/Bureau/UDS/MEDfl/fl-env/lib/python3.12/site-packages/IPython/core/interactiveshell.py:3678: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.\n",
80
- " warn(\"To exit: use 'exit', 'quit', or Ctrl-D.\", stacklevel=1)\n"
81
- ]
82
- }
83
- ],
84
- "source": [
85
- "from MEDfl.rw.server.server import FederatedServer\n",
86
- "\n",
87
- "server = FederatedServer()\n",
88
- "server.start()"
89
- ]
90
- },
91
- {
92
- "cell_type": "code",
93
- "execution_count": 3,
25
+ "execution_count": 2,
94
26
  "metadata": {},
95
27
  "outputs": [
96
28
  {
@@ -189,23 +121,31 @@
189
121
  },
190
122
  {
191
123
  "cell_type": "code",
192
- "execution_count": 5,
124
+ "execution_count": null,
193
125
  "metadata": {},
194
126
  "outputs": [],
195
127
  "source": []
196
128
  },
197
129
  {
198
130
  "cell_type": "code",
199
- "execution_count": 6,
131
+ "execution_count": 5,
200
132
  "metadata": {},
201
- "outputs": [],
133
+ "outputs": [
134
+ {
135
+ "name": "stdout",
136
+ "output_type": "stream",
137
+ "text": [
138
+ "/home/local/USHERBROOKE/saho6810/Bureau/UDS/MEDfl/fl-env/bin/python\n"
139
+ ]
140
+ }
141
+ ],
202
142
  "source": [
203
143
  "db_manager.create_MEDfl_db(path_to_csv=\"../../data/masterDataSet/diabetes_dataset.csv\")\n"
204
144
  ]
205
145
  },
206
146
  {
207
147
  "cell_type": "code",
208
- "execution_count": 7,
148
+ "execution_count": 6,
209
149
  "metadata": {},
210
150
  "outputs": [
211
151
  {
@@ -219,7 +159,7 @@
219
159
  "name": "stderr",
220
160
  "output_type": "stream",
221
161
  "text": [
222
- "../../..\\MEDfl\\NetManager\\network.py:51: RemovedIn20Warning: Deprecated API features detected! These feature(s) are not compatible with SQLAlchemy 2.0. To prevent incompatible upgrades prior to updating applications, ensure requirements files are pinned to \"sqlalchemy<2.0\". Set environment variable SQLALCHEMY_WARN_20=1 to show all deprecation warnings. Set environment variable SQLALCHEMY_SILENCE_UBER_WARNING=1 to silence this message. (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)\n",
162
+ "/home/local/USHERBROOKE/saho6810/Bureau/UDS/MEDfl/notebooks/banchmarking/network_architecture/../../../MEDfl/NetManager/network.py:51: RemovedIn20Warning: Deprecated API features detected! These feature(s) are not compatible with SQLAlchemy 2.0. To prevent incompatible upgrades prior to updating applications, ensure requirements files are pinned to \"sqlalchemy<2.0\". Set environment variable SQLALCHEMY_WARN_20=1 to show all deprecation warnings. Set environment variable SQLALCHEMY_SILENCE_UBER_WARNING=1 to silence this message. (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)\n",
223
163
  " self.eng.execute(text(INSERT_NETWORK_QUERY), {\"name\": self.name})\n"
224
164
  ]
225
165
  }
@@ -14,7 +14,7 @@ with open('requirements.txt') as f:
14
14
 
15
15
  setup(
16
16
  name="MEDfl",
17
- version="2.0.4.dev3",
17
+ version="2.0.4.dev4",
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",
@@ -1,108 +0,0 @@
1
- # client.py
2
- """
3
- Federated Learning Client with Optional Differential Privacy.
4
-
5
- """
6
-
7
- import argparse
8
- import pandas as pd
9
- import flwr as fl
10
- import torch
11
- import torch.nn as nn
12
- import torch.optim as optim
13
- from torch.utils.data import TensorDataset, DataLoader
14
- from sklearn.metrics import accuracy_score, roc_auc_score
15
- from model import Net # Local model definition
16
- import socket
17
- import platform
18
-
19
-
20
- class DPConfig:
21
- """
22
- Configuration for Differential Privacy (DP) settings.
23
-
24
- Attributes:
25
- noise_multiplier (float): Noise multiplier for DP.
26
- max_grad_norm (float): Maximum gradient norm (clipping threshold).
27
- batch_size (int): Batch size for training.
28
- secure_rng (bool): Whether to use a secure RNG for DP noise.
29
- """
30
-
31
- def __init__(
32
- self,
33
- noise_multiplier: float = 1.0,
34
- max_grad_norm: float = 1.0,
35
- batch_size: int = 32,
36
- secure_rng: bool = False,
37
- ):
38
- self.noise_multiplier = noise_multiplier
39
- self.max_grad_norm = max_grad_norm
40
- self.batch_size = batch_size
41
- self.secure_rng = secure_rng
42
-
43
-
44
- class FlowerClient(fl.client.NumPyClient):
45
- """
46
- FlowerClient: A federated learning client that trains a PyTorch model
47
- and optionally applies differential privacy.
48
-
49
- """
50
-
51
- def __init__(
52
- self,
53
- server_address: str,
54
- data_path: str = "data/data.csv",
55
- dp_config: DPConfig = None,
56
- ):
57
- """
58
- Initialize client by loading data, creating model, optimizer,
59
- and optionally enabling DP.
60
-
61
- Args:
62
- server_address (str): Flower server address.
63
- data_path (str): Path to CSV dataset.
64
- dp_config (DPConfig): Optional DP configuration.
65
- """
66
- self.server_address = server_address
67
-
68
- # ---------- Load Data ----------
69
- df = pd.read_csv(data_path)
70
- X = df.iloc[:, :-1].values
71
- y = df.iloc[:, -1].values
72
-
73
- self.X_tensor = torch.tensor(X, dtype=torch.float32)
74
- self.y_tensor = torch.tensor(y, dtype=torch.float32)
75
-
76
- batch_size = dp_config.batch_size if dp_config else 32
77
- dataset = TensorDataset(self.X_tensor, self.y_tensor)
78
- self.train_loader = DataLoader(dataset, batch_size=batch_size, shuffle=True)
79
-
80
- # ---------- Model and Optimizer ----------
81
- input_dim = X.shape[1]
82
- self.model = Net(input_dim)
83
- self.criterion = nn.BCEWithLogitsLoss()
84
- self.optimizer = optim.SGD(self.model.parameters(), lr=0.01)
85
-
86
- # ---------- Differential Privacy ----------
87
- self.privacy_engine = None
88
- if dp_config is not None:
89
- try:
90
- from opacus import PrivacyEngine
91
-
92
- self.privacy_engine = PrivacyEngine()
93
- self.model, self.optimizer, self.train_loader = self.privacy_engine.make_private(
94
- module=self.model,
95
- optimizer=self.optimizer,
96
- data_loader=self.train_loader,
97
- noise_multiplier=dp_config.noise_multiplier,
98
- max_grad_norm=dp_config.max_grad_norm,
99
- secure_rng=dp_config.secure_rng,
100
- )
101
- except ImportError:
102
- print("⚠️ Opacus not installed, running without DP.")
103
-
104
- def get_parameters(self, config):
105
- """
106
- Get model parameters as a list of NumPy arrays.
107
- """
108
- return [val.cpu().numpy() for val in self.mo]()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes