{"id":21015652,"url":"https://github.com/gersteinlab/idash20fl","last_synced_at":"2026-04-17T10:33:08.120Z","repository":{"id":46180801,"uuid":"424275236","full_name":"gersteinlab/idash20FL","owner":"gersteinlab","description":null,"archived":false,"fork":false,"pushed_at":"2021-11-09T04:21:54.000Z","size":4208,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":13,"default_branch":"main","last_synced_at":"2026-04-03T20:02:21.125Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gersteinlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-11-03T15:17:52.000Z","updated_at":"2024-10-14T07:08:24.000Z","dependencies_parsed_at":"2022-09-08T11:30:52.422Z","dependency_job_id":null,"html_url":"https://github.com/gersteinlab/idash20FL","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gersteinlab/idash20FL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gersteinlab%2Fidash20FL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gersteinlab%2Fidash20FL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gersteinlab%2Fidash20FL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gersteinlab%2Fidash20FL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gersteinlab","download_url":"https://codeload.github.com/gersteinlab/idash20FL/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gersteinlab%2Fidash20FL/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31925483,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T10:19:20.377Z","status":"ssl_error","status_checked_at":"2026-04-17T10:19:18.682Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T10:10:42.618Z","updated_at":"2026-04-17T10:33:08.102Z","avatar_url":"https://github.com/gersteinlab.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# idash20FL\n\n## Benchmarking:\nThis directory consists of all the code used to analyze data produced by the model. \niterations.py creates a graph of the number of iterations used by epsilon value, \nloss_accuracy.py creates graphs of loss and accuracy by epsilon value, \nprecision_recall.py creates tables of precision-recall pairs by epsilon value, \nand vanilla_nn.ipynb creates these images for a non-federated neural network used for benchmarking.\n\n## Model:\ndata_generator.ipynb consists of a framework of code which we used to generate training/validation/testing datasets. \nBy simply modifying the numbers in this code we can generate IID \u0026 Equal, Non-IID \u0026 Equal, IID \u0026 Unequal, and Non-IID \u0026 Unequal data splits \nas described in our paper. Client.py consists of all the code required to train and collect metrics from clients within the federated network. \nServer.py consists of all the code required to coordinate and average metrics produced by clients in the federated network.\nThe code in this directory should be used as a framework for implementation. \nWhen implementing this code, ensure to use relevant parts. Put the server.py and client.py in directories on two different servers and \nrun server.py with the appropriate configuration to communicate with client.py.\n\n### Steps Using server.py and client.py:\nIn order to use server.py and client.py, you should put them each in their own directory on different machines. \nSpecifically, you should put server.py on one server in its own directory, and client.py on two or more other servers w\nith data files included in their directories. Then, within the server.py file, change the server and client IP addresses, \nwhich are currently specific to our testing configuration. Additionally, change the filepaths within server.py and client.py \nto be specific to your directory architecture. Finally, you can change the hyperparameters we use in the server.py file. \nTo run server.py, you must run it via the shell and additionally insert system arguments of the data files' name in clients 1 and 2, \nthe target epsilon value, and the username-password combinations for each of the server and client side.\n\nAfter setting up the paths in the server.py and Client.py scripts, use\n\n```python3 server.py \u003cdata1\u003e \u003cdata2\u003e \u003cepsilon\u003e \u003cuserNameServer\u003e \u003cpassWordServer\u003e \u003cuserNameClient1\u003e \u003cpassWordClient1\u003e \u003cuserNameClient2\u003e \u003cpassWordClient2\u003e```\n\n* data1: name of the training data file on Client 1\n* data2: name of the training data file on Client 2\n* epsilon: desired privacy parameter in differential privacy (smaller values mean more privacy enforced)\n* userNameServer: user name on the server for ssh access\n* passWordServer: password on the server for ssh access\n* userNameClient1/2: user name on the client for ssh access\n* passWordClient1/2: password on the client for ssh access\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgersteinlab%2Fidash20fl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgersteinlab%2Fidash20fl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgersteinlab%2Fidash20fl/lists"}