inst/doc/COVID-walkthrough.R

## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  eval = FALSE
)

## ----setup--------------------------------------------------------------------
#  library(MOCHA)
#  library(ArchR)
#  library(TxDb.Hsapiens.UCSC.hg38.refGene)
#  library(org.Hs.eg.db)
#  library(BSgenome.Hsapiens.UCSC.hg19)

## -----------------------------------------------------------------------------
#  # You should substitute this with your own ArchR project.
#  # You must have completed cell labeling with your ArchR project.
#  
#  ArchRProj <- ArchR::loadArchRProject("/home/jupyter/FullCovid")
#  
#  metadata <- data.table::as.data.table(ArchR::getCellColData(ArchRProj))
#  studySignal <- median(metadata$nFrags)
#  
#  # Get metadata information at the sample level
#  lookup_table <- unique(
#    metadata[, c(
#      "Sample",
#      "COVID_status",
#      "Visit",
#      "days_since_symptoms"
#    ),
#    with = FALSE
#    ]
#  )
#  
#  # Subset to visit 1 and extract samples
#  samplesToKeep <- lookup_table$Sample[
#    lookup_table$Visit == "FH3 COVID-19 Visit 1" &
#      lookup_table$days_since_symptoms <= 15 |
#      is.na(lookup_table$days_since_symptoms)
#  ]
#  
#  # subset ArchR Project
#  idxSample <- BiocGenerics::which(ArchRProj$Sample %in% samplesToKeep)
#  cellsSample <- ArchRProj$cellNames[idxSample]
#  ArchRProj <- ArchRProj[cellsSample, ]
#  

## -----------------------------------------------------------------------------
#  # Parameters for calling open tiles.
#  cellPopLabel <- "CellSubsets"
#  cellPopulations <- c("CD16 Mono")
#  numCores <- 20

## -----------------------------------------------------------------------------
#  tileResults <- MOCHA::callOpenTiles(
#    ArchRProj,
#    cellPopLabel = cellPopLabel,
#    cellPopulations = cellPopulations,
#    TxDb = "TxDb.Hsapiens.UCSC.hg38.refGene",
#    Org = "org.Hs.eg.db",
#    numCores = numCores,
#    studySignal = studySignal,
#    outDir = tempdir()
#  )

## -----------------------------------------------------------------------------
#  # Computing the TSAM can take into account groupings of
#  # samples when determining consensus tiles.
#  # Our samples can be grouped by the metadata column 'COVID_status'
#  # into 'Positive' and 'Negative' groups.
#  # Since these groupings may have unique biology and we expect differences
#  # in accessibility, we want to compute consensus tiles on each
#  # group independently and take the union of consensus tiles from each group.
#  groupColumn <- "COVID_status"
#  
#  # We set the threshold to require a tile must be open in at least
#  # (0.2 * the number of samples in each group) samples to be
#  # retained
#  threshold <- 0.2
#  
#  # Alternatively, you can set the threshold to 0 to keep the union of
#  # all samples' open tiles.
#  # This is equivalent to setting a threshold that would retain
#  # tiles that are open in at least one sample.
#  
#  SampleTileMatrices <- MOCHA::getSampleTileMatrix(
#    tileResults,
#    cellPopulations = "CD16 Mono",
#    groupColumn = groupColumn,
#    threshold = threshold,
#    verbose = FALSE
#  )
#  

## -----------------------------------------------------------------------------
#  # This function can also take any GRanges object
#  # and add annotations to its metadata.
#  SampleTileMatricesAnnotated <- MOCHA::annotateTiles(SampleTileMatrices)
#  
#  # Load a curated motif set from library(chromVARmotifs)
#  # included with ArchR installation
#  data(human_pwms_v2)
#  SampleTileMatricesAnnotated <- MOCHA::addMotifSet(
#    SampleTileMatricesAnnotated,
#    pwms = human_pwms_v2,
#    w = 7 # weight parameter for motifmatchr
#  )

## -----------------------------------------------------------------------------
#  regionToPlot = "chr4:XXX-XXXX"
#  
#  countSE <- MOCHA::extractRegion(
#    SampleTileObj = SampleTileMatrices,
#    cellPopulations = "CD16 Mono",
#    region = regionToPlot,
#    groupColumn = "COVID_status",
#    numCores = numCores,
#    sampleSpecific = FALSE
#  )
#  dev.off()
#  pdf("ExamplePlot.pdf")
#  # Note that to show specific genes with the option' whichGene'
#  # you must have the package RMariaDB installed
#  MOCHA::plotRegion(countSE = countSE, whichGene = "MYD88")
#  dev.off()
#  

## -----------------------------------------------------------------------------
#  cellPopulation <- "CD16 Mono"
#  groupColumn <- "COVID_status"
#  foreground <- "Positive"
#  background <- "Negative"
#  
#  # Choose to output a GRanges or data.frame.
#  # Default is TRUE
#  outputGRanges <- TRUE
#  
#  # Optional: Standard output will display the number of tiles found
#  # below a false-discovery rate threshold.
#  # This parameter does not filter results and only affects the
#  # afforementioned message.
#  fdrToDisplay <- 0.2
#  
#  differentials <- MOCHA::getDifferentialAccessibleTiles(
#    SampleTileObj = SampleTileMatrices,
#    cellPopulation = cellPopulation,
#    groupColumn = groupColumn,
#    foreground = foreground,
#    background = background,
#    fdrToDisplay = fdrToDisplay,
#    outputGRanges = outputGRanges,
#    numCores = numCores
#  )
#  
#  # The output contains a GRanges with all tiles and their differential
#  # test results. We can filter by FDR to get our set of
#  # differentially accessible tiles:
#  
#  res = head(plyranges::filter(differentials, seqnames =='chr4' & FDR < 0.2))
#  

## -----------------------------------------------------------------------------
#  regions = res$Tile
#  
#  # Alternatively, define regions as a character vector
#  # of region strings in the format "chr:start-end"
#  # regions <- c(
#  # "chr4:7326500-7326999",
#  # "chr4:7327000-7327499",
#  # "chr4:7339500-7339999",
#  # "chr4:7344500-7344999"
#  # )
#  
#  links <- MOCHA::getCoAccessibleLinks(
#    SampleTileObj = SampleTileMatrices,
#    cellPopulation = cellPopulation,
#    regions = regions,
#    windowSize = 1 * 10^6,
#    numCores = numCores,
#    verbose = TRUE
#  )
#  
#  # Optionally filter these links by their absolute
#  # correlation - this output also adds the chromosome,
#  # start, and end site of each link to the table.
#  
#  MOCHA::filterCoAccessibleLinks(links, threshold = 0.4)

Try the MOCHA package in your browser

Any scripts or data that you put into this service are public.

MOCHA documentation built on May 29, 2024, 2:25 a.m.