## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.path = "figures/",
  fig.width = 6, fig.height = 6,
  eval = FALSE
)

## ----package and data loading-------------------------------------------------
#  library(SuperCell)
#  library(Matrix)
#  data(cell_lines)
#  
#  GE <- cell_lines$GE
#  cell.meta <- cell_lines$meta
#  

## ----parameters---------------------------------------------------------------
#  gamma <- 20 # graining level
#  n.pc  <- 10 # number of PCs

## ----two samples--------------------------------------------------------------
#  cell.idx.HCC827 <- which(cell.meta == "HCC827")
#  cell.idx.H838   <- which(cell.meta == "H838")

## ----combined scimplify-------------------------------------------------------
#  SC.HCC827.H838 <- SCimplify(
#    GE[,c(cell.idx.HCC827, cell.idx.H838)],  # log-normalized gene expression matrix
#    gamma = gamma, # graining level
#    cell.split.condition = cell.meta[c(cell.idx.HCC827, cell.idx.H838)], # metacell do not mix cells from different cell lines
#    n.pc = n.pc) # number of proncipal components to use
#  
#  genes.use <- SC.HCC827.H838$genes.use
#  
#  SC.HCC827.H838$cell.line <- supercell_assign(cell.meta[c(cell.idx.HCC827, cell.idx.H838)],
#                                               supercell_membership = SC.HCC827.H838$membership)
#  
#  SC.GE.HCC827.H838 <- supercell_GE(GE[,c(cell.idx.HCC827, cell.idx.H838)], groups = SC.HCC827.H838$membership)
#  
#  SC.HCC827.H838$SC_PCA <- supercell_prcomp(
#    Matrix::t(SC.GE.HCC827.H838),
#    supercell_size = SC.HCC827.H838$supercell_size,
#    genes.use = genes.use)
#  
#  SC.HCC827.H838$SC_UMAP <- supercell_UMAP(
#    SC.HCC827.H838,
#    n_neighbors = 10)
#  
#  supercell_plot_UMAP(
#      SC.HCC827.H838,
#      group = "cell.line",
#      title = paste0("Combined construction of HCC827 and H838 metacells")
#    )
#  

## ----independent scimplify----------------------------------------------------
#  SC.HCC827 <- SCimplify(GE[,cell.idx.HCC827],  # log-normalized gene expression matrix
#                  gamma = gamma, # graining level
#                  n.pc = n.pc, # number of proncipal components to use
#                  genes.use = genes.use) # using the same set of genes as for the combined analysis
#  
#  SC.HCC827$cell.line <- supercell_assign(cell.meta[cell.idx.HCC827], supercell_membership = SC.HCC827$membership)
#  
#  SC.H838 <- SCimplify(GE[,cell.idx.H838],  # log-normalized gene expression matrix
#                  gamma = gamma, # graining level
#                  n.pc = n.pc, # number of proncipal components to use
#                  genes.use = genes.use) # using the same set of genes as for the combined analysis
#  SC.H838$cell.line <- supercell_assign(cell.meta[cell.idx.H838], supercell_membership = SC.H838$membership)
#  
#  SC.merged <- supercell_merge(list(SC.HCC827, SC.H838), fields = c("cell.line"))
#  
#  # compute metacell gene expression for SC.HCC827
#  SC.GE.HCC827 <- supercell_GE(GE[, cell.idx.HCC827], groups = SC.HCC827$membership)
#  # compute metacell gene expression for SC.H838
#  SC.GE.H838 <- supercell_GE(GE[, cell.idx.H838], groups = SC.H838$membership)
#  # merge GE matricies
#  SC.GE.merged <- supercell_mergeGE(list(SC.GE.HCC827, SC.GE.H838))
#  
#  SC.merged$SC_PCA <- supercell_prcomp(
#    Matrix::t(SC.GE.merged),
#    supercell_size = SC.merged$supercell_size,
#    genes.use = genes.use)
#  
#  SC.merged$SC_UMAP <- supercell_UMAP(
#    SC.merged,
#    n_neighbors = 10)
#  
#  g <- supercell_plot_UMAP(
#      SC.merged,
#      group = "cell.line",
#      title = paste0("Independent construction of HCC827 and H838 metacells")
#    )
#  

## ----heatmap metacell membership----------------------------------------------
#  heatmap(as.matrix(table(SC.merged$membership, SC.HCC827.H838$membership)), scale = "none")

## ----size distribution--------------------------------------------------------
#  summary(SC.merged$supercell_size)
#  summary(SC.HCC827.H838$supercell_size)

## ----combined vs independent analysis-----------------------------------------
#  ## Combined analysis
#  # actual graining level for H838 cell line
#  length(cell.idx.H838)/sum(SC.HCC827.H838$cell.line == "H838")
#  # actual graining level for H838 cell line
#  length(cell.idx.HCC827)/sum(SC.HCC827.H838$cell.line == "HCC827")
#  
#  ## Independent analysis
#  # actual graining level for H838 cell line
#  length(cell.idx.H838)/sum(SC.merged$cell.line == "H838")
#  # actual graining level for HCC827 cell line
#  length(cell.idx.HCC827)/sum(SC.merged$cell.line == "HCC827")
#  # actual overall graining level in the combined analysis
#  length(SC.merged$membership)/max(SC.merged$membership)
#  

