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.

Getting started

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:

#> [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.

Exemplary datasets - I

To run this tutorial, we will use simulated data that mimics typical 1:1 kinetics interactions. This data is available through anabel:


To view the help page for anabel and the dataset, use the following command:

help(package = "anabel")

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.

Analyte concentration

The first step is to convert the value of analyte-concentration into molar:

# one value in case of SCA method
ac <- convert_toMolar(val = 50, unit = "nM")
# vector in case of SCK and MCK methods
ac_mck <- convert_toMolar(val = c(50, 16.7, 5.56, 1.85, 6.17e-1), unit = "nM")
ac_sck <- convert_toMolar(val = c(6.17e-1, 1.85, 5.56, 16.7, 50), unit = "nM")

Supported models

Single-curve analysis (SCA)

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: