Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
R Release version Mar 15, 2019
tests Release version Mar 15, 2019
vignettes Release version Mar 15, 2019
NAMESPACE Release version Mar 15, 2019
README.Rmd Release version Mar 15, 2019 Updated bioconductor install Mar 15, 2019


The gemini package allows users to analyze combinatorial CRISPR screens as described in Zamanighomi et al. ?.


To install the latest development version of gemini, use the devtools package as follows:

devtools::install_github(repo = "sellerslab/gemini", build_vignettes = TRUE)

You can (eventually) install the stable release version of gemini from Bioconductor with:

if (!requireNamespace("BiocManager", quietly = TRUE))


Given a counts matrix and the relevant annotations, GEMINI uses the following workflow:

counts (with replicate annotation and guide annotations) → gemini.inputgemini.modelgemini.score

Each of these steps can be seen here:

data("example-bigPapi", package = "gemini")

# COUNTS -> gemini.input
gemini.input <- gemini_create_input(counts.matrix = counts,
                                    sample.replicate.annotation = sample.replicate.annotation,
                                    guide.annotation = guide.annotation,
                                    gene.column.names = c("U6.gene", "H1.gene"),
                           = "samplename")

gemini.input %<>% gemini_calculate_lfc()

# gemini.input -> gemini.model
gemini.model <- gemini_initialize(Input = gemini.input,
                                  nc_gene = "CD81",
                                  verbose = F)
gemini.model %<>% gemini_inference(verbose = F)

# gemini.model -> gemini.score 
# Here, we use EEF2, a known essential gene, as the positive control.
# Additionally, a set of essential genes can be used instead.
gemini.score <- gemini_score(gemini.model, pc_gene = "EEF2")

# To calculate significance, identify a set of non-interacting genes - here, we use genes paired with other negative controls (HPRT intron, 6T)
noninteracting_pairs <- rownames(gemini.model$s)[grep("6T|HPRT",rownames(gemini.model$s))]
gemini.score <- gemini_score(gemini.model, pc_gene = "EEF2", nc_pairs = noninteracting_pairs)



After running gemini_inference, the resulting convergence rate can be visualized. If the model is divergent, alternative parameters for the priors should be selected until convergence is achieved. This can be done through a form of cross-validation. See the manual for more details.



If a genetic interaction is identified, check the interaction using the gemini_boxplot function.

gemini_boxplot(Model = gemini.model, gene.column.names = c("U6.gene", "H1.gene"), g = "BRCA2", h = "PARP1", nc_gene = "CD81", sample = "A549", show_inference = T, identify_guides = T)

gemini_boxplot(Model = gemini.model, gene.column.names = c("U6.gene", "H1.gene"), g = "BRCA2", h = "PARP1", nc_gene = "CD81", sample = "A549", show_inference = T, color_x = T)
You can’t perform that action at this time.