| name | bio-systems-biology-flux-balance-analysis |
| description | Perform flux balance analysis (FBA) and flux variability analysis (FVA) on genome-scale metabolic models using COBRApy. Predict growth rates, metabolic fluxes, and optimal resource utilization. Use when predicting metabolic phenotypes or optimizing flux distributions. |
| tool_type | python |
| primary_tool | cobrapy |
Flux Balance Analysis
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
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