# COnstraint-Based Reconstruction and EXascale Analysis
[docs-img]:https://img.shields.io/badge/docs-latest-blue.svg
[docs-url]: http://lcsb-biocore.github.io/COBREXA.jl
[ci-img]: https://github.com/LCSB-BioCore/COBREXA.jl/actions/workflows/ci.yml/badge.svg?branch=master
[ci-url]: https://github.com/LCSB-BioCore/COBREXA.jl/actions/workflows/ci.yml
[cov-img]: https://codecov.io/gh/LCSB-BioCore/COBREXA.jl/branch/master/graph/badge.svg?token=H3WSWOBD7L
[cov-url]: https://codecov.io/gh/LCSB-BioCore/COBREXA.jl
[contrib-img]: https://img.shields.io/badge/contributions-start%20here-green
[contrib-url]: https://github.com/LCSB-BioCore/COBREXA.jl/blob/master/.github/CONTRIBUTING.md
| **Documentation** | **Tests** | **Coverage** | **How to contribute?** |
|:--------------:|:-------:|:---------:|:---------:|
| [![docs-img]][docs-url] | [![CI][ci-img]][ci-url] | [![codecov][cov-img]][cov-url] | [![contrib][contrib-img]][contrib-url] |
This is package provides constraint-based reconstruction and analysis tools for
exa-scale metabolic models in Julia.
## How to get started
### Prerequisites and requirements
- **Operating system**: Use Linux (Debian, Ubuntu or centOS), MacOS, or Windows
10 as your operating system. `COBREXA` has been tested on these systems.
- **Julia language**: In order to use `COBREXA`, you need to install Julia 1.0
or higher. Download and follow the installation instructions for Julia
[here](https://julialang.org/downloads/).
- **Hardware requirements**: `COBREXA` runs on any hardware that can run Julia,
and can easily use resources from multiple computers interconnected on a
network. For processing large datasets, you are required to ensure that the
total amount of available RAM on all involved computers is larger than the
data size.
- **Optimization solvers**: `COBREXA` uses
[`JuMP.jl`](https://github.com/jump-dev/JuMP.jl) to formulate optimization
problems and is compatible with all [`JuMP` supported
solvers](https://jump.dev/JuMP.jl/stable/installation/#Supported-solvers).
However, to perform analysis at least one of these solvers needs to be
installed on your machine. For a pure Julia implementation, you may use e.g.
[`Tulip.jl`](https://github.com/ds4dm/Tulip.jl), but other solvers (GLPK,
Gurobi, ...) work just as well.
:bulb: If you are new to Julia, it is advisable to [familiarize yourself with
the environment
first](https://docs.julialang.org/en/v1/manual/getting-started/). Use the
Julia [documentation](https://docs.julialang.org) to solve various
language-related issues, and the [Julia package manager
docs](https://julialang.github.io/Pkg.jl/v1/getting-started/) to solve
installation-related difficulties. Of course, [the Julia
channel](https://discourse.julialang.org/) is another fast and easy way to find
answers to Julia specific questions.
### Quick start guide
You can install COBREXA from Julia repositories. Start `julia`, **press `]`** to
switch to the Packaging environment, and type:
```
add COBREXA
```
You also need to install your favorite solver supported by `JuMP.jl`, typing
e.g.:
```
add GLPK
```
When the packages are installed, switch back to the "normal" julia shell by
pressing Backspace (the prompt should change color back to green). After that,
you can download [a SBML model from the
internet](http://bigg.ucsd.edu/models/e_coli_core) and perform a
flux balance analysis as follows:
```julia
using COBREXA # loads the package
using GLPK # loads the optimization solver
# download the model
download("http://bigg.ucsd.edu/static/models/e_coli_core.xml", "e_coli_core.xml")
# open the SBML file and load the contents
model = load_model("e_coli_core.xml")
# run a FBA
fluxes = flux_balance_analysis_dict(model, GLPK.Optimizer)
```
The variable `fluxes` will now contain a dictionary of the computed optimal
flux of each reaction in the model:
```
Dict{String,Float64} with 95 entries:
"R_EX_fum_e" => 0.0
"R_ACONTb" => 6.00725
"R_TPI" => 7.47738
"R_SUCOAS" => -5.06438
"R_GLNS" => 0.223462
"R_EX_pi_e" => -3.2149
"R_PPC" => 2.50431
"R_O2t" => 21.7995
"R_G6PDH2r" => 4.95998
"R_TALA" => 1.49698
⋮ => ⋮
```
### Testing the installation
If you run a non-standard platform (e.g. a customized operating system), or if
you added any modifications to the `COBREXA` source code, you may want to run
the test suite to ensure that everything works as expected:
```julia
] test COBREXA
```
## Acknowledgements
`COBREXA.jl` is developed at the Luxembourg Centre for Systems Biomedicine of
the University of Luxembourg ([uni.lu/lcsb](https://www.uni.lu/lcsb)),
cooperating with the Institute for Quantitative and Theoretical Biology at the Heinrich
Heine University in Düsseldorf ([qtb.hhu.de](https://www.qtb.hhu.de/)).
The development was supported by European Union's Horizon 2020 Programme under
PerMedCoE project ([permedcoe.eu](https://www.permedcoe.eu/)) agreement no.
951773.