Introduction

AutoPlate is an R Shiny web application (and R library) that helps you automate the analysis of biological assays conducted on 96-well plates. It lets you go from raw data to publication ready figures in minutes!

Currently, the only supported assay types are the Pseudotype Micro Neutralisation (pMN) and ELLA assays, for which dose-response curves can be fit. In the future, other assays such as ELISA, HIA or even any custom assay may be supported. Let us know if there’s an assay that you would like us to support!

Ways of using AutoPlate

You can use AutoPlate in two ways:

  1. Web application - - this is the easiest way to run AutoPlate!
  2. R library - you can use only the functions you need to customise your own analysis!

Web Application Quick Start

Try out the app here: https://philpalmer.shinyapps.io/AutoPlate/

Currently the dashboard contains the following tabs and features, which allow you to run an analysis in three simple steps:

  • 🏠 Home

    The opening page gives an introduction to AutoPlate and contains useful links for support and this GitHub repository





  • ➡️ 1) Input

    Upload the raw plate readouts for your 96 well-plates and specify what each well contained in terms of dilutions, samples, types, bleed, treatment, virus and experiment ID





  • ✔️ 2) Quality Control

    Visualise the data you entered in step 1 and check that the controls have worked for each plate/well. If the controls have failed for any wells these can be excluded from the analysis





  • 📈 3) Results

    Analyse the data and generate downloadable plots such as a Dose Response Curve





R library Quick Start

Installation

You can install the latest released version of autoplate from GitHub with:

# install.packages("devtools")
devtools::install_github("PhilPalmer/AutoPlate")
#> Loading autoplate
#> Loading required package: magrittr

Running your own analysis in R

AutoPlate was primarily built as a web app but most of the functionality can also be run within R, which may be useful if you want to customise an analysis.

Here is a basic example of how to plot a dose response curve from the data exported from AutoPlate:

1) Load your dataset

# Load an example dataset
data("example_data_pmn_platelist_H1N1")
data <- example_data_pmn_platelist_H1N1

# OR

# Load your own dataset - make sure your file path is correct!
platelist_file <- "data-raw/example_data_pmn_platelist_H1N1.csv"
data <- read.csv(platelist_file, header=TRUE, stringsAsFactors=FALSE, check.names=FALSE)

2) Define the virus you want to plot

virus_to_plot <- unique(data$virus)[1]
print(virus_to_plot)
#> [1] "A/swine/Guangxi/1/2013 (H1N1)"

3) Preprocess your dataset to keep only the non-excluded, types and virus of interest:

 data <- dplyr::filter(data, types %in% c("x", "m"), exclude == FALSE, virus == virus_to_plot)

4) Fit your dose-response model (DRM) using the DRC package:

model <- drc::drm(formula=neutralisation~dilution, curveid=sample_id, fct=drc::LL2.4(), data=data, pmodels=data.frame(1,1,1,sample_id), upperl=c(NA,NA,100,NA), lowerl=c(0,NA,NA,0))

5) Plot your dose-response curve with AutoPlate and ggplot2 (Optional: make it intereactive with Plotly!)

drc_plot <- autoplate::plot_drc(data, model)
drc_plotly <- plotly::ggplotly(drc_plot)
#> Warning: `group_by_()` is deprecated as of dplyr 0.7.0.
#> Please use `group_by()` instead.
#> See vignette('programming') for more help
#> This warning is displayed once every 8 hours.
#> Call `lifecycle::last_warnings()` to see where this warning was generated.
print(drc_plot)

Credit

This app was built by @PhilPalmer while at the University of Cambridge Lab of Viral Zoonotics

Many thanks to others who have helped out along the way too, including (but not limited to): David Wells, George Carnell, Joanne Marie Del Rosario and Kelly da Costa

Citation

AutoPlate is yet to be published but we’re hoping to change this soon!