## ----set-options, echo=FALSE, cache=FALSE-------------------------------------
options(stringsAsFactors = FALSE, warning = FALSE, message = FALSE)

## ---- eval = FALSE------------------------------------------------------------
#  BiocManager::install("TADCompare")

## -----------------------------------------------------------------------------
library(dplyr)
library(SpectralTAD)
library(TADCompare)

## ----echo = FALSE-------------------------------------------------------------
data("rao_chr22_prim")
row.names(rao_chr22_prim) <- colnames(rao_chr22_prim) <- format(as.numeric(row.names(rao_chr22_prim)), scientific = FALSE)
coords <- 200:275
pheatmap::pheatmap(log10(rao_chr22_prim[coords, coords]), cluster_rows = FALSE, cluster_cols = FALSE)

## ----echo = FALSE-------------------------------------------------------------
coords  <- 50:53
sub_mat <- data.frame(chr = "chr22", start = as.numeric(colnames(rao_chr22_prim[coords, coords])), end   = as.numeric(colnames(rao_chr22_prim[coords, coords])) + 50000, rao_chr22_prim[coords, coords]) 
row.names(sub_mat) = NULL
sub_mat

## ----echo = FALSE-------------------------------------------------------------
data("rao_chr22_prim") 
head(HiCcompare::full2sparse(rao_chr22_prim))

## ---- eval=FALSE--------------------------------------------------------------
#  #Read in data
#  primary = read.table('primary.chr22.50kb.txt', header = FALSE)
#  replicate = read.table('replicate.chr22.50kb.txt', header = FALSE)
#  #Run TADCompare
#  tad_diff=TADCompare(primary, replicate, resolution=50000)

## ----eval = FALSE-------------------------------------------------------------
#  # Read in data
#  cool_mat1 <- read.table("Zuin.HEK293.50kb.Control.txt")
#  cool_mat2 <- read.table("Zuin.HEK293.50kb.Depleted.txt")
#  
#  # Convert to sparse 3-column matrix using cooler2sparse from HiCcompare
#  sparse_mat1 <- HiCcompare::cooler2sparse(cool_mat1)
#  sparse_mat2 <- HiCcompare::cooler2sparse(cool_mat2)
#  
#  # Run TADCompare
#  diff_tads = lapply(names(sparse_mat1), function(x) {
#    TADCompare(sparse_mat1[[x]], sparse_mat2[[x]], resolution = 50000)
#  })

## ----eval = FALSE-------------------------------------------------------------
#  # Read in both files
#  mat1 <- read.table("sample1_100000.matrix")
#  bed1 <- read.table("sample1_100000_abs.bed")
#  
#  # Matrix 2
#  
#  mat2 <- read.table("sample2_100000.matrix")
#  bed2 <- read.table("sample2_100000_abs.bed")
#  
#  # Convert to modified bed format
#  sparse_mats1 <- HiCcompare::hicpro2bedpe(mat1,bed1)
#  sparse_mats2 <- HiCcompare::hicpro2bedpe(mat2,bed2)
#  
#  # Remove empty matrices if necessary
#  # sparse_mats$cis = sparse_mats$cis[sapply(sparse_mats, nrow) != 0]
#  
#  
#  # Go through all pairwise chromosomes and run TADCompare
#  sparse_tads = lapply(1:length(sparse_mats1$cis), function(z) {
#    x <- sparse_mats1$cis[[z]]
#    y <- sparse_mats2$cis[[z]]
#  
#    #Pull out chromosome
#    chr <- x[, 1][1]
#    #Subset to make three column matrix
#    x <- x[, c(2, 5, 7)]
#    y <- y[, c(2, 5, 7)]
#    #Run SpectralTAD
#    comp <- TADCompare(x, y, resolution = 100000)
#    return(list(comp, chr))
#  })
#  
#  # Pull out differential TAD results
#  diff_res <- lapply(sparse_tads, function(x) x$comp)
#  # Pull out chromosomes
#  chr      <- lapply(sparse_tads, function(x) x$chr)
#  # Name list by corresponding chr
#  names(diff_res) <- chr

## ----message=FALSE------------------------------------------------------------
library(microbenchmark)
# Reading in the second matrix
data("rao_chr22_rep")
# Converting to sparse
prim_sparse <- HiCcompare::full2sparse(rao_chr22_prim)
rep_sparse  <- HiCcompare::full2sparse(rao_chr22_rep)
# Converting to nxn+3
# Primary
prim_n_n_3 <- data.frame(chr = "chr22",
                         start = as.numeric(colnames(rao_chr22_prim)),
                         end = as.numeric(colnames(rao_chr22_prim))+50000, 
                         rao_chr22_prim)

# Replicate
rep_n_n_3 <- data.frame(chr = "chr22", 
                        start = as.numeric(colnames(rao_chr22_rep)),
                        end = as.numeric(colnames(rao_chr22_rep))+50000,
                        rao_chr22_rep)
# Defining each function
# Sparse
sparse <- TADCompare(cont_mat1 = prim_sparse, cont_mat2 = rep_sparse, resolution = 50000)
# NxN
n_by_n <- TADCompare(cont_mat1 = prim_sparse, cont_mat2 = rep_sparse, resolution = 50000)
# Nx(N+3)
n_by_n_3 <- TADCompare(cont_mat1 = prim_n_n_3, cont_mat2 = rep_n_n_3, resolution = 50000)

# Benchmarking different parameters
bench <- microbenchmark(
# Sparse
sparse <- TADCompare(cont_mat1 = prim_sparse, cont_mat2 = rep_sparse, resolution = 50000),
# NxN
n_by_n <- TADCompare(cont_mat1 = rao_chr22_prim, cont_mat2 = rao_chr22_rep, resolution = 50000),
# Nx(N+3)
n_by_n_3 <- TADCompare(cont_mat1 = prim_n_n_3, cont_mat2 = rep_n_n_3, resolution = 50000), times = 5, unit = "s"
) 

summary_bench <- summary(bench) %>% dplyr::select(mean, median)
rownames(summary_bench) <- c("sparse", "n_by_n", "n_by_n_3")
summary_bench

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

