Dense mode analysis

Let’s analyze data from a dense mode experiment.

Gather files

Gather the required metadata file and raw file(s), we recommend putting them into separate folders for simplicity:

  • meta 📂

    • Contains the single metadata .csv file

    • Try using the example from the analysis overview page

  • raw 📂

    • Contains the raw file(s) in 384-well format (and nothing else)

    • Try using the example from the dense mode protocol

Note

Nothing else should be in these folders at the start of analysis.

Prepare for analysis

The best way to proceed is to use an IDE like RStudio or Positron. We need to:

  • Load the combocat package (see the analysis overview page for installation)

  • Read in the metadata file

  • Set the working directory to the raw folder

#Load library
library(combocat)

#Read in the metadata file using Import Dataset➝From text (readr) or
meta_dense <- read_csv(".../meta_dense.csv")

#Set working directory using Session➝Set Working Directory or
setwd(".../raw")

Quick start

The entire workflow of analysis, plotting, and reporting can be run in this single block:

#Map, normalize
normData <- 
  cc_map(meta_dense, getwd(), save_raw_plate_heatmaps = TRUE) %>%
  cc_norm(.)

#Fit DR models
drData <- 
  cc_getDR(normData)

#Calculate synergy, QC
synData <- 
  cc_getSyn(normData, drData) %>%
  cc_getQC(., drData)

#Return/save results
cc_report(
  synData,   
  drData,   
  cd_plots    = cc_plotMat(synData, "perc_cell_death", color_midpoint = 50),
  syn_plots   = cc_plotMat(synData, "bliss_synergy",   color_midpoint = 20),
  extra_plots = cc_plotExtras(synData,                 color_midpoint = 20))

Below, the process is broken down into more detail:

Core functions

These are the functions that handle mapping, normalization, synergy quantification, and fitting DR curves:

mappedData <- 
  cc_map(meta_dense, getwd()) #Map

normData <-                             
  cc_norm(mappedData)         #Normalize

drData <- 
  cc_getDR(normData)          #Fit dose-response models

synData <- 
  cc_getSyn(normData, drData) #Calculate synergy

Quality Control (QC)

See the Advanced topics section for details of what the QC does and why it is important

synData <- cc_getQC(normData, drData)

Generating plots

Now we plot the cell death and synergy matrices, plus the accessory plots (like bar plots of the maximum synergy per combo)

#Plot cell death matrices
cdPlots <- 
  cc_plotMat(synData,
             plotting_variable = "perc_cell_death",
             color_midpoint = 50)
                      
#Plot synergy matrices
synPlots <- 
  cc_plotMat(synData,
             plotting_variable = "bliss_synergy",
             color_midpoint = 20)
                       
#Accessory plots
extraPlots <- 
  cc_plotExtras(synData)

Generating the reports

Finally, cc_report will save all the plots, and generate detailed reports of cell death, synergy, IC50 values, and much more.

cc_report(synData,
          drData,
          cdPlots,
          synPlots,
          extraPlots,
          save_summary_files = TRUE,
          save_summary_plots = TRUE)

For example:

The summary plots will include the following (left-to-right):

  • Single-agent dose-response curves

  • Cell death matrix

  • Synergy matrix

  • Bar plot of maximum synergy (the %cell death of the drug doses that produce maximum synergy. Note than when %cell death is <0, this is typically due to a normalization artifact).

  • Synergy scatterplot (observed vs. expected synergy across all doses).