## ----bioc_installation, eval = F-----------------------------------------
#  if (!requireNamespace("BiocManager", quietly = TRUE))
#      install.packages("BiocManager")
#  
#  BiocManager::install("gemini")

## ----github_installation, eval = F---------------------------------------
#  if (!requireNamespace("devtools", quietly = TRUE))
#      install.packages("devtools")
#  
#  devtools::install_github("foo/bar", build_opts = c("--no-resave-data", "--no-manual"), build_vignettes = TRUE)

## ----load_data-----------------------------------------------------------
library("gemini")
data("counts", "guide.annotation", "sample.replicate.annotation", package = "gemini")

## ----table1_counts, echo = TRUE------------------------------------------
knitr::kable(head(counts[,1:5]), caption = "Counts matrix", align = 'l')

## ----table23_annotations, echo = TRUE------------------------------------
knitr::kable(head(sample.replicate.annotation), caption = "Sample/replicate annotations")
knitr::kable(head(guide.annotation[,1:3]), caption = "Guide/gene annotation")

## ----create_input--------------------------------------------------------
Input <- gemini_create_input(counts.matrix = counts,
                    sample.replicate.annotation = sample.replicate.annotation,
                    guide.annotation = guide.annotation,
                    ETP.column = 'pDNA', 
                    gene.column.names = c("U6.gene", "H1.gene"),
                    sample.column.name = "samplename",
                    verbose = TRUE)

# Note: ETP column can also be specified by column index 
# (e.g. ETP.column = c(1))

## ----calc_lfc------------------------------------------------------------
Input %<>% gemini_calculate_lfc(normalize = TRUE, 
                                CONSTANT = 32)

## ----initialize----------------------------------------------------------
Model <- gemini_initialize(Input = Input, 
                  nc_gene = "CD81", 
                  pattern_join = ';',
                  pattern_split = ';', 
                  cores = 1,
                  verbose = TRUE)

## ----inference, eval = F-------------------------------------------------
#  Model %<>% gemini_inference(cores = 1,
#                              verbose = FALSE)

## ----inference_shortcut, eval = T, echo = F------------------------------
data("Model", package = "gemini") # This is the result of running the above line

## ----mae_plot, eval=TRUE, fig.align='center'-----------------------------
gemini_plot_mae(Model)

## ----gemini_score--------------------------------------------------------
# Use non-interacting gene pairs as nc_pairs. 
# A caveat here is that this set is constructed only using negative controls! 
# This probably leads to biased sampling of the null distribution, 
# thereby overestimating the number of significant hits, but still is useful in this case.
nc_pairs <- grep("6T|HPRT", rownames(Model$s), value = TRUE)

# An example of some nc_pairs...
head(nc_pairs, n = 5)

Score <- gemini_score(Model = Model,
             pc_gene = "EEF2",
             nc_pairs = nc_pairs)

## ----table4_score, echo = TRUE-------------------------------------------
knitr::kable(Score$strong[order(Score$strong[,"A549"], decreasing = TRUE)[1:10],], caption = "Strong scores for top 10 interactions from A549 in all samples")

## ----table5_fdr, echo = TRUE---------------------------------------------
knitr::kable(Score$fdr_strong[order(Score$fdr_strong[,"A549"], decreasing = FALSE)[1:10],], caption = "FDRs for top 10 interactions in A549")

## ----boxplot1, eval = TRUE, fig.width = 6, fig.height = 4, fig.align='center'----
gemini_boxplot(Model = Model, 
               g = "BRCA2",
               h = "PARP1",
               nc_gene = "CD81",
               sample = "A549",
			   show_inference = TRUE, 
			   identify_guides = TRUE
			   )

## ----boxplot2, eval = TRUE, fig.width = 6, fig.height = 4, fig.align='center'----
gemini_boxplot(Model = Model, 
               g = "BRCA2",
               h = "PARP1",
               nc_gene = "CD81",
               sample = "A549",
			   show_inference = TRUE, 
			   color_x = TRUE
			   )

## ----session_info--------------------------------------------------------
sessionInfo()

