Metadata-Version: 2.4
Name: refineGEMs
Version: 2.0.0b3
Summary: refineGEMs: a python package intended to help with the curation of genome-scale metabolic models (GEMS)
Author-email: Famke Baeuerle <famke.baeuerle@gmail.com>, "Gwendolyn O. Döbel" <gwendolyn.o.gusak@gmail.com>, Carolin Brune <carolin.brune@informatik.uni-halle.de>
Maintainer: Nina Roßbach
License: MIT
Project-URL: repository, https://github.com/draeger-lab/refinegems
Project-URL: documentation, https://refinegems.readthedocs.io/en/latest/
Project-URL: Bug Tracker, https://github.com/draeger-lab/refinegems/issues
Keywords: Systems Biology,GEM,Metabolic Modelling,Python Package
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Classifier: Programming Language :: Python
Classifier: Programming Language :: SQL
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: <3.13,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: THIRD_PARTY_LICENSES.md
License-File: docs/source/images/logos/LOGO_LICENSE.md
License-File: docs/source/images/GRAPHICS_LICENSE.md
Requires-Dist: biopython>=1.79
Requires-Dist: bioservices>=1.11.2
Requires-Dist: click>=8.1.3
Requires-Dist: cloup>=3.0.5
Requires-Dist: cobra>=0.28.0
Requires-Dist: depinfo>=1.7.0
Requires-Dist: gffutils>=0.10.1
Requires-Dist: ipywidgets
Requires-Dist: markupsafe>=2.0.1
Requires-Dist: matplotlib>=3.8.2
Requires-Dist: memote>=0.17.0
Requires-Dist: multiprocess>=0.70.16
Requires-Dist: numpy>=2.0.0
Requires-Dist: pandas>=2.2.2
Requires-Dist: pyyaml>=6.0.1
Requires-Dist: ratelimit>=2.2.1
Requires-Dist: requests>=2.32.4
Requires-Dist: seaborn>=0.12.2
Requires-Dist: sortedcontainers>=2.4.0
Requires-Dist: sqlalchemy>=2.0.0
Requires-Dist: tqdm>=4.66.1
Requires-Dist: upsetplot>=0.9.0
Requires-Dist: venn>=0.1.3
Requires-Dist: z3-solver>=4.13.0.0
Provides-Extra: bioregistry
Requires-Dist: bioregistry<0.12.19,>=0.12.0; extra == "bioregistry"
Provides-Extra: chebi
Requires-Dist: libchebipy>=1.0.10; extra == "chebi"
Provides-Extra: ols
Requires-Dist: ols-client>=0.1.3; extra == "ols"
Provides-Extra: sbo
Requires-Dist: sboannotator>=3.0.2; extra == "sbo"
Provides-Extra: optional
Requires-Dist: bioregistry<0.12.19,>=0.12.0; extra == "optional"
Requires-Dist: libchebipy>=1.0.10; extra == "optional"
Requires-Dist: ols-client>=0.1.3; extra == "optional"
Requires-Dist: sboannotator>=3.0.2; extra == "optional"
Provides-Extra: docs
Requires-Dist: accessible-pygments; extra == "docs"
Requires-Dist: sphinx; extra == "docs"
Requires-Dist: nbsphinx; extra == "docs"
Requires-Dist: sphinx_rtd_theme; extra == "docs"
Requires-Dist: pandoc; extra == "docs"
Requires-Dist: ipython; extra == "docs"
Requires-Dist: sphinxcontrib-bibtex; extra == "docs"
Requires-Dist: sphinx_copybutton; extra == "docs"
Requires-Dist: pip-tools; extra == "docs"
Dynamic: license-file

