Pooled CRISPR perturbations screens employ a library of guide RNAs (gRNAs) that is transduced into a pool of cells with the aim to induce a single genetic perturbation in each cell. The perturbation effect is assessed by measuring the abundance of each gRNA after the screen selection phase and comparing it to its abundance in the plasmid library. The main goal of the following analysis is the detection of essential genes, i.e. genes whose knockout reduces the cell fitness. The package gscreend provides a method to rank genes based on count tables.
In order to identify essential genes starting from raw gRNA count data, gscreend performs the following analysis steps:
Input of raw gRNA counts at T0 (sequencing of library) and T1 (at the end of the screen). Normalization and calculation of log fold changes.
Split log fold changes into intervals dependent on the initial count at T0.
For every interval fit a skew-normal distribution to the data to model the null hypothesis (via least quantile regression).
Based on the null model calculate p-values for every gRNA.
Rank gRNAs according to p-value and perform robust ranking aggregation to calculate p-values on gene level.
Perform quality control of data and statistical model.
if(!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("gscreend")
library(gscreend) library(SummarizedExperiment)
The simulated data used in this example has been generated using the simulation method available at https://github.com/imkeller/simulate_pooled_screen
Raw count data consists of gRNA counts in the library sequencing and different replicates after the screen proliferation phase. In order to estimate the effect of a specific gRNA on cell fitness, the relative abundances of the gRNA before and after the proliferation phase will be compares
raw_counts <- read.table( system.file("extdata", "simulated_counts.txt", package = "gscreend"), header=TRUE)
Generate a summarized experiment from the count data. gscreend currently uses SummarizedExperiment objects as an input format.
The count matrix contains raw gRNA counts. Each row represents one gRNA, each column represents one sample (T0, T1, replicates, ...).
counts_matrix <- cbind(raw_counts$library0, raw_counts$R0_0, raw_counts$R1_0) rowData <- data.frame(sgRNA_id = raw_counts$sgrna_id, gene = raw_counts$Gene) colData <- data.frame(samplename = c("library", "R1", "R2"), # timepoint naming convention: # T0 -> reference, # T1 -> after proliferation timepoint = c("T0", "T1", "T1")) se <- SummarizedExperiment(assays=list(counts=counts_matrix), rowData=rowData, colData=colData)
In this step a gscreend experiment object is generated that will after the analysis contain all data related to gRNAs, genes and model parameters.
pse <- createPoolScreenExp(se)
Run gscreend with default parameters.
pse_an <- RunGscreend(pse)
gscreend provides basic quality control functions for inspection of replicate correlation for example.
plotReplicateCorrelation(pse_an)
The plotModelParameters()
function can be used to inspect
the values of the parameters estimated for the
skew normal distribution of the logarithmic fold change data.
plotModelParameters(pse_an)
The ResultsTable function can be used to extract a table listing for each gene the p-value and fdr. These values correspond to the results from the statistical test indicting whether upon perturbation a specific gene reduces (direction = "negative"), or increasing (direction = "positive") cell viability.
res <- ResultsTable(pse_an, direction = "negative") head(res)
sessionInfo()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.