Installation#

GECKO is available as a MATLAB toolbox and as the Python package geckopy. Both implement the same procedure and reconstruct, simulate and analyse the same ecModels (see GECKO and geckopy). GECKO 4 and geckopy 4 are pre-releases.

Equipment#

A computer running macOS, Windows or Linux, with an internet connection to reach KEGG, UniProt, PubChem and GitHub. Data from these sources can also be downloaded or reconstructed manually elsewhere; GECKO functions download them directly.

The starting point is a conventional constraint-based metabolic model, at genome scale or smaller, in SBML format L3V1 FBCv2. The procedure works on any valid model, whether or not it belongs to a model organism.

Software#

  • MATLAB. The test workflow of GECKO runs MATLAB R2024b; the repository states no minimum version (MathWorks). No additional MathWorks toolboxes are required.

  • RAVEN toolbox version 3 or later (repository), which provides the reconstruction functions GECKO builds on, and some of the functions used to simulate and analyse ecModels. GECKO 4 does not support RAVEN 2.

  • Python 3.11 or above.

  • geckopy (repository), built on cobrapy for the constraint-based modelling layer and raven-toolbox (the Python port of RAVEN) for model-manipulation primitives and ecModel YAML input and output. Installing geckopy installs both dependencies.

Both toolboxes also need a linear-programming solver (see Choosing a solver below) and, for DLKcat, Docker.

RAVEN toolbox / raven-toolbox#

Installation instructions are in the RAVEN documentation: the repository is downloaded with git clone, as a ZIP archive from GitHub, or installed as a MATLAB Add-On. Instructions for installing the solver Gurobi are in the same page, under Choosing and configuring a solver.

After finishing installation, run the checks in MATLAB:

checkRaven;

raven-toolbox is a dependency of geckopy and is installed with it (see GECKO Toolbox / geckopy); it has no separate installation step.

GECKO Toolbox / geckopy#

GECKO 4 is a pre-release. It is installed with git or from a ZIP archive of a release tag:

git clone --depth=1 https://github.com/CompMetEng/GECKO

The clone is the develop branch; adding --branch <tag> selects a release tag. The tags and their ZIP archives are on the tags page of the repository; it is extracted to a location with read and write access.

The MATLAB Add-On (Home → Add-Ons → Get Add-Ons → search "GECKO Toolbox") installs a GitHub release; the latest, v3.2.5, is GECKO 3 (see GECKO 3 to GECKO 4).

After cloning or extracting, navigate to the GECKO folder in MATLAB and install it, which adds the GECKO subfolders to the MATLAB path:

cd('path/to/GECKO')
GECKOInstaller.install

To remove:

GECKOInstaller.uninstall

Upgrading with any install method: run GECKOInstaller.uninstall first, regardless of how GECKO was installed: it clears the old GECKO folder from the MATLAB path so a later session does not warn about paths that no longer exist. Then update (the Add-On manager's Check for Updates, a fresh ZIP extract, or git pull) and run GECKOInstaller.install again.

The GECKO 4 releases of geckopy and the releases of raven-toolbox that it depends on are pre-releases on PyPI, so --pre is required. Without --pre, pip installs geckopy 2.0.2, an earlier and unrelated package of the same name:

pip install --pre geckopy

The dependency of geckopy on raven-toolbox names a pre-release, so --pre also selects the pre-release of raven-toolbox, which does not need naming separately. A version of geckopy is pinned with == and the version number from the PyPI release history:

pip install --pre geckopy==<version>

For the development branch, ahead of the latest PyPI release, install from GitHub instead:

pip install \
    git+https://github.com/CompMetEng/raven-toolbox.git@develop \
    git+https://github.com/CompMetEng/geckopy.git@develop

Verify the install:

python -c "from importlib.metadata import version; print(version('geckopy'))"

Optional extras: geckopy[tutorial] adds matplotlib for the plots of the tutorial, and geckopy[evotune] adds cma, which cmaes_kcat_tuning needs.

pip install --pre "geckopy[tutorial,evotune]"

To remove:

pip uninstall geckopy raven-toolbox

geckopy installs the command-line tool geckopy with the subcommands init (new ecModel project), upgrade (GECKO 3 project to the GECKO 4 layout), brenda-refresh, uniprot-download and kegg-download.

Choosing a solver#

Solver

License

Good for

Gurobi

Free academic

Genome-scale models and large ecModels (recommended)

SCIP

Open source

Open-source solver of RAVEN (setRavenSolver('scip')); RAVEN provides a precompiled MEX binary for Windows only, and other systems compile the interface

HiGHS through the optlang scipy interface

Open source

Solver of geckopy that needs no licence

MATLAB reaches the solvers through RAVEN and the COBRA Toolbox, Python through cobrapy.

Avoid GLPK

GLPK, the default solver of RAVEN, is not recommended for GECKO: ecModels are larger and more numerically demanding than the conventional GEMs for which GLPK is adequate. Configure Gurobi, or in MATLAB SCIP, before working with an ecModel of genome scale.

Docker#

runDLKcat (Python: run_dlkcat) runs DLKcat in a Docker container from the image ghcr.io/sysbiochalmers/dlkcat-gecko:0.1. Installation instructions are at docs.docker.com/get-started/get-docker.

kcat prediction without Docker

kcatsFromOKP (Python: kcats_from_okp) predicts kcat values with the hosted OpenKineticsPredictor service. The service needs an API key and no Docker installation (see Kcat assignment).

Tutorial code#

In GECKO/tutorials:

  • full_ecModel/protocol.m reconstructs and analyzes a tutorial ecModel for Saccharomyces cerevisiae.

  • light_ecModel/protocol.m builds a light ecModel of the generic human-GEM.

In geckopy/tutorials:

  • full_ecModel/protocol.py mirrors the MATLAB full-ecModel tutorial step for step, covering the full pipeline for S. cerevisiae.

  • light_ecModel/protocol.py builds a light ecModel from a small 5-reaction demo model (geckopy/examples/ecTestGEM) without external data.

The ecModels that the tutorials generate are for use within the tutorials; they may need additional curation before other use.