Abstract
anabel is a free software for kinetics-fit analysis of 1:1 biomolecular interactions for Single-Curve-Analysis (SCA), Single-Cycle-Kinetics (SCK), and Multi-Cycle-Kinetics (MCK) injection strategies. It supports exported kinetic datasets from Biacore, BLI, Score, and an open data format, providing a user-friendly interface for non R-users (check the online version). Funded by BioCopy GmbH, anabel is a valuable tool for researchers seeking a streamlined analysis process.
anabel aims to simplify the analysis of binding-curve
fitting for scientists of different backgrounds, while minimizing user
influence (Stefan D. 2019; Norval L.
2019). With the function run_anabel
, which supports
three different modes, estimating kinetics constants is a
straightforward task. The user can select the mode that is most
appropriate for their experimental setup. Please note that this vignette
assumes a basic understanding of real-time label-free biomolecular
interactions. For more information and an introduction to the
theoretical background, please refer to the online version.
Installing anabel within R
is similar to any
other R package either using install.packages
or
devtools::install
. Either way you choose, make sure to set
dependencies = TRUE
. The core of anabel includes
some packages commonly used for everyday data analysis, such as
ggplot2, dplyr, purrr, reshape2
.
Once the installation is successful, you could start using anabel as follows:
library(anabel)
packageVersion("anabel")
#> [1] '3.0.1'
anabel accepts sensogram input in the form of an Excel or CSV file, or as a data frame. If providing a file, the full path must be specified, or anabel will attempt to read from the working directory.
The input data must be in numeric table format with a column dedicated to time. This column can have any name and use any R-approved symbols, as long as it contains the keyword ‘time’ (see exemplary datasets).
To specify the spots/sample names for the final results (tables + plots), you can provide an additional table with an ‘ID’ column containing the exact column names from the sensogram tables (except for the time-column), and a ‘Name’ column for mapping. Please note that ‘ID’ and ‘Name’ are reserved column names, and anabel will ignore the file if they are not present.
To run this tutorial, we will use simulated data that mimics typical 1:1 kinetics interactions. This data is available through anabel:
data("SCA_dataset")
data("MCK_dataset")
data("SCK_dataset")
To view the help page for anabel and the dataset, use the following command:
help(package = "anabel")
?SCA_dataset
?MCK_dataset ?SCK_dataset
All datasets that are used in this tutorial were generated using the
Biacore™ Simul8 – SPR sensorgram simulation tool (Simul8)
(Simul8 2023)
anabel currently offers two main functions, each with a help page that includes code examples:
convert_toMolar() # show help page
?run_anabel() # show help page ?
The main function of anabel is run_anabel
,
which analyzes sensograms of 1:1 biomolecular interactions using three
different modes: Single-curve analysis (SCA), Multi-cycle kinetics
(MCK), and Single-cycle kinetics (SCK). Additionally, the
convert_toMolar
function converts the analyte concentration
unit into molar, supporting units such as nanomolar (nm), millimolar
(mm), micromolar (µM), and picomolar (pm). This function is
case-insensitive and accepts variations such as nM, NM, nanomolar, and
Nanomolar. In the following section (Analyte
concentration), we explain how to use this function.
The first step is to convert the value of analyte-concentration into molar:
# one value in case of SCA method
<- convert_toMolar(val = 50, unit = "nM")
ac # vector in case of SCK and MCK methods
<- convert_toMolar(val = c(50, 16.7, 5.56, 1.85, 6.17e-1), unit = "nM")
ac_mck <- convert_toMolar(val = c(6.17e-1, 1.85, 5.56, 16.7, 50), unit = "nM") ac_sck
The parameters of SCA_dataset
are as follows:
Curve | Ka | Kd | Conc | tass | tdiss | Expected_KD |
---|---|---|---|---|---|---|
Sample. A | 1e+06 | 0.010 | 50nM | 50 | 200 | 0e+00 |
Sample. B | 1e+06 | 0.050 | 50nM | 50 | 200 | 1e-07 |
Sample. C | 1e+06 | 0.001 | 50nM | 50 | 200 | 0e+00 |
For example, Sample.A looks as follow: