knitr::opts_chunk$set(fig.height=4, fig.width=6)
library(SynergyScreen)

Generate design for a new screen

The starting point is a CSV file listing compounds to be used in the screen. It should have 3 columns: compound, min.dose, and max.dose. Here is an example:

read.csv(system.file("extdata/8_compounds/8_compounds.csv", package = "SynergyScreen"))

Load compounds into a special object that will be used to initialize a new screen

compounds <- readCompoundFile(system.file("extdata/8_compounds/8_compounds.csv", package = "SynergyScreen"))

Initialize a new screen

screen0 <- new("SynergyScreen", compound_list=compounds)

Generate screen design for 96-well plates

screen0 <- generateDesign(screen0, type="12 doses exp") 
write.csv(design(screen0), file="8_compounds_design.csv", row.names=F)

Ignore the warning given by write.csv()

Display dose-response experiments, their positions on the plate, maximal doses and serial dilution factors.

designSummary(screen0)

This helps the experimenter to set up the screen. The doses are in exponential series. A lower compound concentration is obtained by adding a specified amount of blank medium to a medium that has a higher concentration of the same compound. For example, if dilution factor = 0.1, get a lower concentration by adding 0.1 volume of blank medium to 1 volume of a medium with a higher concentration.

Analyze screen data

First, load a design file^[The difference between the auto-generated design and the design that was actually used was that controls were in rows G and H in the first and A and H in the second.] and a file with screening data, e.g. ODs of plate wells.

screen1 <- designFile2SynergyScreen(system.file("extdata/8_compounds/8_compounds_design_actually_used.csv", package = "SynergyScreen")) 
OD.data <- readWideDataFlex(file = system.file("extdata/8_compounds/8_compounds_OD_data.csv", package = "SynergyScreen"), row = c(3,13,23,33,43,53), col = rep("G",6)) 
raw_data(screen1) <- OD.data 

Normalize and compute synergies

screen1 <- normalize(screen1) 
screen1 <- computeSynergies(screen1) 

Find synergies and antagonisms^[menls stands for "median effect non-linear least squares". It fits dose-response data using the median effect equation. Other options include "melm" and "loess". See vignette "Introduction to SynergyScreen" for details.]

findSynergies(screen1, statistic="max", threshold=0.7, direction="lower") 
findSynergies(screen1, statistic="min", threshold=1.5, direction="higher") 

Visualize screen data

Plot a heat map of the interaction matrix

plot(screen1) 

Note that the heat map does not show compounds 5, 6, and 7. This is because we do not have data for these compounds at 50% inhibition.

Plot isoboles of synergistic compounds

plotIsoboles(screen1, "Cpd_3-Cpd_4")

Plot isoboles of antagonistic compounds

plotIsoboles(screen1, "Cpd_1-Cpd_4", effect=seq(0.1,0.7,by=0.1)) 

Plot isoboles of non-interacting compounds

plotIsoboles(screen1, "Cpd_2-Cpd_3")

Plot the dose-response curve of a compound that worked. Note the sigmoid shape, well modeled by the median effect equation.

plot(dre(screen1,"Cpd_2")) 

Plot the dose-response curve of a compound that did not work. Note the narrow response range. Next time, the experimenter may want to try a much wider dose range.

plot(dre(screen1,"Cpd_6")) 


ybukhman/SynergyScreen documentation built on May 4, 2019, 2:31 p.m.