## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(
  echo = TRUE,
  warning = FALSE,
  message = FALSE,
  error = FALSE,
  tidy = FALSE,
  dev = c("png"),
  cache = TRUE
)

## ----lme4, eval=FALSE---------------------------------------------------------
#  library(lme4)
#  
#  # Fit simple mixed model
#  lmer(Reaction ~ (1 | Subject), sleepstudy)
#  # Error in initializePtr() :
#  #  function 'chm_factor_ldetL2' not provided by package 'Matrix'

## ----install, eval=FALSE------------------------------------------------------
#  install.packages("lme4", type = "source")

## ----error, eval=FALSE--------------------------------------------------------
#  library(dreamlet)
#  library(muscat)
#  library(SingleCellExperiment)
#  
#  data(example_sce)
#  
#  # create pseudobulk for each sample and cell cluster
#  pb <- aggregateToPseudoBulk(example_sce,
#    assay = "counts",
#    cluster_id = "cluster_id",
#    sample_id = "sample_id",
#    verbose = FALSE
#  )
#  
#  # voom-style normalization for each cell cluster
#  res.proc <- processAssays(
#    pb[1:300, ],
#    ~group_id
#  )
#  
#  # Redundant formula
#  # This example is an extreme example of redundancy
#  # but more subtle cases often show up in real data
#  form <- ~ group_id + (1 | group_id)
#  
#  # fit dreamlet model
#  res.dl <- dreamlet(res.proc, form)
#  ##  B cells...7.9 secs
#  ##  CD14+ Monocytes...10 secs
#  ##  CD4 T cells...9 secs
#  ##  CD8 T cells...4.4 secs
#  ##  FCGR3A+ Monocytes...11 secs
#  ##
#  ## Of 1,062 models fit across all assays, 96.2% failed
#  
#  # summary of models
#  res.dl
#  ## class: dreamletResult
#  ## assays(5): B cells CD14+ Monocytes CD4 T cells CD8 T cells FCGR3A+ Monocytes
#  ## Genes:
#  ##  min: 3
#  ##  max: 11
#  ## details(7): assay n_retain ... n_errors error_initial
#  ## coefNames(2): (Intercept) group_idstim
#  ##
#  ## Of 1,062 models fit across all assays, 96.2% failed
#  
#  # summary of models for each cell cluster
#  details(res.dl)
#  ##               assay n_retain                    formula formDropsTerms n_genes n_errors error_initial
#  ## 1           B cells        4 ~group_id + (1 | group_id)          FALSE     201      190         FALSE
#  ## 2   CD14+ Monocytes        4 ~group_id + (1 | group_id)          FALSE     269      263         FALSE
#  ## 3       CD4 T cells        4 ~group_id + (1 | group_id)          FALSE     216      207         FALSE
#  ## 4       CD8 T cells        4 ~group_id + (1 | group_id)          FALSE     118      115         FALSE
#  ## 5 FCGR3A+ Monocytes        4 ~group_id + (1 | group_id)          FALSE     258      247         FALSE

## ----err1, eval=FALSE---------------------------------------------------------
#  # Extract errors as a tibble
#  res.err = seeErrors(res.dl)
#  ##   Assay-level errors: 0
#  ##   Gene-level errors: 1038
#  
#  # No errors at the assay level
#  res.err$assayLevel
#  
#  # the most common error is:
#  "Some predictor variables are on very different scales: consider rescaling"

## ----formula, eval=FALSE------------------------------------------------------
#  form = ~ scale(x) + scale(y) + ...

## ----err2, eval=FALSE---------------------------------------------------------
#  # See gene-level errors for each assay
#  res.err$geneLevel[1:2,]
#  ## # A tibble: 2 × 3
#  ##   assay   feature  errorText
#  ##   <chr>   <chr>    <chr>
#  ## B cells ISG15    "Error in lmerTest:::as_lmerModLT(model, devfun, tol = tol):…
#  ## B cells AURKAIP1 "Error in lmerTest:::as_lmerModLT(model, devfun, tol = tol):…
#  
#  # See full error message text
#  res.err$geneLevel$errorText[1]
#  "Error in lmerTest:::as_lmerModLT(model, devfun, tol = tol): (converted from warning)
#  Model may not have converged with 1 eigenvalue close to zero: 1.4e-09\n"

## ----session, echo=FALSE------------------------------------------------------
sessionInfo()