{"id":13639706,"url":"https://github.com/Substra/substra","last_synced_at":"2025-04-19T22:33:41.248Z","repository":{"id":43703951,"uuid":"217498546","full_name":"Substra/substra","owner":"Substra","description":"Low-level Python library used to interact with a Substra network","archived":false,"fork":false,"pushed_at":"2024-07-24T08:36:28.000Z","size":5665,"stargazers_count":267,"open_issues_count":2,"forks_count":33,"subscribers_count":9,"default_branch":"main","last_synced_at":"2024-08-03T04:06:23.195Z","etag":null,"topics":["federated-learning","federated-learning-framework"],"latest_commit_sha":null,"homepage":"https://docs.substra.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Substra.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-25T09:22:58.000Z","updated_at":"2024-08-03T04:06:30.904Z","dependencies_parsed_at":"2024-02-23T16:26:08.225Z","dependency_job_id":"aa9f4152-b1a9-4a3b-8418-e241e1ae6744","html_url":"https://github.com/Substra/substra","commit_stats":null,"previous_names":["substrafoundation/substra"],"tags_count":103,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Substra%2Fsubstra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Substra%2Fsubstra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Substra%2Fsubstra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Substra%2Fsubstra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Substra","download_url":"https://codeload.github.com/Substra/substra/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223810665,"owners_count":17206806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["federated-learning","federated-learning-framework"],"created_at":"2024-08-02T01:01:03.626Z","updated_at":"2024-11-09T09:31:33.047Z","avatar_url":"https://github.com/Substra.png","language":"Python","funding_links":[],"categories":["Privacy Preserving Machine Learning","Privacy and Security","federated learning framework"],"sub_categories":["table"],"readme":"\u003cdiv align=\"left\"\u003e\n\u003ca href=\"https://join.slack.com/t/substra-workspace/shared_invite/zt-1fqnk0nw6-xoPwuLJ8dAPXThfyldX8yA\"\u003e\u003cimg src=\"https://img.shields.io/badge/chat-on%20slack-blue?logo=slack\" /\u003e\u003c/a\u003e \u003ca href=\"https://docs.substra.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/read-docs-purple?logo=mdbook\" /\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cbr /\u003e\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003cpicture\u003e\n  \u003cobject-position: center\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/substra/substra/main/Substra-logo-white.svg\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/substra/substra/main/Substra-logo-colour.svg\"\u003e\n  \u003cimg alt=\"Substra\" src=\"https://raw.githubusercontent.com/substra/substra/main/Substra-logo-colour.svg\" width=\"500\"\u003e\n\u003c/picture\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\nSubstra is an open source federated learning (FL) software. It enables the training and validation of machine learning models on distributed datasets. It provides a flexible Python interface and a web application to run federated learning training at scale. This specific repository is the low-level Python library used to interact with a Substra network.\n\nSubstra's main usage is in production environments. It has already been deployed and used by hospitals and biotech companies (see the [MELLODDY](https://www.melloddy.eu/) project for instance). Substra can also be used on a single machine to perform FL simulations and debug code.\n\nSubstra was originally developed by [Owkin](https://owkin.com/) and is now hosted by the [Linux Foundation for AI and Data](https://lfaidata.foundation/). Today Owkin is the main contributor to Substra.\n\nJoin the discussion on [Slack](https://join.slack.com/t/substra-workspace/shared_invite/zt-1fqnk0nw6-xoPwuLJ8dAPXThfyldX8yA) and [subscribe here](https://lists.lfaidata.foundation/g/substra-announce/join) to our newsletter.\n\n\n## To start using Substra\n\nHave a look at our [documentation](https://docs.substra.org/).\n\nTry out our [MNIST example](https://docs.substra.org/en/stable/substrafl_doc/examples/index.html#example-to-get-started-using-the-pytorch-interface).\n\n## Support\n\nIf you need support, please either raise an issue on Github or ask on [Slack](https://join.slack.com/t/substra-workspace/shared_invite/zt-1fqnk0nw6-xoPwuLJ8dAPXThfyldX8yA).\n\n\n\n## Contributing\n\nSubstra warmly welcomes any contribution. Feel free to fork the repo and create a pull request.\n\n\n## Setup\n\nTo setup the project in development mode, run:\n\n```sh\npip install -e \".[dev]\"\n```\n\nTo run all tests, use the following command:\n\n```sh\nmake test\n```\n\n Some of the tests require Docker running on your machine before running them.\n\n## Code formatting\n\nYou can opt into auto-formatting of code on pre-commit using [Black](https://github.com/psf/black).\n\nThis relies on hooks managed by [pre-commit](https://pre-commit.com/), which you can set up as follows.\n\nInstall [pre-commit](https://pre-commit.com/), then run:\n\n```sh\npre-commit install\n```\n\n## Documentation generation\n\nTo generate the command line interface documentation, sdk and schemas documentation, the `python` version\nmust be 3.8. Run the following command:\n\n```sh\nmake doc\n```\n\nDocumentation will be available in the *references/* directory.\n\n# Changelog generation\n\nThe changelog is managed with [towncrier](https://towncrier.readthedocs.io/en/stable/index.html).\nTo add a new entry in the changelog, add a file in the `changes` folder. The file name should have the following structure:\n`\u003cunique_id\u003e.\u003cchange_type\u003e`.\nThe `unique_id` is a unique identifier, we currently use the PR number.\nThe `change_type` can be of the following types: `added`, `changed`, `removed`, `fixed`.\n\nTo generate the changelog (for example during a release), use the following command (you must have the dev dependencies installed):\n\n```\ntowncrier build --version=\u003cx.y.z\u003e\n```\nYou can use the `--draft` option to see what would be generated without actually writing to the changelog (and without removing the fragments).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSubstra%2Fsubstra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSubstra%2Fsubstra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSubstra%2Fsubstra/lists"}