Skills Agentes

Cobrapy

Modelado metabólico basado en restricciones (COBRA): FBA, FVA, knockouts de genes, muestreo de flujos y modelos SBML, para análisis de biología de sistemas e ingeniería metabólica.

Solicitaread write edit bash
Estrellas
34.8k

en todo el repo

Actividad
57

0–100, la ruta de este skill

Actualizado
el mes pasado

último commit aquí

Commits
2

últimos 90 días

Contexto
3.6k tok

39 tok en reposo

Paquete
3 archivos

53 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add K-Dense-AI/scientific-agent-skills --skill cobrapy --agent claude-code

Se instala solo en este repositorio.

Qué hace

  • Carga, construye y exporta modelos metabólicos a escala genómica en SBML, JSON o YAML
  • Ejecuta FBA, pFBA, FVA y muestreo de flujos sobre modelos COBRA
  • Realiza cribados de knockout de genes o reacciones y calcula envolventes de producción
  • Diseña y optimiza medios de cultivo y restricciones de intercambio
  • Ayuda a rellenar huecos (gapfilling) en modelos infactibles y a validar su consistencia

Úsalo cuando

  • Se cargan, construyen o exportan modelos metabólicos a escala genómica
  • Se ejecuta FBA, pFBA, FVA o muestreo de flujos sobre un modelo COBRA
  • Se hacen cribados de knockout de genes/reacciones o análisis de envolvente de producción
  • Se diseña o optimiza el medio de crecimiento y las restricciones de intercambio de un modelo

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • Carga el modelo iJO1366 y calcula el crecimiento con FBA
    • Haz un cribado de knockout de genes esenciales sobre este modelo
    • Calcula el medio mínimo para este modelo COBRA
    • Ejecuta FVA con loopless=True sobre estas reacciones

    SKILL.md

    En inglés

    COBRApy - Constraint-Based Reconstruction and Analysis

    Overview

    COBRApy is a Python library for constraint-based reconstruction and analysis (COBRA) of metabolic models, essential for systems biology research. Work with genome-scale metabolic models, perform computational simulations of cellular metabolism, conduct metabolic engineering analyses, and predict phenotypic behaviors.

    Version note: Examples target cobra 0.31.1 on PyPI (import cobra). Docs: cobrapy.readthedocs.io. Repo: opencobra/cobrapy.

    When to Use This Skill

    Use this skill when:

    • Loading, building, or exporting genome-scale metabolic models (SBML, JSON, YAML)
    • Running FBA, pFBA, FVA, or flux sampling on COBRA models
    • Performing gene or reaction knockout screens and production envelope analysis
    • Designing or optimizing growth media and exchange constraints
    • Gap-filling infeasible models or validating model consistency

    Installation

    uv pip install "cobra==0.31.1"
    

    MATLAB model I/O (optional):

    uv pip install "cobra[array]==0.31.1"
    

    COBRApy uses optlang for solvers. GLPK installs automatically via swiglpk. For large MILPs/QPs, cobra 0.29+ adds a hybrid solver (HIGHS/OSQP); model.solver = "osqp" now routes through hybrid and may error on plain LPs in a future release—prefer model.solver = "hybrid" when available.

    Core Capabilities

    COBRApy provides comprehensive tools organized into several key areas:

    1. Model Management

    Load existing models from repositories or files:

    from cobra.io import load_model
    
    # Bundled locally (no network): textbook, iJO1366, salmonella
    model = load_model("textbook")      # alias for e_coli_core (95 reactions)
    model = load_model("e_coli_core")   # same core E. coli model
    model = load_model("iJO1366")       # genome-scale E. coli (bundled)
    model = load_model("salmonella")    # Salmonella iYS1720 (bundled)
    
    # Remote (BiGG / BioModels; requires network, cached after first fetch)
    model = load_model("iML1515")       # E. coli genome-scale on BiGG
    
    # Load from files
    from cobra.io import read_sbml_model, load_json_model, load_yaml_model
    model = read_sbml_model("path/to/model.xml")
    model = load_json_model("path/to/model.json")
    model = load_yaml_model("path/to/model.yml")
    

    Save models in various formats:

    from cobra.io import write_sbml_model, save_json_model, save_yaml_model
    write_sbml_model(model, "output.xml")  # Preferred format
    save_json_model(model, "output.json")  # For Escher compatibility
    save_yaml_model(model, "output.yml")   # Human-readable
    

    2. Model Structure and Components

    Access and inspect model components:

    # Access components
    model.reactions      # DictList of all reactions
    model.metabolites    # DictList of all metabolites
    model.genes          # DictList of all genes
    
    # Get specific items by ID or index
    reaction = model.reactions.get_by_id("PFK")
    metabolite = model.metabolites[0]
    
    # Inspect properties
    print(reaction.reaction)        # Stoichiometric equation
    print(reaction.bounds)          # Flux constraints
    print(reaction.gene_reaction_rule)  # GPR logic
    print(metabolite.formula)       # Chemical formula
    print(metabolite.compartment)   # Cellular location
    

    3. Flux Balance Analysis (FBA)

    Perform standard FBA simulation:

    # Basic optimization
    solution = model.optimize()
    print(f"Objective value: {solution.objective_value}")
    print(f"Status: {solution.status}")
    
    # Access fluxes
    print(solution.fluxes["PFK"])
    print(solution.fluxes.head())
    
    # Fast optimization (objective value only)
    objective_value = model.slim_optimize()
    
    # Change objective
    model.objective = "ATPM"
    solution = model.optimize()
    

    Parsimonious FBA (minimize total flux):

    from cobra.flux_analysis import pfba
    solution = pfba(model)
    

    Geometric FBA (find central solution):

    from cobra.flux_analysis import geometric_fba
    solution = geometric_fba(model)
    

    4. Flux Variability Analysis (FVA)

    Determine flux ranges for all reactions:

    from cobra.flux_analysis import flux_variability_analysis
    
    # Standard FVA
    fva_result = flux_variability_analysis(model)
    
    # FVA at 90% optimality
    fva_result = flux_variability_analysis(model, fraction_of_optimum=0.9)
    
    # Loopless FVA (eliminates thermodynamically infeasible loops)
    fva_result = flux_variability_analysis(model, loopless=True)
    
    # FVA for specific reactions
    fva_result = flux_variability_analysis(
        model,
        reaction_list=["PFK", "FBA", "PGI"]
    )
    

    5. Gene and Reaction Deletion Studies

    Perform knockout analyses:

    from cobra.flux_analysis import (
        single_gene_deletion,
        single_reaction_deletion,
        double_gene_deletion,
        double_reaction_deletion
    )
    
    # Single deletions
    gene_results = single_gene_deletion(model)
    reaction_results = single_reaction_deletion(model)
    
    # Double deletions (uses multiprocessing)
    double_gene_results = double_gene_deletion(
        model,
        processes=4  # Number of CPU cores
    )
    
    # Manual knockout using context manager
    with model:
        model.genes.get_by_id("b0008").knock_out()
        solution = model.optimize()
        print(f"Growth after knockout: {solution.objective_value}")
    # Model automatically reverts after context exit
    

    6. Growth Media and Minimal Media

    Manage growth medium:

    # View current medium
    print(model.medium)
    
    # Modify medium (must reassign entire dict)
    medium = model.medium
    medium["EX_glc__D_e"] = 10.0  # Set glucose uptake
    medium["EX_o2_e"] = 0.0       # Anaerobic conditions
    model.medium = medium
    
    # Calculate minimal media
    from cobra.medium import minimal_medium
    
    # Minimize total import flux
    min_medium = minimal_medium(model, minimize_components=False)
    
    # Minimize number of components (uses MILP, slower)
    min_medium = minimal_medium(
        model,
        minimize_components=True,
        open_exchanges=True
    )
    

    7. Flux Sampling

    Sample the feasible flux space:

    from cobra.sampling import sample
    
    # Sample using OptGP (default, supports parallel processing)
    samples = sample(model, n=1000, method="optgp", processes=4)
    
    # Sample using ACHR
    samples = sample(model, n=1000, method="achr")
    
    # Validate samples
    from cobra.sampling import OptGPSampler
    sampler = OptGPSampler(model, processes=4)
    sampler.sample(1000)
    validation = sampler.validate(sampler.samples)
    print(validation.value_counts())  # Should be all 'v' for valid
    

    8. Production Envelopes

    Calculate phenotype phase planes:

    from cobra.flux_analysis import production_envelope
    
    # Standard production envelope
    envelope = production_envelope(
        model,
        reactions=["EX_glc__D_e", "EX_o2_e"],
        objective="EX_ac_e"  # Acetate production
    )
    
    # With carbon yield
    envelope = production_envelope(
        model,
        reactions=["EX_glc__D_e", "EX_o2_e"],
        carbon_sources="EX_glc__D_e"
    )
    
    # Visualize (use matplotlib or pandas plotting)
    import matplotlib.pyplot as plt
    envelope.plot(x="EX_glc__D_e", y="EX_o2_e", kind="scatter")
    plt.show()
    

    9. Gapfilling

    Add reactions to make models feasible:

    from cobra.flux_analysis import gapfill
    
    # Provide a universal reaction database (SBML/JSON); not bundled in cobra 0.31+
    from cobra.io import read_sbml_model
    universal = read_sbml_model("path/to/universal_reactions.xml")
    
    # Perform gapfilling
    with model:
        # Remove reactions to create gaps for demonstration
        model.remove_reactions([model.reactions.PGI])
    
        # Find reactions needed
        solution = gapfill(model, universal)
        print(f"Reactions to add: {solution}")
    

    10. Model Building

    Build models from scratch:

    from cobra import Model, Reaction, Metabolite
    
    # Create model
    model = Model("my_model")
    
    # Create metabolites
    atp_c = Metabolite("atp_c", formula="C10H12N5O13P3",
                       name="ATP", compartment="c")
    adp_c = Metabolite("adp_c", formula="C10H12N5O10P2",
                       name="ADP", compartment="c")
    pi_c = Metabolite("pi_c", formula="HO4P",
                      name="Phosphate", compartment="c")
    
    # Create reaction
    reaction = Reaction("ATPASE")
    reaction.name = "ATP hydrolysis"
    reaction.subsystem = "Energy"
    reaction.lower_bound = 0.0
    reaction.upper_bound = 1000.0
    
    # Add metabolites with stoichiometry
    reaction.add_metabolites({
        atp_c: -1.0,
        adp_c: 1.0,
        pi_c: 1.0
    })
    
    # Add gene-reaction rule
    reaction.gene_reaction_rule = "(gene1 and gene2) or gene3"
    
    # Add to model
    model.add_reactions([reaction])
    
    # Add boundary reactions
    model.add_boundary(atp_c, type="exchange")
    model.add_boundary(adp_c, type="demand")
    
    # Set objective
    model.objective = "ATPASE"
    

    Common Workflows

    Workflow 1: Load Model and Predict Growth

    from cobra.io import load_model
    
    # Load model (textbook = fast tutorial; iJO1366 / iML1515 for genome-scale)
    model = load_model("textbook")
    
    # Run FBA
    solution = model.optimize()
    print(f"Growth rate: {solution.objective_value:.3f} /h")
    
    # Show active pathways
    print(solution.fluxes[solution.fluxes.abs() > 1e-6])
    

    Workflow 2: Gene Knockout Screen

    from cobra.io import load_model
    from cobra.flux_analysis import single_gene_deletion
    
    # Load model
    model = load_model("textbook")
    baseline = model.slim_optimize()
    
    # Perform single gene deletions
    results = single_gene_deletion(model)
    
    # Find essential genes (growth < threshold)
    essential_genes = results[results["growth"] < 0.01]
    print(f"Found {len(essential_genes)} essential genes")
    
    # Find genes with minimal impact
    neutral_genes = results[results["growth"] > 0.9 * baseline]
    

    Workflow 3: Media Optimization

    from cobra.io import load_model
    from cobra.medium import minimal_medium
    
    # Load model
    model = load_model("textbook")
    
    # Calculate minimal medium for 50% of max growth
    target_growth = model.slim_optimize() * 0.5
    min_medium = minimal_medium(
        model,
        target_growth,
        minimize_components=True
    )
    
    print(f"Minimal medium components: {len(min_medium)}")
    print(min_medium)
    

    Workflow 4: Flux Uncertainty Analysis

    from cobra.io import load_model
    from cobra.flux_analysis import flux_variability_analysis
    from cobra.sampling import sample
    
    # Load model
    model = load_model("textbook")
    
    # First check flux ranges at optimality
    fva = flux_variability_analysis(model, fraction_of_optimum=1.0)
    
    # For reactions with large ranges, sample to understand distribution
    samples = sample(model, n=1000)
    
    # Analyze specific reaction
    reaction_id = "PFK"
    import matplotlib.pyplot as plt
    samples[reaction_id].hist(bins=50)
    plt.xlabel(f"Flux through {reaction_id}")
    plt.ylabel("Frequency")
    plt.show()
    

    Workflow 5: Context Manager for Temporary Changes

    Use context managers to make temporary modifications:

    # Model remains unchanged outside context
    with model:
        # Temporarily change objective
        model.objective = "ATPM"
    
        # Temporarily modify bounds
        model.reactions.EX_glc__D_e.lower_bound = -5.0
    
        # Temporarily knock out genes
        model.genes.b0008.knock_out()
    
        # Optimize with changes
        solution = model.optimize()
        print(f"Modified growth: {solution.objective_value}")
    
    # All changes automatically reverted
    solution = model.optimize()
    print(f"Original growth: {solution.objective_value}")
    

    Key Concepts

    DictList Objects

    Models use DictList objects for reactions, metabolites, and genes - behaving like both lists and dictionaries:

    # Access by index
    first_reaction = model.reactions[0]
    
    # Access by ID
    pfk = model.reactions.get_by_id("PFK")
    
    # Query methods
    atp_reactions = model.reactions.query("atp")
    

    Flux Constraints

    Reaction bounds define feasible flux ranges:

    • Irreversible: lower_bound = 0, upper_bound > 0
    • Reversible: lower_bound < 0, upper_bound > 0
    • Set both bounds simultaneously with .bounds to avoid inconsistencies

    Gene-Reaction Rules (GPR)

    Boolean logic linking genes to reactions:

    # AND logic (both required)
    reaction.gene_reaction_rule = "gene1 and gene2"
    
    # OR logic (either sufficient)
    reaction.gene_reaction_rule = "gene1 or gene2"
    
    # Complex logic
    reaction.gene_reaction_rule = "(gene1 and gene2) or (gene3 and gene4)"
    

    Exchange Reactions

    Special reactions representing metabolite import/export:

    • Named with prefix EX_ by convention
    • Positive flux = secretion, negative flux = uptake
    • Managed through model.medium dictionary

    Best Practices

    1. Use context managers for temporary modifications to avoid state management issues
    2. Validate models before analysis using model.slim_optimize() to ensure feasibility
    3. Check solution status after optimization - optimal indicates successful solve
    4. Use loopless FVA when thermodynamic feasibility matters
    5. Set fraction_of_optimum appropriately in FVA to explore suboptimal space
    6. Parallelize computationally expensive operations (sampling, double deletions) — start with small n and processes=1 on genome-scale models
    7. Prefer SBML format for model exchange and long-term storage
    8. Use slim_optimize() when only objective value needed for performance
    9. Validate flux samples to ensure numerical stability
    10. Confirm output paths before writing CSV/PNG files from workflow examples

    Troubleshooting

    Infeasible solutions: Check medium constraints, reaction bounds, and model consistency Slow optimization: Try different solvers (GLPK, CPLEX, Gurobi) via model.solver Unbounded solutions: Verify exchange reactions have appropriate upper bounds Import errors: Ensure correct file format and valid SBML identifiers

    References

    For detailed workflows and API patterns, refer to:

    • references/workflows.md - Comprehensive step-by-step workflow examples
    • references/api_quick_reference.md - Common function signatures and patterns

    Official documentation: https://cobrapy.readthedocs.io/en/latest/

    Reproducido de K-Dense-AI/scientific-agent-skills bajo licencia GPL-2.0 license. Leer esta página en markdown.

    Archivos

    3 archivos en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Antes de instalar

    Requiere Python 3.9+ y `uv pip install cobra`; usa GLPK (swiglpk) como solver por defecto, con CPLEX/Gurobi opcionales, y necesita red solo para cargar modelos remotos de BiGG o BioModels.

    Detalles

    Creador
    K-Dense-AI
    Licencia
    GPL-2.0 license
    Recursos incluidos
    referencias
    Código fuente
    Ver SKILL.md

    Etiquetas

    Más de K-Dense-AI/scientific-agent-skills

    Este repo incluye 163 skills. Si instalas uno, normalmente ya tienes los demás.

    Gestión integral de citas académicas: busca en OpenAlex, PubMed y Google Scholar, extrae metadatos precisos, valida citas y genera entradas BibTeX correctamente formateadas.

    Costo de contexto al activarse
    3.7k tok
    Tamaño del paquete
    21 archivos
    Última actualización
    hace 28 días
    investigacion

    Realiza revisiones bibliográficas sistemáticas y completas usando varias bases académicas (PubMed, arXiv, bioRxiv, Semantic Scholar). Genera markdown y PDF con citas verificadas en varios estilos (APA, Nature, Vancouver).

    Costo de contexto al activarse
    3.2k tok
    Tamaño del paquete
    12 archivos
    Última actualización
    hace 15 días
    investigacion

    Crea decks de diapositivas y presentaciones para charlas de investigación: PowerPoint, presentaciones de conferencia, seminarios, defensas de tesis. Da estructura, plantillas, guía de tiempos y validación visual.

    Costo de contexto al activarse
    5.1k tok
    Tamaño del paquete
    24 archivos
    Última actualización
    hace 15 días
    documentos

    Crea infografías profesionales con Nano Banana Pro AI y refinamiento iterativo inteligente. Usa Gemini 3.6 Flash para revisar la calidad e integra investigación con Perplexity Sonar. Soporta 10 tipos, 8 estilos y paletas para daltonismo.

    Costo de contexto al activarse
    2.7k tok
    Tamaño del paquete
    8 archivos
    Última actualización
    hace 15 días
    diseno ui

    Crea pósteres de investigación profesionales en LaTeX con beamerposter, tikzposter o baposter, para conferencias y comunicación científica: layout, colores, columnas múltiples e integración de figuras.

    Costo de contexto al activarse
    3.9k tok
    Tamaño del paquete
    17 archivos
    Última actualización
    hace 15 días
    documentos

    Crea diagramas científicos de calidad de publicación con la IA Nano Banana 2 y refinamiento iterativo inteligente. Gemini 3.6 Flash revisa la calidad y solo regenera si está por debajo del umbral de tu tipo de documento.

    Costo de contexto al activarse
    4.1k tok
    Tamaño del paquete
    6 archivos
    Última actualización
    hace 15 días
    diseno ui

    Skills relacionados

    Aeon

    34.8k

    Para tareas de machine learning con series temporales: clasificación, regresión, clustering, forecasting, detección de anomalías, segmentación y búsqueda de similitud, con APIs compatibles con scikit-learn.

    Costo de contexto al activarse
    3.1k tok
    Tamaño del paquete
    12 archivos
    Última actualización
    el mes pasado
    datos analitica

    Anndata

    34.8k

    Estructura de datos para matrices anotadas en análisis de célula única. Úsala con archivos .h5ad o el ecosistema scverse; para análisis usa scanpy, para modelos probabilísticos scvi-tools, para escala poblacional cellxgene-census.

    Costo de contexto al activarse
    3k tok
    Tamaño del paquete
    6 archivos
    Última actualización
    el mes pasado
    datos analitica

    Infiere redes de regulación génica (GRN) a partir de datos de expresión génica con algoritmos escalables (GRNBoost2, GENIE3), para transcriptómica bulk o de célula única, con computación distribuida.

    Costo de contexto al activarse
    2.1k tok
    Tamaño del paquete
    5 archivos
    Última actualización
    el mes pasado
    datos analitica