CHOmpact is a reduced genome-scale metabolic model of Chinese Hamster Ovary (CHO) cells, published by Jiménez del Val et al. (2023) in Biotechnology and Bioengineering. The model describes central carbon metabolism, oxidative phosphorylation, amino acid handling, and the full biosynthetic route for a recombinant IgG — in 101 metabolites and 144 reactions.
The authors released the model as supplementary Excel tables. This repository reconstructs CHOmpact as a proper COBRApy JSON model that can be loaded, constrained, and solved like any other genome-scale model, with no manual preprocessing.
Jiménez del Val, I., Kyriakopoulos, S., Woodley, J. M., & Kontoravdi, C. (2023). CHOmpact: A reduced metabolic model of Chinese hamster ovary cells with product quality outputs. Biotechnol. Bioeng., 120, 2479–2493. DOI: 10.1002/bit.28459
The supplementary data of CHOmpact contain everything needed to rebuild the model — reaction list (ST1), stoichiometric matrix (ST2), biomass composition (ST3), IgG composition (ST4), and experimental flux data (ST6) — but the published format is an Excel workbook, not a machine-readable model file. Without reconstruction:
- The model cannot be loaded into COBRApy, MATLAB COBRA, or any standard FBA toolbox
- Exchange constraints cannot be applied programmatically
- Integration with genome-scale models (iCHOv1, iCHO2048s) requires manual, error-prone transcription
This repository automates the full reconstruction pipeline and delivers a validated, COBRApy-ready JSON that passes 57 independent tests against the supplementary and article data.
| Property | Value |
|---|---|
| Metabolites | 101 |
| Reactions | 144 (F1–F144) |
| Objective | F142 (biomass export) |
| Product reaction | F143 (IgG export) |
| Energy currency | m26_ATP_Energy (single pool, no explicit H₂O/ADP/Pᵢ/H) |
| P/O ratios | F18: 1.5 ATP/FADH₂ · F19: 2.5 ATP/NADH_mit |
| Amino acids tracked | 19 (Ala, Arg, Asn, Asp, Gln, Glu, Gly, His, Ile, Leu, Lys, Met, Phe, Pro, Ser, Thr, Trp, Tyr, Val) |
CHOmpact uses a mixed sign convention that differs from the COBRApy standard for two exchanges:
| Reaction | Metabolite | Positive flux means |
|---|---|---|
| F105 | Glucose | Uptake (Glc coeff = +1) |
| F107 | Lactate | Secretion (Lac coeff = −1) |
| F108 | NH₄⁺ | Secretion (NH₄ coeff = −1) |
| F114 | Glutamine | Secretion (Gln coeff = −1) |
| F115 | Glutamate | Uptake (Glu coeff = +1) |
F105 and F115 are inverted relative to the COBRApy convention (negative = uptake). Keep this in mind when setting exchange bounds.
pip install cobra openpyxl pytestgit clone https://github.com/ebalderasr/CHOmpact-Unchained.git
cd CHOmpact-UnchainedCHOmpact.json is already included in the repository. If you want to rebuild it from scratch — for example after modifying the reconstruction script — you will need the original supplementary Excel file (not included, copyrighted publisher content). Download it from the journal as supplementary material S2 (DOI: 10.1002/bit.28459), place it in the repo root with its original filename, and run:
python build_chompact_model.py
# → overwrites CHOmpact.json in the repo rootThe script reads ST1 (reactions), ST2 (stoichiometric matrix), ST3 (biomass composition), and ST4 (IgG composition) and writes a COBRApy-compatible JSON.
pytest tests/ -vExpected output: 57 passed. The suite validates model structure, stoichiometric coefficients, unconstrained FBA behaviour, all 15 experimental conditions from ST6, metabolic ratios, and IgG production logic.
tests/test_chompact.py::TestModelStructure::test_metabolite_count PASSED
tests/test_chompact.py::TestModelStructure::test_reaction_count PASSED
...
tests/test_chompact.py::TestProductFormation::test_nucleotide_sugar_synthesis_for_glycosylation PASSED
57 passed in 2.7s
import cobra
model = cobra.io.load_json_model("CHOmpact.json")
print(len(model.metabolites), "metabolites") # 101
print(len(model.reactions), "reactions") # 144
sol = model.optimize()
print(f"Biomass flux: {sol.fluxes['F142']:.4f} h⁻¹")import cobra
model = cobra.io.load_json_model("CHOmpact.json")
# Feed C — early exponential phase
# Units: nmol / 10⁶ cells / h (F142 in h⁻¹; F143 in mg / 10⁶ cells / h)
with model:
model.reactions.get_by_id("F105").bounds = (85.80, 85.80) # glucose uptake
model.reactions.get_by_id("F107").bounds = (99.50, 99.50) # lactate secretion
model.reactions.get_by_id("F108").bounds = (16.87, 16.87) # NH₄⁺ secretion
model.reactions.get_by_id("F114").bounds = ( 0.89, 0.89) # Gln (slight secretion)
model.reactions.get_by_id("F115").bounds = ( 1.73, 1.73) # glutamate uptake
model.reactions.get_by_id("F142").bounds = ( 0.0307, 0.0307) # biomass
model.reactions.get_by_id("F143").bounds = (8.11e-4, 8.11e-4) # IgG export
sol = model.optimize()
print(f"Status: {sol.status}")
print(f"LDH (F25): {sol.fluxes['F25']:.2f}") # Warburg flux
print(f"CS (F9): {sol.fluxes['F9']:.2f}") # TCA entryCHOmpact-Unchained/
├── CHOmpact.json ← COBRApy-ready model (101 mets, 144 rxns)
├── build_chompact_model.py ← reconstruction script (reads Excel ST1–ST4)
└── tests/
├── __init__.py
└── test_chompact.py ← 57 pytest tests against article and supp. data
The supplementary Excel and PDF files are excluded from version control (copyrighted publisher content).
57 tests across six categories, all passing:
| Category | Tests | What is checked |
|---|---|---|
| Model structure | 10 | Metabolite/reaction counts, objective, reversibility bounds, exchange signs |
| Stoichiometry | 14 | F90 (biomass), F102 (IgG), F18/F19 (P/O ratios), F1 (glycolysis) coefficients against ST2–ST4 |
| Unconstrained FBA | 7 | Feasibility, positive biomass, active glycolysis/TCA/OXPHOS, energy balance |
| ST6 feasibility | 15 | All 15 experimental conditions (Feed C/U/U40 × 5 timepoints) are feasible |
| Metabolic ratios | 7 | Warburg effect, late-culture lactate switch, glucose trend, glycolytic consistency |
| Product formation | 4 | IgG requires AAs, IgG export requires synthesis, glycosylation pathway active |
pytest tests/ -vThe ST6 feasibility tests confirm that all 15 experimental conditions reported by Jiménez del Val et al. are stoichiometrically consistent with the reconstructed model. Notably, the negative F107 values in late culture (lactate consumption instead of secretion) are correctly handled — this is the Warburg-to-oxidative metabolic switch observed experimentally in fed-batch CHO cultures.
The most non-obvious aspect of the reconstruction is the stoichiometric matrix in ST2. All fi_* symbolic entries (referencing compositions defined elsewhere) are substrate coefficients and must be negated when building the COBRApy stoichiometry. Only the literal numeric values for Biomass (+1) and IgG (+1) remain positive (they are products). This is verified by comparing the F90 reaction string in ST1 (all amino acids appear before the --> arrow, confirming they are substrates) against the positive values stored in the S matrix.
Emiliano Balderas Ramírez Bioengineer · PhD Candidate in Biochemical Sciences Instituto de Biotecnología (IBt), UNAM
cho-secretory-energy-model — energy cost analysis of secretory protein production in CHO cells using iCHOv1, iCHO2048s, and CHOmpact.
Clonalyzer-2 — browser-based kinetics analysis for CHO fed-batch cultures.