IncucyteDRC: An R package for the dose response analysis of live cell imaging data

We present IncucyteDRC, an R package for the analysis of data from live cell imaging cell proliferation experiments carried out on the Essen Biosciences IncuCyte ZOOM instrument. The package provides a simple workflow for summarising data into a form that can be used to calculate dose response curves and EC50 values for small molecule inhibitors. Data from different cell lines, or cell lines grown under different conditions, can be normalised as to their doubling time. A simple graphical web interface, implemented using shiny, is provided for the benefit of non-R users. The software is potentially useful to any research group studying the impact of small molecule inhibitors on cell proliferation using the IncuCyte ZOOM.


Introduction
Live cell imaging permits cell proliferation to be monitored in real time over a period of days or weeks, and the IncuCyte ZOOM from Essen Biosciences (http://www.essenbioscience.com/essenproducts/incucyte/) is a platform used for such experiments. In oncology drug discovery the proliferation of cancer cell lines can be monitored in the presence of different small molecule inhibitors at different concentrations to gain insight as to the efficacy and mechanism of action of novel compounds. This approach provides a useful alternative to measuring cell proliferation as a phenotypic endpoint after a fixed period such as 3 days. It has the advantage of being able to visualise graphically and morphologically when treatments impact on proliferative capacity. Furthermore, vehicle dosed cells can be used to control for population doubling resulting in normalisation across many different cell lines. This may be particularly important when downstream effects of compound treatment require a round of replication before they are apparent.
The IncuCyte ZOOM comes with sophisticated software (http:// www.essenbioscience.com/essen-products/software/incucytebase-software/) for the analysis of imaging data and the calculation of metrics such as percent confluence, however we sought a more streamlined workflow for the analysis of data from cell-based compound screening assays. The result was the development of the R 1 package IncucyteDRC which permits quick and easy fitting of dose response curves and calculation of EC50 values, as well as the export of data to standard analysis packages such as GraphPad PRISM http://www.graphpad.com/scientific-software/prism/ and Dotmatics Studies http://www.dotmatics.com/products/studies/. In addition, a graphical user interface was developed as part of the package using Shiny 2 , as well as a novel algorithm for normalizing data by cell doubling time.

Workflow overview
A basic workflow for the IncucyteDRC package is outlined below: 1. Import data and plate map information 2. Create an IncucyteDRCSet object 3. Fit growth curves to the data 4. Calculate the growth curve values at a given 'cut time'

Carry out a dose response analysis using the extracted values
Optionally, the cut time can be calculated automatically for a required number of doublings.

Data import
The importPlatemapXML function imports .Platemap files generated by the IncuCyte ZOOM software to define the contents of a plate. The function can extract the following parameters: compound (description, concentration and units), growth condition (description), and cell type (description, passage and seeding density). These are converted into a data.frame object which is used as a basis for further analysis. Alternatively, the importPlatemap function can import a data.frame or a tab delimited text file but these must be in the correct format -see example(importPlatemap).
The importIncucyteData function imports data generated by the Incucyte Zoom software, as described in detail in the package vignette entitled 'Exporting From Incucyte Zoom Software'. The output is a IncucyteDRCPlateData S3 object.
Creating an IncucyteDRCSet object The IncucyteDRCSet object is at the centre of the package workflow. Subsequent functions add to and operate on the data contained within the object. It can be initiated using the makeIncucyteDRCSet function and at its simplest combines a plate map data frame generated by importPlatemapXML function with an IncucyteDRCPlateData object created by the importIncucyteData function. In addition, a cut time can be specified, and a single row metadata data.frame provided.
A key attribute of an IncucyteDRCSet is that all data share a common control growth curve. Thus it is appropriate to have an IncucyteDRCSet object containing multiple compounds on a common cell line background, but if the cell line background changes then one object is needed per condition.
The splitIncucyteDRCPlateData function is a convenience function that splits up an IncucyteDRCPlateData object into a list of IncucyteDRCSet objects if necessary, or a single IncucyteDRCSet object if not. It also automatically populates the metadata element. Therefore it is sensible to use this function, rather than the makeIncucyteDRCSet function, in a standard workflow.

Fit growth curves
The first step in the analysis process is to fit growth curves to the data using the base R loess function. This is done using the related functions fitGrowthCurvesGrouped and fitGrowth-CurvesIndividual. The former combines replicates to create a single growth curve for a given sample and compound concentration, whilst the latter fits a growth curve for every single well on a plate. The IncucyteDRCSet object is updated with four dplyr 3 data frames (tbl_df objects) containing the models themselves and the fitted data for plotting. Refer to the dplyr 3 package documentation for more information on how models and other objects can be stored in data frames.
Once the growth curves have been fitted, they can be visualised using the plotIncucyteDRCSet function ( Figure 1).

Calculate growth curve values at a cut time
Although the growth curves themselves can give some insight into the effect that different compounds have on the growth of the cell line, to analyse this formally the growth parameter can be determined at a specific 'cut time' using the calculateDRCData function. This data is stored in the IncucyteDRCSet object and can subsequently be exported to various formats using the exportDRCDataToDataFrame, exportDRCDataToPRISM and exportDRCDataToDotmatics functions. These data can then form the basis of a dose response analysis to generate an EC50 value.

Carry out a dose response analysis
It is advisable to export the dose response data and fit the curves in specialist software such as GraphPad PRISM or Dotmatics Studies, but for convenience there are also functions that utilise the drc package 4 to provide an end-to-end workflow. The fitDoseRe-sponseCurve function generates models for each compound in the IncucyteDRCSet (using the drc::LL.4 function) and calculateEC50 predicts an EC50 value for each model (using the drc::EC50 function). The exportEC50Data function generates a data.frame containing the values stored in the IncucyteDRCSet object, whilst the dose response curves can be visualised with the plotDoseResponseCurve function.

Calculation of the cut time
In the previous examples, a cut time has been manually provided following an inspection of the growth curves. Typically the cut time should be as long as possible to allow differences to become pronounced, but still during the exponential phase of cell growth before the cells become confluent. However, sometimes it might be desirable to determine the cut time for a given number of doublings, so that the EC50 for fast and slow growing cell lines can be normalised.
The calculateCutTimeForIDRCSet function can be run on an IncucyteDRCSet object to determine the optimal cut time from the control (vehicle treated) growth curves given a set of parameters. These include baseline_time (the timepoint to take as a baseline for calculating doublings), no_doublings (the number of doublings required) and max_val (the maximum allowable growth curve value). The algorithm works out the growth curve value at the baseline time and what value would correspond to a given number of doublings from this point, then returns the timepoint at which this value is achieved. If this value exceeds the maximum value, then the time at which the maximum value is returned instead, along with the actual number of doublings achieved.
In detail, the growth curve is truncated by removing its nonexponential phase along with any part exceeding the user defined maximum (usually 80%). The non-exponential phase is defined as the part of the curve after the timepoint at which the n=30 moving average of the second differences of the growth values reaches its minimum. This corresponds to the time at which the rate of cell growth is slowing most rapidly. The growth value required to reach the desired number of doublings from a user defined baseline time was calculated (using the predict function on the loess model object), and the elapsed time to reach this is returned as the cut time.
If the required growth value is not reached on the truncated growth curve, then the maximum growth value achieved on the truncated curve is returned instead along with the actual number of doublings that occurred.

Figure 2. Visualisation of an individual dose response curve for a compound with the EC50 represented as a red dashed vertical line.
The y-axis is the growth value (percent confluence in this case) whilst the x-axis is the micromolar compound concentration.

Operation
The IncucyteDRC R package is available on CRAN and is built on top of R version 3.2.3 1 and Shiny 0.13.2 2 and has no special R dependencies beyond packages that are available on CRAN and so should work on any operating system supported by R. A full list of R package dependencies is present in the Description file of the package.
The package can be installed from CRAN: install.packages('IncucyteDRC') The latest development version can be installed in an R session from GitHub using the devtools 5 package: Finally, a Shiny app 2 provides a graphical user interface for the functionality within the package. This can be launched from within R using shinyVisApp() whilst details for how to set up the IncucyteDRC package as a Shiny app on a Shiny server is included in the vignette.

Use cases
The package vignette contains detailed use cases using two example datasets. These can be loaded by running the examples for the importPlatemapXML and importIncucyteData functions:

Summary
The IncucyteDRC R package provides a simple, reproducible workflow for the dose response analysis of live cell imaging data from the IncuCyte Zoom instrument. To facilitate its use by non-R users, a comprehensive and user-friendly graphical interface is provided as a Shiny 2 web application. The software is freely available on CRAN and is potentially useful to any research group studying the impact of small molecule inhibitors on cell proliferation.

Software availability
1. The authors have developed an R package to visualise drug response data and make some basic calculations from experiments performed on the Incucyte ZOOM system. The funtions are easy to use and, interestingly, the useful IncucyteDRCSet object has been designed so that it can progressively integrate all data generated. Both the article and the R documentation are clearly explained.

Open Peer Review
I would just make one suggestion on the manuscript. One of the features of the software is that it allows for normalization of the drug response by cell doubling time. A brief description of its relevance could be added.

I have read this submission. I believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard.
No competing interests were disclosed. Competing Interests: 03  developed an R package to analyse data obtained from the Incucyte instrument, and et al. specifically growth curve responses to various treatment. While one could interpret Incucyte data without this package, or without any programming skills at all, there is no doubt that Incucyte users knowing R, or intensive Incucyte users wishing to automatize their analysis, will greatly benefit from using it. Overall the package is working well, is easily available through the popular CRAN repository, is well documented, with notably nice vignette, a video tutorial and a companion shiny app. The present manuscript present this package appropriately.
I have no major concern with it, and only small comments and suggestions for improvement. About the manuscript: Package availability on CRAN could be mentioned in the abstract.
Authors could detail the reasons why they advise against using their package for carrying dose