knitr::opts_chunk$set(fig.height=4, fig.width=6)
library(SynergyScreen)
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.
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")
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"))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.