{"id":13688775,"url":"https://github.com/scverse/pertpy","last_synced_at":"2026-04-02T12:01:31.960Z","repository":{"id":37980214,"uuid":"379626476","full_name":"scverse/pertpy","owner":"scverse","description":"Single-cell perturbation analysis","archived":false,"fork":false,"pushed_at":"2026-03-19T22:08:39.000Z","size":101964,"stargazers_count":295,"open_issues_count":35,"forks_count":54,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-03-20T13:17:47.693Z","etag":null,"topics":["perturbation","scverse","single-cell"],"latest_commit_sha":null,"homepage":"https://pertpy.readthedocs.io/en/stable","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scverse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-06-23T14:15:02.000Z","updated_at":"2026-03-19T22:08:42.000Z","dependencies_parsed_at":"2024-08-06T22:42:19.447Z","dependency_job_id":"b91a686b-65e3-4153-b6bb-1cab13eff33f","html_url":"https://github.com/scverse/pertpy","commit_stats":{"total_commits":362,"total_committers":14,"mean_commits":"25.857142857142858","dds":0.6132596685082873,"last_synced_commit":"5f241a4a29aaa7a2fb49ef07c80ec99ad3531719"},"previous_names":["scverse/pertpy","theislab/pertpy"],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/scverse/pertpy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Fpertpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Fpertpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Fpertpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Fpertpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scverse","download_url":"https://codeload.github.com/scverse/pertpy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Fpertpy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31305971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T09:48:21.550Z","status":"ssl_error","status_checked_at":"2026-04-02T09:48:19.196Z","response_time":89,"last_error":"SSL_read: 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":["perturbation","scverse","single-cell"],"created_at":"2024-08-02T15:01:22.453Z","updated_at":"2026-04-02T12:01:31.823Z","avatar_url":"https://github.com/scverse.png","language":"Python","funding_links":[],"categories":["Python","Ranked by starred repositories"],"sub_categories":[],"readme":"[![Build](https://github.com/scverse/pertpy/actions/workflows/build.yml/badge.svg)](https://github.com/scverse/pertpy/actions/workflows/build.yml)\n[![codecov](https://codecov.io/gh/scverse/pertpy/graph/badge.svg?token=1dTpIPBShv)](https://codecov.io/gh/scverse/pertpy)\n[![License](https://img.shields.io/github/license/scverse/pertpy)](https://opensource.org/licenses/Apache2.0)\n[![PyPI](https://img.shields.io/pypi/v/pertpy.svg)](https://pypi.org/project/pertpy/)\n[![Python Version](https://img.shields.io/pypi/pyversions/pertpy)](https://pypi.org/project/pertpy)\n[![Read the Docs](https://img.shields.io/readthedocs/pertpy/latest.svg?label=Read%20the%20Docs)](https://pertpy.readthedocs.io/)\n[![Test](https://github.com/scverse/pertpy/actions/workflows/test.yml/badge.svg)](https://github.com/scverse/pertpy/actions/workflows/test.yml)\n[![PyPI](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white)](https://github.com/pre-commit/pre-commit)\n\n# pertpy - Perturbation Analysis in Python\n\nPertpy is a scverse ecosystem framework for analyzing large-scale single-cell perturbation experiments.\nIt provides tools for harmonizing perturbation datasets, automating metadata annotation, calculating perturbation distances, and efficiently analyzing how cells respond to various stimuli like genetic modifications, drug treatments, and environmental changes.\n\nPlease read our associated manuscript [\"Pertpy: an end-to-end framework for perturbation analysis\"](https://www.nature.com/articles/s41592-025-02909-7).\n\n![fig1](https://github.com/user-attachments/assets/d2e32d69-b767-4be3-a938-77a9dce45d3f)\n\n## Documentation\n\nPlease read the [documentation](https://pertpy.readthedocs.io/en/latest) for installation instructions, tutorials, use cases, and more.\n\n## Installation\n\nWe recommend installing and running pertpy on a recent version of Linux (e.g. Ubuntu 24.04 LTS).\nNo particular hardware beyond a standard laptop is required.\n\nYou can install _pertpy_ in less than a minute via [pip] from [PyPI]:\n\n```console\npip install pertpy\n```\n\nor [conda-forge]:\n\n```console\nconda install -c conda-forge pertpy\n```\n\n### Differential gene expression\n\nIf you want to use the differential gene expression interface, please install pertpy by running:\n\n```console\npip install 'pertpy[de]'\n```\n\n### tascCODA\n\nif you want to use tascCODA, please install pertpy as follows:\n\n```console\npip install 'pertpy[tcoda]'\n```\n\n### milo\n\nmilo requires either the \"de\" extra for the \"pydeseq2\" solver:\n\n```console\npip install 'pertpy[de]'\n```\n\nor, edger, statmod, and rpy2 for the \"edger\" solver:\n\n```R\nBiocManager::install(\"edgeR\")\nBiocManager::install(\"statmod\")\n```\n\n```console\npip install rpy2\n```\n\n## Citation\n\n```bibtex\n@article{Heumos2025,\n  author    = {Heumos, Lukas and Ji, Yuge and May, Lilly and Green, Tessa D. and Peidli, Stefan and Zhang, Xinyue and Wu, Xichen and Ostner, Johannes and Schumacher, Antonia and Hrovatin, Karin and Müller, Michaela and Chong, Faye and Sturm, Gregor and Tejada, Alejandro and Dann, Emma and Dong, Mingze and Pinto, Gonçalo and Bahrami, Mojtaba and Gold, Ilan and Rybakov, Sergei and Namsaraeva, Altana and Moinfar, Amir Ali and Zheng, Zihe and Roellin, Eljas and Mekki, Isra and Sander, Chris and Lotfollahi, Mohammad and Schiller, Herbert B. and Theis, Fabian J.},\n  title     = {Pertpy: an end-to-end framework for perturbation analysis},\n  journal   = {Nature Methods},\n  year      = {2025},\n  publisher = {Springer Nature},\n  doi       = {10.1038/s41592-025-02909-7},\n  url       = {https://doi.org/10.1038/s41592-025-02909-7},\n  issn      = {1548-7105}\n}\n```\n\n[pip]: https://pip.pypa.io/\n[pypi]: https://pypi.org/\n[api]: https://pertpy.readthedocs.io/en/latest/api.html\n[conda-forge]: https://anaconda.org/conda-forge/pertpy\n[//]: # \"numfocus-fiscal-sponsor-attribution\"\n\npertpy is part of the scverse® project ([website](https://scverse.org), [governance](https://scverse.org/about/roles)) and is fiscally sponsored by [NumFOCUS](https://numfocus.org/).\nIf you like scverse® and want to support our mission, please consider making a tax-deductible [donation](https://numfocus.org/donate-to-scverse) to help the project pay for developer time, professional services, travel, workshops, and a variety of other needs.\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://numfocus.org/project/scverse\"\u003e\n  \u003cimg\n    src=\"https://raw.githubusercontent.com/numfocus/templates/master/images/numfocus-logo.png\"\n    width=\"200\"\n  \u003e\n\u003c/a\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscverse%2Fpertpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscverse%2Fpertpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscverse%2Fpertpy/lists"}