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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.