The R package cobrar provides structures and functions for constraint-based metabolic network analysis, e.g. the prediction of metabolic fluxes using fluxes using Flux Balance Analysis (FBA). cobrar is inspired by the former CRAN R package sybil(1).
Please note that cobrar requires the two system libraries libSBML and glpk. The following installation instructions for different operating systems install the dependencies first, then cobrar. If you already have libSBML and glpk installed, you can skip to the last part of the instructions.
cobrar is under development and the installation instructions described will install the latest development version.
Install libSBML and glpk:
sudo apt install libsbml-dev libglpk-dev
Install cobrar (in R):
# install.packages("remotes")
remotes::install_github("Waschina/cobrar", build_vignettes = TRUE)
Install libSBML and glpk:
sudo yum install libsbml-devel glpk-devel
Install cobrar (in R):
# install.packages("remotes")
remotes::install_github("Waschina/cobrar")
libSBML and glpk can be installed using homebrew:
brew install glpk brewsci/bio/libsbml
Install cobrar (in R):
# install.packages("remotes")
remotes::install_github("Waschina/cobrar")
cobrar is currently not available for Windows.
Releases of cobrar for linux-64 and osx-64 systems are available via bioconda.
conda install bioconda::r-cobrar
The full documentation including illustrative examples is available here.
The vignettes of the package can also be accessed:
library(cobrar)
vignette(package = "cobrar")
vignette(topic = "cobrar")
A simple Flux Balance Analysis (FBA) for the core metabolism of Escherichia coli:
library(cobrar)
#> Loading required package: Matrix
#> cobrar uses...
#> - libSBML (v. 5.19.0)
#> - glpk (v. 5.0)
fpath <- system.file("extdata", "e_coli_core.xml", package="cobrar")
mod <- readSBMLmod(fpath)
fba(mod)
#> Algorithm: FBA
#> Solver status: solution is optimal
#> Optimization status: optimization process was successful
#> Objective fct. value: 0.8739215
#> Secondary objective: NA
- cobrar is fully functional from reading SBML files until optimisation of linear programs, without the need of additional packages such as sybilSBML or glpkAPI.
- cobrar links to libsbml via libsbml’s C++ API, not the C API as the sybilSBML package.
- The GNU glpk library is a system requirement. There are no links/references to IBM’s CPLEX in the cobrar package, which were one reason why sybil was discontinued on CRAN.
- roxygen2 is used for documenting functions and classes.
- Feature trim: A range of functions in sybil are not part of cobrar.
- In cobrar, R’s garbage collector handles memory management, including memory associated to C++-objects and the pointers to these.
- Simplifications in class and function architecture
- No more Class “SysBiolAlg” nor sub-classes. Different algorithms have their own function and detailed documentation of their return values
- In sybil, columns named “annotation” were actually concatenated
CVTerms
(https://synonym.caltech.edu/software/libsbml/5.20.0/cpp-api/class_c_v_term.html).
To avoid confusion with other levels of annotation, the columns
(e.g. in
react_attr
ormet_attr
) are named ‘CVTerms’ in cobrar. - cobrar allows to assign SBOTerms to reactions, metabolites, genes.
- Performance (i.e., computation time) improvements in certain
procedures:
- identification of dead-end metabolites
- reading/exporting SBML files,
- pFBA algorithm (a.k.a MTF ‘Minimization of Total Flux’).
- FVA; also now allows relaxed constraints on optimal growth (e.g. flux variability with 90-100% optimal growth)
- cobrar exports SBML files level 3 version 2 with
fbc
version 2 andgroups
version 1. - Group assignments are only supported for reactions.
- GLPK is the default solver and is required to build the package. A plugin for IBM’s ILOG CPLEX is available here (cobrarCPLEX).
- Multiple objectives. The SBML standard with its
fbc
extension allows to specify more than one objective (classListOfObjectives
). However, cobrar can only handle one current objective function per model, which is defined as an objective coefficient vector in slotobj_coef
of an object of classmodelorg
. Note that when reading SBML models, cobrar will only use the objective, which is defined asactiveObjective
in the SBML file, or the first objective if no active objective is defined.
- Gelius-Dietrich, G., Desouki, A.A., Fritzemeier, C.J., Lercher, M.J. sybil – Efficient constraint-based modelling in R. BMC Syst Biol 7, 125 (2013). https://doi.org/10.1186/1752-0509-7-125