{"id":28461804,"url":"https://github.com/pinellolab/perturb-tools","last_synced_at":"2025-07-03T14:32:03.928Z","repository":{"id":50407197,"uuid":"499248591","full_name":"pinellolab/perturb-tools","owner":"pinellolab","description":"Analysis Framework for Pooled CRISPR Genome Editing Screens","archived":false,"fork":false,"pushed_at":"2024-07-02T18:40:40.000Z","size":43045,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-07T04:07:27.606Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pinellolab.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":"2022-06-02T18:34:51.000Z","updated_at":"2024-07-02T18:40:43.000Z","dependencies_parsed_at":"2024-04-12T18:30:57.089Z","dependency_job_id":"c5f0561d-42f9-4aae-8a55-c6e726769c0d","html_url":"https://github.com/pinellolab/perturb-tools","commit_stats":{"total_commits":123,"total_committers":4,"mean_commits":30.75,"dds":0.5609756097560976,"last_synced_commit":"60761c67d7526555bc173dae2de6deccbf8612f4"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/pinellolab/perturb-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinellolab%2Fperturb-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinellolab%2Fperturb-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinellolab%2Fperturb-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinellolab%2Fperturb-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pinellolab","download_url":"https://codeload.github.com/pinellolab/perturb-tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinellolab%2Fperturb-tools/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263342192,"owners_count":23451976,"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":[],"created_at":"2025-06-07T04:07:27.292Z","updated_at":"2025-07-03T14:32:03.912Z","avatar_url":"https://github.com/pinellolab.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ![perturb-tools_logo](docs/images/perturb_tools_logo.svg)\n\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/perturb-tools.svg)](https://pypi.python.org/pypi/perturb-tools/)\n[![PyPI version](https://badge.fury.io/py/perturb-tools.svg)](https://badge.fury.io/py/perturb-tools)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n**perturb-tools** is an **analysis framework for pooled CRISPR genome-editing screens**. Thus far, development has focused on local (i.e., not genome-wide) tiling screens with specific phenotypic readouts though expansion of this scope is of interest. \n\n\n\n\n## Data Structure and Analysis Framework\n\n```python\nimport perturb_tools as pt\n\nscreen = pt.Screen(X)\n```\n```\nGenome Editing Screen composed of: n_guides x n_conditions = 946 x 12\n\n   guides:    'barcode', 'barcode_id', 'experiment', 'sequence', 'target_id', 'pred_ABE_edit', 'pred_CBE_edit'\n   samples:    'condition', 'replicate'\n   samples_m:  'barcode_counts', 'unexpected_sequences'\n   samples_p:  'correlation'\n   layers:    'X_lognorm'\n   uns:       'run_info', 'poolq3', 'metadata', 'SampleBarcodeReadCounts', 'CommonSampleBarcodeReadCounts'\n```\n\nThis format and organization of metadata surrounding a multidimensional experiment is inspired by [AnnData](https://anndata.readthedocs.io/en/stable/), a useful solution for the analogous organization of single-cell data.\n\u003cbr\u003e\u003c/br\u003e\n\u003cimg src=\"docs/images/screendata.svg\" width=\"600\"/\u003e\n\n### The three main components of this data strcuture:\n\n* **`screen.X`** (Numpy array)\n\n* **`screen.samples`** (pandas DataFrame) of shape: `[n_samples x sample_annotation]`\n\n* **`screen.guides`** (pandas DataFrame) of shape: `[n_guides x guide_annotation]`\n\nSee the [**tutorial**](perturb_tools/screen_demo.ipynb) for more information.\n\n\n## Installation\n\n**Install the development package**:\n```BASH\n# (1) clone this repository\ngit clone https://github.com/pinellolab/perturb-tools.git\n\n# (2) install the local project in editable mode\ncd ./perturb-tools; pip install -e .\n```\n\n## General analysis Steps\n* See [**tutorial**](perturb_tools/screen_demo.ipynb) which includes:\n  * **API tutorial**\n  * **Normalization**\n  * **Arithmetic**\n     * Calculating the mean, standard deviation, and log-fold change between/across replicates\n     * Correlation calculation\n* **Hit discovery** (under development)\n* **Visualization** (under development)\n\n### Items under consideration:\n1. Sequence prediction of targeted base-edit\n2. TF motif annotation\n\n   a. Occupancy of Cas9 for CRISPRi (and how this may disrupt a TF motif)\n   \n   b. Putative creation / destruction of TF motifs upon predicted base-editing outcome\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpinellolab%2Fperturb-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpinellolab%2Fperturb-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpinellolab%2Fperturb-tools/lists"}