https://github.com/pinellolab/perturb-tools
Analysis Framework for Pooled CRISPR Genome Editing Screens
https://github.com/pinellolab/perturb-tools
Last synced: 11 months ago
JSON representation
Analysis Framework for Pooled CRISPR Genome Editing Screens
- Host: GitHub
- URL: https://github.com/pinellolab/perturb-tools
- Owner: pinellolab
- License: mit
- Created: 2022-06-02T18:34:51.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-07-02T18:40:40.000Z (almost 2 years ago)
- Last Synced: 2025-06-07T04:07:27.606Z (about 1 year ago)
- Language: Jupyter Notebook
- Size: 41.1 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 
[](https://pypi.python.org/pypi/perturb-tools/)
[](https://badge.fury.io/py/perturb-tools)
[](https://github.com/psf/black)
**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.
## Data Structure and Analysis Framework
```python
import perturb_tools as pt
screen = pt.Screen(X)
```
```
Genome Editing Screen composed of: n_guides x n_conditions = 946 x 12
guides: 'barcode', 'barcode_id', 'experiment', 'sequence', 'target_id', 'pred_ABE_edit', 'pred_CBE_edit'
samples: 'condition', 'replicate'
samples_m: 'barcode_counts', 'unexpected_sequences'
samples_p: 'correlation'
layers: 'X_lognorm'
uns: 'run_info', 'poolq3', 'metadata', 'SampleBarcodeReadCounts', 'CommonSampleBarcodeReadCounts'
```
This 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.

### The three main components of this data strcuture:
* **`screen.X`** (Numpy array)
* **`screen.samples`** (pandas DataFrame) of shape: `[n_samples x sample_annotation]`
* **`screen.guides`** (pandas DataFrame) of shape: `[n_guides x guide_annotation]`
See the [**tutorial**](perturb_tools/screen_demo.ipynb) for more information.
## Installation
**Install the development package**:
```BASH
# (1) clone this repository
git clone https://github.com/pinellolab/perturb-tools.git
# (2) install the local project in editable mode
cd ./perturb-tools; pip install -e .
```
## General analysis Steps
* See [**tutorial**](perturb_tools/screen_demo.ipynb) which includes:
* **API tutorial**
* **Normalization**
* **Arithmetic**
* Calculating the mean, standard deviation, and log-fold change between/across replicates
* Correlation calculation
* **Hit discovery** (under development)
* **Visualization** (under development)
### Items under consideration:
1. Sequence prediction of targeted base-edit
2. TF motif annotation
a. Occupancy of Cas9 for CRISPRi (and how this may disrupt a TF motif)
b. Putative creation / destruction of TF motifs upon predicted base-editing outcome