Skip to main content

Computational strain design using enzyme-constrained GEMs and ETFL models

Project description

strainOptimizer

DOI

Repo for strain design based on ETFL/ecGEM models.

Overview

strainOptimizer is a Python package for strain design using enzyme-constrained genome-scale metabolic models (ecGEMs) and ETFL models. It implements advanced strain design algorithms such as ecFactory and ecFSEOF, which leverage the additional constraints provided by enzyme capacity to identify more realistic genetic modifications for enhanced production of target metabolites.

Installation

  1. Clone the repo
git clone https://github.com/hongzhonglu/strainOptimizer.git
  1. Set up the environment
conda create -n strainOpitimizer python=3.10
conda activate strainOpitimizer
conda env update --file environment.yml
pip install -e .
  1. Solvers

We recommend using commercial solvers such as CPLEX or Gurobi. Please install one of them and set up the corresponding Python API.

  • GUROBI (version 10.0)

We recommend obtaining a valid Gurobi license. Otherwise, adjust the code to use a different optimizer. To retrieve your license::

grbgetkey <YOUR-LICENSE-KEY>

For details, see the Gurobi licensing guide: https://www.gurobi.com/documentation/

  • CPLEX After installing CPLEX into the system, set the CPLEX Python API in your environment :
python [cplex_path]/python/setup.py install

Usage guide

  1. ecFactory design example
  2. ecFSEOF design example

More examples can be found in the examples folder.

Example script

Here is an example script for 2-PE strain design:

from strainOptimizer import strainOptimizer_engine,WorkflowParameters

# Model parameters - model path, type, solver, growth reaction
model_params = {
    'model_path': 'example/models\yeast\ecYeastGEM_batch.xml',
    'model_type': 'ecGEM',
    'solver': 'optlang-gurobi',
    'growth_id': 'r_2111',
}
# Strain parameters - target product and growth conditions
strain_params = {
    'target_id': 'r_1589',
    'product_name': '2-phenylethanol',
    'c_source': 'r_1714_REV',  # glucose exchange reaction
    'c_uptake': 5,  # glucose uptake rate (mmol/gDW/h)
}

# Algorithm control parameters - workflow and output settings
algorithm_params = {
    'design_algorithm': 'ecFactory',
    'simulation_method': 'ppfba',
    'experimental_yield': None, # if without experimental yield data, use the 1/2 
    'remove_essential': True,
    'output_directory': './results',
    'steps':123,
    'action_thresholds':[0.05,0.3,1.1]
    # 'save_results': False,
    # 'only_final_result': True,
    # Note: ecFactory-specific parameters like steps, action_thresholds, etc.
    # would need to be added to AlgorithmControl if they're used
}

# Create WorkflowParameters using the three-level structure
params = WorkflowParameters(
    model=model_params,
    strain=strain_params,
    algorithm=algorithm_params
)

# Create workflow engine using the new framework
engine = strainOptimizer_engine(params)
# Load model
engine.load_model()
# Run the design workflow
final_result=engine.run_design()
# More detailed results can be accessed via engine.all_results. 
# And results at each level have been saved in output_directory.

Contribution

  • For contributors: Fork it to your Github account, and create a new branch from dev.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

strainoptimizer-0.1.0.tar.gz (153.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

strainoptimizer-0.1.0-py3-none-any.whl (181.8 kB view details)

Uploaded Python 3

File details

Details for the file strainoptimizer-0.1.0.tar.gz.

File metadata

  • Download URL: strainoptimizer-0.1.0.tar.gz
  • Upload date:
  • Size: 153.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for strainoptimizer-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cd1bd75be3e9b9cb9ff7436c03e389c5f36d9c79dc7d416a4f28428a188bbc15
MD5 d4d13efb4864ca566c106797d6cbf366
BLAKE2b-256 f6552fecd34df3cbbb2e7d07058803003e551b3dec2c2ea29c4c534668c125f5

See more details on using hashes here.

File details

Details for the file strainoptimizer-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for strainoptimizer-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6215609993534003d9266d291ef8572a20318d9706b3804961833ff7c3601c96
MD5 ea80a7b6ea1c33ddf8dae2f817410472
BLAKE2b-256 61fe5b7560886d950d3d721d9dbf8d6ee9ff73ec38282e24e92bc796a6f625f0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page