{"id":31805714,"url":"https://github.com/theislab/scgen","last_synced_at":"2025-10-11T02:57:39.131Z","repository":{"id":34174252,"uuid":"159543308","full_name":"theislab/scgen","owner":"theislab","description":"Single cell perturbation prediction","archived":false,"fork":false,"pushed_at":"2024-12-05T12:08:14.000Z","size":72644,"stargazers_count":315,"open_issues_count":31,"forks_count":65,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-09-29T13:01:45.999Z","etag":null,"topics":["bioinformatics","deep-learning","generative-model","scrna-seq","single-cell","single-cell-genomics","transcriptomics"],"latest_commit_sha":null,"homepage":"https://scgen.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/theislab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2018-11-28T17:59:06.000Z","updated_at":"2025-08-18T10:40:59.000Z","dependencies_parsed_at":"2023-02-18T00:15:55.952Z","dependency_job_id":"2edfaf81-4ceb-474d-a612-b5ae932b100c","html_url":"https://github.com/theislab/scgen","commit_stats":{"total_commits":405,"total_committers":17,"mean_commits":"23.823529411764707","dds":"0.49876543209876545","last_synced_commit":"d79e1f04233c30f9a4eb5b8d57718127909807d7"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/theislab/scgen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theislab%2Fscgen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theislab%2Fscgen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theislab%2Fscgen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theislab%2Fscgen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theislab","download_url":"https://codeload.github.com/theislab/scgen/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theislab%2Fscgen/sbom","scorecard":{"id":878850,"data":{"date":"2025-08-11","repo":{"name":"github.com/theislab/scgen","commit":"d79e1f04233c30f9a4eb5b8d57718127909807d7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"checks":[{"name":"Code-Review","score":2,"reason":"Found 3/15 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/theislab/scgen/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/theislab/scgen/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/theislab/scgen/test.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/test.yml:34","Warn: pipCommand not pinned by hash: .github/workflows/test.yml:35","Warn: downloadThenRun not pinned by hash: .github/workflows/test.yml:47","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 19 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-24T07:12:01.384Z","repository_id":34174252,"created_at":"2025-08-24T07:12:01.384Z","updated_at":"2025-08-24T07:12:01.384Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279005953,"owners_count":26084009,"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","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["bioinformatics","deep-learning","generative-model","scrna-seq","single-cell","single-cell-genomics","transcriptomics"],"created_at":"2025-10-11T02:57:36.595Z","updated_at":"2025-10-11T02:57:39.117Z","avatar_url":"https://github.com/theislab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# scGen [![PyPI version](https://badge.fury.io/py/scgen.svg)](https://badge.fury.io/py/scgen) [![Build Status](https://travis-ci.com/theislab/scGen.svg?branch=master)](https://travis-ci.com/theislab/scGen) [![Documentation Status](https://readthedocs.org/projects/scgen/badge/?version=latest)](https://scgen.readthedocs.io/en/latest/?badge=latest) [![Downloads](https://pepy.tech/badge/scgen)](https://pepy.tech/project/scgen)\n\n\u003cimg align=\"center\" src=\"./sketch/sketch.png?raw=true\"\u003e\n\n## Introduction\n\nscGen is a generative model to predict single-cell perturbation response across cell types, studies and species\n[(Nature Methods, 2019)](https://www.nature.com/articles/s41592-019-0494-8). scGen is implemented using the [scvi-tools framework](https://scvi-tools.org/).\n\n## Getting Started\n\nWhat you can do with scGen:\n\n-   Train on a dataset with multiple cell types and conditions and predict the perturbation effect on the cell type\n    which you only have in one condition. This scenario can be extended to multiple species where you want to predict\n    the effect of a specific species using another or all the species.\n\n-   Train on a dataset where you have two conditions (e.g. control and perturbed) and predict on second dataset\n    with similar genes.\n\n-   Remove batch effect on labeled data. In this scenario you need to provide cell_type and batch labels to\n    the method. Note that `batch_removal` does not require all cell types to be present in all datasets (batches). If\n    you have dataset specific cell type it will preserved as before.\n\n-   We assume there exist two conditions in you dataset (e.g. control and perturbed). You can train the model and with\n    your data and predict the perturbation for the cell type/species of interest.\n\n-   We recommend to use normalized data for the training. A simple example for normalization pipeline using scanpy:\n\n```python\nimport scanpy as sc\n\nadata = sc.read(data)\nsc.pp.normalize_total(adata)\nsc.pp.log1p(adata)\n```\n\n-   We further recommend to use highly variable genes (HVG). For the most examples in the paper we used top ~7000\n    HVG. However, this is optional and highly depend on your application and computational power.\n\n## Installation\n\n### Installation with pip\n\nTo install the latest version scGen via pip:\n\n```bash\npip install scgen\n```\n\nor install the development version via pip:\n\n```bash\npip install git+https://github.com/theislab/scgen.git\n```\n\n## Examples\n\nSee examples at our [documentation site](https://scgen.readthedocs.io/).\n\n## Reproducing paper results\n\nIn order to reproduce paper results visit [here](https://github.com/M0hammadL/scGen_reproducibility).\n\n## References\n\nLotfollahi, Mohammad and Wolf, F. Alexander and Theis, Fabian J.\n**\"scGen predicts single-cell perturbation responses.\"**\nNature Methods, 2019. [pdf](https://rdcu.be/bMlbD)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheislab%2Fscgen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheislab%2Fscgen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheislab%2Fscgen/lists"}