| name | bio-systems-biology-flux-balance-analysis |
| description | Predict metabolic fluxes and growth rates using flux balance analysis (FBA/FVA) with COBRApy on genome-scale models. Use when: user needs FBA, wants to predict growth rate, simulate metabolic flux distributions, run flux variability analysis, or optimize metabolic objective functions. Triggers: FBA, flux balance analysis, FVA, growth rate prediction, metabolic flux, COBRApy, optimize biomass, SBML model simulation, knockout simulation, metabolic phenotype prediction, constraint-based modeling. |
| tool_type | python |
| primary_tool | cobrapy |
| upstream | {"repo":"https://github.com/GPTomics/bioSkills","license":"MIT","original_author":"GPTomics"} |
Version Compatibility
Reference examples tested with: COBRApy 0.29+
Before using code patterns, verify installed versions match. If versions differ:
- Python:
pip show <package> then help(module.function) to check signatures
If code throws ImportError, AttributeError, or TypeError, introspect the installed
package and adapt the example to match the actual API rather than retrying.
Flux Balance Analysis
"Predict growth rate and metabolic fluxes for my organism" → Solve a linear program over a genome-scale metabolic model to find the optimal flux distribution that maximizes biomass (or a custom objective), and assess flux ranges with FVA.
- Python:
model.optimize(), cobra.flux_analysis.flux_variability_analysis() (COBRApy)
Load Models
import cobra
model = cobra.io.load_model('textbook')
model = cobra.io.load_model('iJO1366')
model = cobra.io.read_sbml_model('model.xml')
model = cobra.io.load_json_model('model.json')
Basic FBA
Goal: Predict optimal metabolic flux distributions and growth rates for an organism under defined conditions.
Approach: Load a genome-scale metabolic model, solve the linear program to maximize the biomass objective function, then inspect flux values and solver status to interpret metabolic phenotype.
import cobra
model = cobra.io.load_model('textbook')
solution = model.optimize()
print(f'Growth rate: {solution.objective_value:.4f} h^-1')
print(f'Status: {solution.status}')
for rxn in model.reactions[:5]:
print(f'{rxn.id}: {solution.fluxes[rxn.id]:.4f}')
Set Media Conditions
def set_minimal_media(model, carbon_source='EX_glc__D_e', carbon_uptake=10):
'''Configure minimal media conditions
Args:
carbon_source: Exchange reaction ID for carbon source
carbon_uptake: Maximum uptake rate (mmol/gDW/h)
Typical glucose uptake: 10-20 mmol/gDW/h
'''
for rxn in model.exchanges:
rxn.lower_bound = 0
essential = ['EX_o2_e', 'EX_h2o_e', 'EX_h_e', 'EX_nh4_e',
'EX_pi_e', 'EX_so4_e', 'EX_k_e', 'EX_mg2_e']
for ex_id in essential:
if ex_id in model.reactions:
model.reactions.get_by_id(ex_id).lower_bound = -1000
if carbon_source in model.reactions:
model.reactions.get_by_id(carbon_source).lower_bound = -carbon_uptake
return model
carbon_sources = ['EX_glc__D_e', 'EX_ac_e', 'EX_succ_e']
for cs in carbon_sources:
with model:
set_minimal_media(model, carbon_source=cs)
sol = model.optimize()
print(f'{cs}: Growth = {sol.objective_value:.4f}')
Flux Variability Analysis (FVA)
from cobra.flux_analysis import flux_variability_analysis
fva = flux_variability_analysis(model)
fva = flux_variability_analysis(model, fraction_of_optimum=0.9)
rxns_of_interest = ['PFK', 'PGI', 'GAPD']
fva = flux_variability_analysis(model, reaction_list=rxns_of_interest)
fva['essential'] = (fva['minimum'] > 0) | (fva['maximum'] < 0)
fva['flexible'] = fva['maximum'] - fva['minimum'] > 0.01
print(fva[['minimum', 'maximum', 'essential', 'flexible']])
Production Envelope
from cobra.flux_analysis import production_envelope
prod_env = production_envelope(
model,
reactions=['EX_ac_e'],
objective='Biomass_Ecoli_core',
points=20
)
print(prod_env)
Phenotype Phase Plane
from cobra.flux_analysis import phenotype_phase_plane
ppp = phenotype_phase_plane(
model,
variables=['EX_glc__D_e', 'EX_o2_e'],
points=10
)
Parsimonious FBA (pFBA)
from cobra.flux_analysis import pfba
pfba_solution = pfba(model)
fba_total = sum(abs(model.optimize().fluxes))
pfba_total = sum(abs(pfba_solution.fluxes))
print(f'FBA total flux: {fba_total:.1f}')
print(f'pFBA total flux: {pfba_total:.1f}')
Loopless FBA
from cobra.flux_analysis import loopless_solution
solution = loopless_solution(model)
Related Skills
- systems-biology/gene-essentiality - In silico gene knockouts
- systems-biology/context-specific-models - Tissue-specific FBA
- metabolomics/pathway-mapping - Integrate metabolomics data