Skip to main content

lunagen

Simulación de cultivos basada en agentes: configurable, optimizable y con visualización en vivo.

lunagen simula poblaciones de células una por una (metabolismo, crecimiento, división, muerte y producción de uno o varios compuestos) y busca las condiciones de cultivo que maximizan lo que te interese: celulosa bacteriana, etanol, otra biomasa, tiempo de vida, velocidad de reproducción…

El motor no sabe nada de ningún organismo concreto: todo lo específico se declara (variables, respuestas al entorno, productos, qué medir). Incluye un preset de Komagataeibacter xylinus (celulosa bacteriana) y se pueden describir organismos nuevos en unas decenas de líneas.

Instalación

pip install lunagen                 # núcleo (solo requiere numpy)
pip install "lunagen[viz]"          # + ventana en vivo (pygame-ce y scipy)

También se puede instalar desde el archivo .whl:

pip install lunagen-0.1.1-py3-none-any.whl

Inicio rápido

import lunagen as lg

if __name__ == "__main__":        # necesario si usas varios procesos (workers > 1)
    organismo = lg.presets.komagataeibacter_xylinus()
    estudio = lg.Study(organismo, objective="yield[cellulose]", workers=4)
    resultado = estudio.optimize(samples=60, generations=8, population=16, viz=True)
    print(resultado.best_conditions, resultado.best_value)

Imprime en consola todo lo que hace, anima cada simulación en una ventana (viz=True) y escribe evaluations.csv, results.json y best_unity.xml en la carpeta output/.

Qué puedes hacer con pocas líneas

# Otra pregunta con el mismo organismo
lg.Study(org, objective="mean_lifespan_h", space=["temperature_c", "ph"])      # tiempo de vida
lg.Study(org, objective="doubling_time_h", direction="min")                    # reproducción
lg.Study(org, objective={"yield[cellulose]": 1.0, "survival_fraction": 2.0},   # varios objetivos
         constraints=[("final_population", ">=", 100)])                        # y restricciones

# Operar solo con algunas variables
lg.Study(org, space=["temperature_c", "ph"], fixed={"glucose_gl": 30})

# Una métrica propia
@lg.metric("viabilidad", unit="%")
def viabilidad(result, cond, ctx):
    return 100 * result.final_alive / max(1, result.peak_alive)

# Sin escribir código: un archivo JSON
lg.run("config.json")          # o en la terminal:  lunagen config.json

Documentación

La documentación completa en español (conceptos, referencia de la API, cómo describir un organismo nuevo, calibración, ventana en vivo, exportación y publicación) está en https://satsh.org/lunagen/.

Fiabilidad

Las pruebas incluidas comparan la librería con el modelo original del que nació: con las mismas condiciones y semilla, los resultados son idénticos bit a bit. Ejecuta python tests/test_regression.py.

Licencia

MIT (ver LICENSE).

Metadata

Release files for lunagen 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lunagen 0.1.1
File Size Uploaded Provenance Actions
lunagen-0.1.1.tar.gz 77.2 kB Without provenance Details for lunagen-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for lunagen 0.1.1
File Interpreter ABI Platform Actions
lunagen-0.1.1-py3-none-any.whl Python 3 none any Details for lunagen-0.1.1-py3-none-any.whl

Total release size: 126.7 kB

Release files / lunagen-0.1.1.tar.gz

Download URL lunagen-0.1.1.tar.gz
Size 77.2 kB
Tags Source
SHA-256 checksum
How to use checksums
9756baee5374980b64256850328697a56dd27b995fdad141d6f3b95081718dc0
BLAKE2b-256 checksum
How to use checksums
c1e9221fa5df4bc718c03c128eb9652c0487d5262da894211a950dc1a1c3c605
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.0

Release files / lunagen-0.1.1-py3-none-any.whl

Download URL lunagen-0.1.1-py3-none-any.whl
Size 49.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9c86d16c904ba9c75f2fd26481ec600876786ec4f5c39c23c21e9da582967ce6
BLAKE2b-256 checksum
How to use checksums
011912e4f325e3a69dfd5c72aa014cc33d4a5bbc8bb739e867387cba1ab29d04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.0

Security for lunagen 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page