MEDfl 2.0.4.dev2__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.
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/.gitignore +1 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/database_connector.py +4 -2
- MEDfl-2.0.4.dev4/MEDfl/rw/client.py +231 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/rw/strategy.py +2 -3
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl.egg-info/PKG-INFO +1 -1
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/PKG-INFO +1 -1
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/banchmarking/network_architecture/net_bachmarking_conf_1.ipynb +15 -75
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/setup.py +1 -1
- MEDfl-2.0.4.dev2/MEDfl/rw/client.py +0 -108
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/.github/workflows/main.yml +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/.idea/.gitignore +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/.idea/MEDfl.iml +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/.idea/misc.xml +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/.idea/modules.xml +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/.idea/vcs.xml +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/LICENSE +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/__init__.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/client.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/dynamicModal.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/federated_dataset.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/flpipeline.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/model.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/params.yaml +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/params_optimiser.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/plot.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/server.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/strategy.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/LearningManager/utils.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/__init__.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/dataset.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/flsetup.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/net_helper.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/net_manager_queries.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/network.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/NetManager/node.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/__init__.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/rw/__init__.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/rw/model.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/rw/server.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/scripts/__init__.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/scripts/base.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl/scripts/create_db.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl.egg-info/SOURCES.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl.egg-info/dependency_links.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl.egg-info/requires.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/MEDfl.egg-info/top_level.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/README.md +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/alembic/README +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/alembic/__init__.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/alembic/__pycache__/env.cpython-38.pyc +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/alembic/alembic_logging.ini +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/alembic/debug.log +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/alembic/env.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/alembic/script.py.mako +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/alembic/versions/__pycache__/b159ee510a90_initial.cpython-38.pyc +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/alembic/versions/b159ee510a90_initial.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/alembic.ini +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/Makefile +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/.buildinfo +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/.doctrees/Medfl.LearningManager.doctree +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/.doctrees/Medfl.NetManager.doctree +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/.doctrees/Medfl.doctree +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/.doctrees/environment.pickle +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/.doctrees/index.doctree +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/.doctrees/modules.doctree +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/.nojekyll +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/Medfl.LearningManager.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/Medfl.NetManager.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/Medfl.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/client.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/dynamicModal.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/federated_dataset.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/flpipeline.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/model.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/plot.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/server.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/strategy.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/LearningManager/utils.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/NetManager/dataset.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/NetManager/flsetup.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/NetManager/net_helper.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/NetManager/network.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/Medfl/NetManager/node.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_modules/index.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_sources/Medfl.LearningManager.rst.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_sources/Medfl.NetManager.rst.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_sources/Medfl.rst.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_sources/index.rst.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_sources/modules.rst.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/MEDomics.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/_sphinx_javascript_frameworks_compat.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/basic.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/badge_only.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/fontawesome-webfont.eot +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/fontawesome-webfont.svg +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/fontawesome-webfont.woff +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-bold-italic.woff +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-bold.woff +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-bold.woff2 +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-normal-italic.woff +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-normal.woff +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/fonts/lato-normal.woff2 +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/css/theme.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/dark_mode_css/custom.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/dark_mode_css/dark.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/dark_mode_css/general.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/dark_mode_js/default_dark.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/dark_mode_js/default_light.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/dark_mode_js/theme_switcher.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/doctools.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/documentation_options.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/file.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/jquery.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/js/badge_only.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/js/html5shiv-printshiv.min.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/js/html5shiv.min.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/js/theme.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/language_data.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/minus.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/plus.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/pygments.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/searchtools.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/_static/sphinx_highlight.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/genindex.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/index.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/modules.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/objects.inv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/py-modindex.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/search.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/_build/searchindex.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/doctrees/Documentation.doctree +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/doctrees/Installation.doctree +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/doctrees/Medfl.LearningManager.doctree +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/doctrees/Medfl.NetManager.doctree +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/doctrees/Medfl.doctree +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/doctrees/configuration_file.doctree +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/doctrees/environment.pickle +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/doctrees/index.doctree +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/doctrees/modules.doctree +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/doctrees/tutorials.doctree +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/.buildinfo +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/.nojekyll +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/Documentation.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/Installation.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/Medfl.LearningManager.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/Medfl.NetManager.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/Medfl.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_images/FTL_comp.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_images/LearningManager.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_images/MEDfl_Diagramm.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_images/NetManager_Diagramm.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_images/learningresults.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_images/mysqllogo.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_images/phpmyadmin.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_images/wampLogo.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_images/xampplogo.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/client.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/dynamicModal.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/federated_dataset.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/flpipeline.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/model.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/plot.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/server.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/strategy.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/LearningManager/utils.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/NetManager/dataset.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/NetManager/flsetup.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/NetManager/net_helper.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/NetManager/network.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/Medfl/NetManager/node.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_modules/index.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/Documentation.rst.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/Installation.rst.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/Medfl.LearningManager.rst.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/Medfl.NetManager.rst.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/Medfl.rst.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/configuration_file.rst.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/index.rst.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/modules.rst.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_sources/tutorials.rst.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/MEDomics.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/basic.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/badge_only.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-bold.woff +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-bold.woff2 +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-normal.woff +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/fonts/lato-normal.woff2 +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/css/theme.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/custom.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/dark_mode_css/custom.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/dark_mode_css/dark.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/dark_mode_css/general.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/dark_mode_js/default_dark.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/dark_mode_js/default_light.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/dark_mode_js/theme_switcher.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/doctools.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/documentation_options.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/file.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/jquery-3.6.0.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/jquery.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/js/badge_only.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/js/html5shiv-printshiv.min.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/js/html5shiv.min.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/js/theme.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/language_data.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/minus.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/plus.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/pygments.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/searchtools.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/sphinx_highlight.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/underscore-1.13.1.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/_static/underscore.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/configuration_file.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/genindex.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/index.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/modules.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/objects.inv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/py-modindex.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/search.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/searchindex.js +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/build/html/tutorials.html +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/make.bat +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/Documentation.rst +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/Installation.rst +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/Medfl.LearningManager.rst +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/Medfl.NetManager.rst +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/Medfl.rst +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/_static/custom.css +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/conf.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/configuration_file.rst +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/FL_gen.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/FTL_comp.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/FlDatasetDiagramm.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/GDP.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/LDP.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/LearningManager.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/MEDfl_Diagramm.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/Modelinit.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/NetManager_Diagramm.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/NetworkCreation.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/createServer.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/learningresults.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/logos/mysqllogo.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/logos/phpmyadmin.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/logos/wampLogo.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/logos/xampplogo.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/modeltest.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/netMan.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/nodecreation.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/pipeline.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/Images/strategy.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/figures/MEDomics.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/index.rst +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/modules.rst +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/docs/source/tutorials.rst +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/global_params.yaml +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/medfl.egg-info/PKG-INFO +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/medfl.egg-info/SOURCES.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/medfl.egg-info/dependency_links.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/medfl.egg-info/requires.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/medfl.egg-info/top_level.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/.ipynb_checkpoints/trainedModels/binary_classifier.pth +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/.ipynb_checkpoints/trainedModels/eicu_binary_classifier.pth +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/.ipynb_checkpoints/trainedModels/grid_search_classifier.pth +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/.ipynb_checkpoints/trainedModels/new_binary_classifier.pth +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/.ipynb_checkpoints/trainedModels/updated_model.pth +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/First_Tuto.ipynb +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/FL_gen.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/FTL_comp.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/FlDatasetDiagramm.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/GDP.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/LDP.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/LearningManager.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/MEDfl_Diagramm.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/MEDfl_bachmarking_plan.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/Modelinit.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/NetManager_Diagramm.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/NetworkCreation.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/createServer.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/learningresults.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/logos/mysqllogo.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/logos/phpmyadmin.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/logos/wampLogo.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/logos/xampplogo.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/modeltest.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/netMan.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/nodecreation.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/optuna_optim_diag.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/pipeline.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/Images/strategy.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/banchmarking/MEDfl_benchmarks.ipynb +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/banchmarking/banchmarking_plan.md +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/banchmarking/benchmarks_results.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/banchmarking/network_architecture/net_bachmarking_conf_2.ipynb +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/banchmarking/transfer_learning/TL_activated.ipynb +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/banchmarking/transfer_learning/TL_dectivated.ipynb +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/chunk_1.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/chunk_2.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/chunk_3.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/config_1/part_1.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/config_1/part_2.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/config_1/part_3.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/config_1/test_1.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/config_1/test_2.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/eicu_sapsii_data.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/eicu_sapsii_data_test.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/eicu_sapsii_data_test_1.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/masterDataSet/Mimic_ouael.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/masterDataSet/Mimic_train.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/masterDataSet/eICU.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/nodesData/output_1.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/nodesData/output_2.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/nodesData/output_3.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/nodesData/output_4.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/nodesData/output_5.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/test_1.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/test_2.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/test_3.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/data/validation/Mimic_validation.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/eicu_test.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/eicu_test_1.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/eicu_test_2.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/eicu_test_3.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/sapsii_score_knnimputed_eicu.csv +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/tutorial/1_DB.ipynb +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/tutorial/2_NetManager.ipynb +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/tutorial/3_TransferLearning copy.ipynb +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/tutorial/3_TransferLearning.ipynb +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/tutorial/4_LearningManager.ipynb +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/tutorial/5_LearningResults.ipynb +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/tutorial/6_ModelChoice.ipynb +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/tutorial/7_ParamsOptimiser.ipynb +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/tutorial/8_complete_tutorial.ipynb +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/tutorial/newplot2.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/notebooks/tutorial/newplot4.png +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/requirements.txt +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/setup.cfg +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/setup_mysql.sh +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/tests/__init__.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/tests/__pycache__/test_dataset.cpython-38.pyc +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/tests/__pycache__/test_federated_dataset.cpython-38.pyc +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/tests/__pycache__/test_flpipeline.cpython-38.pyc +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/tests/__pycache__/test_flsetup.cpython-38.pyc +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/tests/__pycache__/test_network.cpython-38.pyc +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/tests/__pycache__/test_node.cpython-38.pyc +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/tests/test_dataset.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/tests/test_federated_dataset.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/tests/test_flpipeline.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/tests/test_flsetup.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/tests/test_network.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/tests/test_node.py +0 -0
- {MEDfl-2.0.4.dev2 → MEDfl-2.0.4.dev4}/workflows/migration.yml +0 -0
@@ -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
|
-
|
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)
|
@@ -123,9 +123,8 @@ class Strategy:
|
|
123
123
|
for client, _ in selected:
|
124
124
|
try:
|
125
125
|
props = client.get_properties(ins=ins, timeout=10.0, group_id=0)
|
126
|
-
print(f"\n📋 [Round {server_round}] Client {client.cid} Properties:")
|
127
|
-
|
128
|
-
print(f" {k}: {v}")
|
126
|
+
print(f"\n📋 [Round {server_round}] Client {client.cid} Properties: {props.properties}")
|
127
|
+
|
129
128
|
except Exception as e:
|
130
129
|
print(f"⚠️ Failed to get properties from {client.cid}: {e}")
|
131
130
|
|
@@ -9,7 +9,7 @@
|
|
9
9
|
},
|
10
10
|
{
|
11
11
|
"cell_type": "code",
|
12
|
-
"execution_count":
|
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":
|
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":
|
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":
|
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":
|
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
|
-
"
|
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.
|
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
|
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
|
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
|
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
|