Skip to content

charlesrocabert/gbapy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Growth Balance Analysis for Python


Β  PyPI versionΒ  Β 

Β Β Β Β 


pip install gba 

gbapy is a Python package that provides tools for building and analyzing self-replicating cell (SRC) models based on the growth balance analysis (GBA) mathematical formalism (Dourado et al. 2023).

Features

The module offers two core components:

  • πŸ”§ A builder class, to construct SRC models of any size from first principles,
  • πŸ“ˆ A model class, to manipulate and optimize models once they are built.

Typical workflow

image

from gba import Builder, Model, Protein, Metabolite, Reaction from gba import SpeciesLocation, ReactionType, ReactionDirection builder = Builder(name="toy") ### Add model information (ODS sheet 'Info') builder.add_info(category="General", key="Name", content="toy") builder.add_info(category="General", key="Description", content="Toy model") ### Create and add proteins (one protein per enzyme per reaction) ### - Masses in Da. p1 = Protein(id="p1", mass=1000000.0) p2 = Protein(id="p2", mass=1000000.0) builder.add_proteins([p1, p2]) ### Create and add metabolites: ### - External and internal glucose ### - One generic Protein product ### - Masses in Da. x_G = Metabolite(id="x_G", species_location=SpeciesLocation.EXTERNAL, mass=180.0) G = Metabolite(id="G", species_location=SpeciesLocation.INTERNAL, mass=180.0) Protein = Metabolite(id="Protein", species_location=SpeciesLocation.INTERNAL,mass=180.0) builder.add_metabolites([x_G, G, Protein]) ### Create and add transporter to import glucose: ### - Enzyme is composed of one protein p1 ### - Reaction is irreversible ### - kcat values in 1/h ### - KM values in g/L rxn1 = Reaction(id="rxn1", lb=0.0, ub=1000.0, reaction_type=ReactionType.TRANSPORT, metabolites={"x_G":-1.0, "G": 1.0}, proteins={"p1": 1.0}) rxn1.add_kcat_value(direction=ReactionDirection.FORWARD, kcat_value=45000.0) rxn1.add_km_value(metabolite_id="x_G", km_value=0.00013) rxn1.complete(kcat_value=0.0, km_value=0.0) builder.add_reaction(rxn1) ### Create and add ribosome reaction to produce proteins: ### - Enzyme is composed of one protein p2 ### - Reaction is irreversible ribosome = Reaction(id="Ribosome", lb=0.0, ub=1000.0, reaction_type=ReactionType.METABOLIC, metabolites={"G":-1.0, "Protein": 1.0}, proteins={"p2": 1.0}) ribosome.add_kcat_value(direction=ReactionDirection.FORWARD, kcat_value=45000.0) ribosome.add_km_value(metabolite_id="G", km_value=0.00013) ribosome.complete(kcat_value=0.0, km_value=0.0) builder.add_reaction(ribosome) ### Convert the model to GBA formalism (cf. Dourado et al. 2023) builder.convert(ribosome_mass_kcat=4.55, ribosome_mass_km=8.3) builder.build_GBA_model() ### Set cell's total density (g/L) builder.set_rho(340.0) ### Create external conditions (in g/L) x_G_conc = 1.0 for i in range(25): builder.add_condition(condition_id=str(i+1), metabolites={"x_G": x_G_conc}) x_G_conc *= 2/3 ### Save the model to an ODS file builder.export_to_ods()

image

from gba import read_ods_model ### Load the ODS model model = read_ods_model(name="toy") ### Find a valid initial solution model.find_initial_solution() ### Optimize the model for all conditions model.find_optimum_by_condition() ### Make a plot model.plot(x="x_G", y="mu", title="Growth rate", logx=True) ### Export optimization data in CSV model.export_optimization_data()

image

Reference files

Table of contents

1) Installation

Caution

Module not deployed on PyPI yet

The easiest way to install gbapy is from PyPI:

pip install gba 

Important

gbacpp software is required to run optimization tasks.

1.1) Supported platforms

gbapy has been primilary developed for Unix/Linux and macOS systems.

1.2) Dependencies

β€’ Software

  • gbacpp is required to run optimization tasks.

β€’ Licensed Python modules

β€’ Other Python modules

1.3) Manual installation

If you want to install gbapy manually, download the latest release, and save it to a directory of your choice. Open a terminal and use the cd command to navigate to this directory. Then follow the steps below to compile and build the executables.

sh install.sh 

Tip

You can later uninstall the module using sh uninstall.sh.

2) Tutorials

Tutorials coming soon ...

3) Documentation

Documentation coming soon ...

4) Contributing

If you wish to contribute, do not hesitate to reach the developer.

5) Copyright

Copyright Β© 2024-2025 Charles Rocabert, Furkan Mert.

6) License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.