# Cobrapy

> Constraints-Based Reconstruction and Analysis for Python. Used for modeling large-scale metabolic networks in microorganisms.

- Skill: `tondevrel/cobrapy` (Agent Skill)
- Install (CLI): `npx skillmds add tondevrel/cobrapy`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tondevrel/cobrapy/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: LGPL-2.1
- Author: tondevrel (https://skillmd.com/u/tondevrel)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/tondevrel/cobrapy

---


# COBRApy - Metabolic Modeling

Models the "metabolism" of a cell as a linear optimization problem. Used to predict bacterial growth under different conditions or design GMO strains.

## When to Use

- Predicting microbial growth rates under different nutrient conditions.
- Designing metabolic engineering strategies (knockouts, additions).
- Understanding metabolic flux distributions.
- Comparing metabolic capabilities across organisms.
- Identifying essential genes and reactions.

## Core Principles

### Flux Balance Analysis (FBA)

Optimizes metabolic fluxes to maximize biomass production (or other objectives) subject to stoichiometric constraints.

### Gene-Protein-Reaction (GPR)

Genes encode proteins (enzymes) that catalyze reactions. Knockouts affect reaction availability.

### Constraints

Reaction bounds (lower/upper limits) represent enzyme capacity or nutrient availability.

## Quick Reference

### Standard Imports

```python
import cobra
from cobra.io import load_model, save_model
```

### Basic Patterns

```python
# 1. Load model (e.g., E. coli)
model = cobra.io.load_model("iJO1366")
# Or: model = cobra.io.read_sbml_model("model.xml")

# 2. Run Flux Balance Analysis (FBA)
solution = model.optimize()
print(f"Growth rate: {solution.objective_value:.4f}")
print(f"Status: {solution.status}")

# 3. Knockout simulation (Gene essentiality)
with model:
    model.genes.get_by_id("b0002").knock_out()
    print(f"Growth after knockout: {model.optimize().objective_value:.4f}")

# 4. Change medium (nutrient availability)
model.medium = {
    'EX_glc__D_e': 10.0,  # Glucose uptake
    'EX_o2_e': 1000.0     # Oxygen
}
solution = model.optimize()
```

## Critical Rules

### ✅ DO

- **Check solution status** - Ensure status is 'optimal' before using results.
- **Use context managers** - Wrap modifications in `with model:` to avoid permanent changes.
- **Set appropriate bounds** - Reaction bounds should reflect biological reality.
- **Validate model** - Use `model.validate()` to check for common issues.

### ❌ DON'T

- **Don't ignore infeasible solutions** - If optimization fails, check constraints and bounds.
- **Don't modify model in place** - Use context managers or copy the model first.
- **Don't assume all reactions are active** - Many reactions have zero flux in optimal solution.

## Advanced Patterns

### Flux Variability Analysis (FVA)

```python
from cobra.flux_analysis import flux_variability_analysis

# Find range of possible fluxes for each reaction
fva_result = flux_variability_analysis(model, model.reactions)
```

### Gene Essentiality Analysis

```python
# Test which genes are essential for growth
from cobra.flux_analysis import single_gene_deletion

deletion_results = single_gene_deletion(model)
essential_genes = deletion_results[deletion_results['growth'] < 0.01]
```

### Adding Custom Reactions

```python
# Add a new reaction to the model
new_reaction = cobra.Reaction("NEW_RXN")
new_reaction.add_metabolites({
    model.metabolites.get_by_id("glc__D_c"): -1,
    model.metabolites.get_by_id("atp_c"): -1,
    model.metabolites.get_by_id("adp_c"): 1,
})
new_reaction.lower_bound = 0
new_reaction.upper_bound = 1000
model.add_reactions([new_reaction])
```

COBRApy transforms metabolic networks into computable models, enabling researchers to predict and engineer cellular behavior at the systems level.