![Logo of refineGEMs](https://raw.githubusercontent.com/draeger-lab/refinegems/main/docs/source/images/logos/refineGEMs_text_nb.png)
<!-- Needs to be a raw link and no relative path due to usage in PyPI and DockerHub! -->

| Topic | Badge(s) |
| :--- | :---- |
| General | [![Licence: MIT](https://img.shields.io/badge/Licence-MIT-yellow.svg)](https://opensource.org/licenses/MIT) ![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fdraeger-lab%2Frefinegems%2Fmain%2Fpyproject.toml) [![Documentation Status](https://readthedocs.org/projects/refinegems/badge/?version=latest)](https://refinegems.readthedocs.io/en/latest/?badge=latest) ![Repo Size](https://img.shields.io/github/repo-size/draeger-lab/refinegems) ![GitHub last commit (branch)](https://img.shields.io/github/last-commit/draeger-lab/refinegems/main) [![Powered by the Bioregistry](https://img.shields.io/static/v1?label=Powered%20by&message=Bioregistry&color=BA274A&style=flat&logo=image/png;base64,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)](https://github.com/biopragmatics/bioregistry) |
| GitHub release | ![GitHub release (with filter)](https://img.shields.io/github/v/release/draeger-lab/refinegems?logo=data:image/png;base64,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&label=refineGEMs&color=B4A069&style=flat-square) ![GitHub all releases](https://img.shields.io/github/downloads/draeger-lab/refinegems/total?logo=github&label=GitHub%20downloads) |
| Available on | [![PyPI version](https://img.shields.io/pypi/v/refinegems?logo=pypi&label=PyPI%20package&color=neongreen)](https://pypi.org/project/refineGEMs/) ![PyPI - Format](https://img.shields.io/pypi/format/refinegems?) |
| &nbsp; | [![Docker Image Version](https://img.shields.io/docker/v/biodatalab/refinegems?logo=docker&label=Docker%20Image)](https://hub.docker.com/r/biodatalab/refinegems) ![Docker Pulls](https://img.shields.io/docker/pulls/biodatalab/refinegems) |
| &nbsp; | [![Conda Version](https://img.shields.io/conda/vn/bioconda/refinegems?logo=anaconda)](https://anaconda.org/channels/bioconda/packages/refinegems/overview) ![Conda Downloads](https://img.shields.io/conda/dn/bioconda/refinegems) |
| Compliance | [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![FAIR checklist badge](https://fairsoftwarechecklist.net/badge.svg)](https://fairsoftwarechecklist.net/v0.2?f=31&a=32113&i=32102&r=133) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/10532/badge)](https://www.bestpractices.dev/projects/10532) [![fair-software.eu](https://img.shields.io/badge/fair--software.eu-%E2%97%8F%20%20%E2%97%8F%20%20%E2%97%8F%20%20%E2%97%8F%20%20%E2%97%8B-yellow)](https://fair-software.eu) |
| References | [![Zenodo DOI](https://img.shields.io/badge/DOI-10.5281%2Fzenodo.8270303-B4A069?style=flat-square&logo=zenodo&logoColor=white)](https://zenodo.org/badge/latestdoi/359867657) [![Frontiers DOI](https://img.shields.io/badge/Frontiers%20DOI-10.3389%2Ffbinf.2023.1214074-B4A069?style=flat-square)](https://www.frontiersin.org/articles/10.3389/fbinf.2023.1214074/full) |


# refineGEMs
`refineGEMs` is a python package intended to help with the curation of genome-scale metabolic models (GEMS). </br>

<!-- TOC -->

- [refineGEMs](#refinegems)
    - [Overview](#overview)
    - [Installation](#installation)
        - [pypi Via pip](#pypi-via-pip)
        - [docker Via Docker](#docker-via-docker)
            - [(a) Image from Docker Hub](#a-image-from-docker-hub)
            - [(b) Local build](#b-local-build)
            - [How to use](#how-to-use)
    - [Contributing](#contributing)
    - [Licence](#licence)
        - [Logo licence and brand usage](#logo-licence-and-brand-usage)
        - [Documentation graphics licence](#documentation-graphics-licence)
    - [How to cite](#how-to-cite)
    - [Repositories using refineGEMs](#repositories-using-refinegems)

<!-- /TOC -->

## Overview

Currently `refineGEMs` can be used for the investigation of a genome-scale metabolic model (GEM)/multiple GEMs, it can complete the following tasks:

- Loading GEMs with `COBRApy` and `libSBML`
- Report and visualise number of metabolites, reactions and genes
- Report orphaned, deadends and disconnected metabolites
- Report mass and charge unbalanced reactions
- Report the [Memote](https://memote.readthedocs.io/en/latest/index.html) score and provide a whole MEMOTE report
- Find and fill gaps automatically via databases like KEGG, BioCyc, SwissProt or a user-defined database
- Compare the charges and masses of the metabolites present in the model to the charges and masses denoted in the [ModelSEED](https://modelseed.org/) Database.

Other applications of `refineGEMs` to curate a given model include: 

- The correction of a model created with [CarveMe](https://github.com/cdanielmachado/carveme) v1.5.1 or v1.5.2 (for example moving all relevant information from the notes to the annotation field or automatically annotating the GeneProduct section of the model with the respective NCBI gene/protein identifiers from the GeneProduct identifiers)
- The addition of [KEGG](https://www.genome.jp/kegg/kegg1.html) Pathways as Groups (using the [libSBML](https://synonym.caltech.edu/software/libsbml/5.18.0/docs/formatted/python-api/classlibsbml_1_1_groups_model_plugin.html) Groups Plugin)
- Updating the SBO-Term annotations based on [SBOannotator](https://github.com/draeger-lab/SBOannotator)


## Installation
The toolbox ``refineGEMs``can be installed via pip or via Docker.

### ![pypi](https://skillicons.dev/icons?i=py) Via pip 

You can install `refineGEMs` via pip:

```bash
pip install refineGEMs

```

or to a local conda environment where `refineGEMs` is distributed via this GitHub repository and all dependencies are denoted in the `pyproject.toml` file:

```bash
# clone or pull the latest source code
git clone https://github.com/draeger-lab/refinegems.git
cd refinegems

conda create -n <EnvName> python=3.10 (at least but < 3.13)

conda activate <EnvName>

# check that pip comes from <EnvName>
which pip

pip install .

```

Optional features require additional packages that are not needed for the base installation:

```bash
# ChEBI lookups
pip install "refineGEMs[chebi]"

# SBO label lookup via OLS
pip install "refineGEMs[ols]"

# SBO annotation
pip install "refineGEMs[sbo]"

# install all optional dependencies
pip install "refineGEMs[optional]"
```

> [!CAUTION]
> Some connected tools are optional and currently need to be installed directly from GitHub before using the
> corresponding refineGEMs workflow step. If they are missing, refineGEMs reports the missing dependency and skips
> the affected optional step where possible.
>
> ```bash
> # For MCC
> pip install "masschargecuration@git+https://github.com/Biomathsys/MassChargeCuration"
>
> # For BOFdat, our fork with hot fix(es):
> pip install "bofdat@git+https://github.com/draeger-lab/BOFdat"
>
> # ModelPolisher client:
> pip install "model-polisher@git+https://github.com/draeger-lab/MPClient"
>
> ```

### ![docker](https://skillicons.dev/icons?i=docker) Via Docker

``refineGEMs`` can also be used via Docker. 
You can pull the latest image from (a) Docker Hub or (b) build it locally.

#### (a) Image from Docker Hub

To pull the image from Docker Hub, simply use:

```bash
   docker pull biodatalab/refinegems:<tag>
```

#### (b) Local build

To build the Docker image locally, firstly clone the repository:

```bash
   git clone "https://github.com/draeger-lab/refinegems.git"
```

Then change into the directory and build the image:

```bash
   cd refinegems
   docker build -t refinegems .
```

The default image installs the runtime optional dependency group from
`pyproject.toml`, but excludes the documentation dependencies. Optional
connected tools that are currently installed directly from GitHub are included
by default and can be disabled for a smaller image:

```bash
   # build without the optional connected GitHub tools
   docker build \
      --build-arg INSTALL_EXTERNAL_TOOLS=false \
      -t refinegems:runtime .
```

The full default can also be made explicit:

```bash
   docker build \
      --build-arg INSTALL_EXTERNAL_TOOLS=true \
      -t refinegems:full .
```

#### How to use

> [!NOTE]
> To provide the input files and retrieve the output files mount one folder as workspace folder to the Docker image with `-v`.

The default command executed by the image is ``refinegems -h`` and provides the help information for the CLI of 
``refineGEMs``.

```bash
   docker run refinegems -h
```

To use the image interactively and open a bash shell, run the following command:

```bash
   docker run -it --entrypoint bash refinegems
```

To use the image for specific commands, you can simply use every of the CLI commands as entrypoint. 
For example, to curate a (draft) model, run:

```bash
   docker run --name <container_name> -v <user_folder>:/rg_cont refinegems analyse stats ./path/to/model.xml
```

## Contributing

Contributions are welcome from users, developers, model curators, and
documentation writers. Please read the
[contributing guide](.github/CONTRIBUTING.md) before opening larger changes.
It describes the recommended development workflow, coding and documentation
standards, media database notes, review process, and pull request checklist.

GitHub issue forms are available for
[bug reports](https://github.com/draeger-lab/refinegems/issues/new?template=bug_report.yml)
and
[feature requests](https://github.com/draeger-lab/refinegems/issues/new?template=feature_request.yml).
Pull requests should target the `dev` branch and use the repository
[pull request template](.github/pull_request_template.md). Please also follow
the project [code of conduct](.github/CODE_OF_CONDUCT.md).

## Licence

The refineGEMs source code is distributed under the MIT licence. Bundled
third-party data, database identifiers, adapted code, and connected external
tools remain under their own licences or terms; see
[THIRD_PARTY_LICENSES.md](THIRD_PARTY_LICENSES.md) for details.

### Logo licence and brand usage

The refineGEMs logos are licensed separately from the source code under the
[Creative Commons Attribution 4.0 International Licence (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/).
The asset-side notice is stored at
[docs/source/images/logos/LOGO_LICENSE.md](docs/source/images/logos/LOGO_LICENSE.md).

For colours, minimum size, clear space, and acceptable modifications, see the
[brand usage guide](docs/source/brand.rst).

### Documentation graphics licence

Project-created documentation graphics are licensed separately from the source
code under the
[Creative Commons Attribution 4.0 International Licence (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/).
The asset-side notice is stored at
[docs/source/images/GRAPHICS_LICENSE.md](docs/source/images/GRAPHICS_LICENSE.md).
Third-party graphics are excluded unless explicitly listed there or accompanied
by a compatible notice.


## How to cite
When using `refineGEMs`, please cite the latest publication:

Famke Bäuerle, Gwendolyn O. Döbel, Laura Camus, Simon Heilbronner, and Andreas Dräger. 
Genome-scale metabolic models consistently predict in vitro characteristics of Corynebacterium
striatum. Front. Bioinform., oct 2023. [doi:10.3389/fbinf.2023.1214074](https://doi.org/10.3389/fbinf.2023.1214074).

## Repositories using refineGEMs
- [C_striatum_GEMs](https://github.com/draeger-lab/C_striatum_GEMs)
- draeger-lab/Cacnes - `private`
- draeger-lab/Cgranulosum - `private`
- draeger-lab/Koxytoca - `private`
- draeger-lab/Mfortuitum - `private`
- draeger-lab/Scohnii - `private`
- draeger-lab/Shaemolyticus - `private`
- draeger-lab/Ssanguinis - `private`
