Librería para realizar computación con membranas
Project description
# MemBrainPy: Biblioteca de Sistemas P en Python
 
MemBrainPy es una librería en Python que implementa y simula **Sistemas P** (P‐systems) en modo máx-paralelo, basados en el formalismo de P-Lingua. Permite:
- Definir estructuras jerárquicas de membranas y multiconjuntos de objetos.
- Especificar reglas de evolución, comunicación, disolución y creación de membranas.
- Cargar definiciones en formato `.pli` con el módulo de lectura
(`Lector.py`).
- Simular lapso a lapso y registrar estadísticas en tablas y CSV.
- Visualizar dinámicamente la simulación con Matplotlib.
- Generar ejemplos de sistemas P estándar (suma, resta, división…)
mediante funciones de conveniencia.
---
## 📥 Instalación
Instala MemBrainPy con pip:
```bash
pip install membrainpy
O clona el repositorio y, desde la raíz del proyecto:
git clone https://github.com/tu-usuario/membrainpy.git
cd membrainpy
pip install .
🚀 Primeros pasos
from membrainpy.SistemaP import SistemaP, Membrana, Regla, simular_lapso
# 1. Crear un sistema vacío y definir la membrana piel
sis = SistemaP(output_membrane="skin")
m0 = Membrana("skin", resources={})
sis.add_membrane(m0)
# 2. Añadir una membrana hija con recursos y reglas
m1 = Membrana("m1", resources={"a": 5, "b": 3})
# Regla: consume 2·a → produce 1·c en la piel
r = Regla(left={"a":2}, right={"c_out":1}, priority=1)
m1.add_regla(r)
sis.add_membrane(m1, parent_id="skin")
# 3. Simular un lapso
lap = simular_lapso(sis, rng_seed=42)
print("Recursos tras consumo:", lap.consumos)
print("Producciones:", lap.producciones)
📦 Estructura de módulos
SistemaP.pyNúcleo de clases:SistemaP,Membrana,Regla, simulador por lapso, generación de máximales, estadísticas y exportación a DataFrame/CSV.Lector.pyParser de archivos P-Lingua (.pli): lee jerarquía (@mu), multiconjuntos (@ms(id)), reglas y construye unSistemaP.funciones.pyFábrica de sistemas P elementales para operaciones aritméticas (suma, resta, división, paridad, etc.).operaciones_avanzadas.pyMultiplicación y potencia mediante simulaciones sucesivas de sistemas P básicos.visualizadorAvanzado.pyVisualización paso a paso de la simulación con Matplotlib: dibuja estructuras, recursos y reglas aplicadas.configurador.pyInterfaz gráfica (Tkinter) para construir interactivamente un Sistema P: añadir membranas, recursos, reglas y definir membrana de salida.tests_sistemas.pySuite de tests tipounittestque cubre sistemas básicos, anidados, con conflictos y casos de uso avanzados.
📖 Ejemplo de uso con P-Lingua
from membrainpy.Lector import leer_sistema
# Suponiendo un archivo ejemplo.pli en el disco
sis = leer_sistema("ejemplo.pli")
# Simular 10 pasos y exportar estadísticas
from membrainpy.SistemaP import registrar_estadisticas
df = registrar_estadisticas(sis, lapsos=10, rng_seed=0, csv_path="resultados.csv")
print(df.head())
🔧 Testing
Ejecuta la batería de tests con:
pytest
O bien:
python -m unittest discover -v
🤝 Contribuir
- Haz un fork del proyecto y crea una rama (
git checkout -b feature/nueva-función). - Añade tests en
tests_sistemas.pyy asegúrate de que pasan todos. - Abre un pull request describiendo tu contribución.
📚 Referencias
- Pérez-Hurtado et al. (2009). Un entorno de programación para Membrane Computing (P-Lingua) fileciteturn0file7
- Sempere, J. M. (s.f.). Computación con membranas. Sistemas P fileciteturn0file8
- Gh. Păun (2002). Membrane Computing. An Introduction. Springer.
📝 Licencia
Este proyecto está bajo licencia MIT. Véase el archivo LICENSE para más detalles.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
membrainpy-0.1.5.tar.gz
(22.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file membrainpy-0.1.5.tar.gz.
File metadata
- Download URL: membrainpy-0.1.5.tar.gz
- Upload date:
- Size: 22.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8d396fc504216460f69ae475381d9a2c9a1092b7a7820283499845f4e544838
|
|
| MD5 |
9c9b533026ccd312131eda743f23a54c
|
|
| BLAKE2b-256 |
03f0de4b7f5de91b40e290530faf1da66f2c5d94c8f64522e8405a1c97dffa70
|
File details
Details for the file membrainpy-0.1.5-py3-none-any.whl.
File metadata
- Download URL: membrainpy-0.1.5-py3-none-any.whl
- Upload date:
- Size: 25.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bfa97b651de7d8e11a6b25a8a70c5fa80d259bb430dc559abfbac87c8e6eb4a1
|
|
| MD5 |
6e282d918f27b2f44a151f7efafeffe2
|
|
| BLAKE2b-256 |
d054920f51289b14f4bd323ee4d1a757abd6a2d49120915fed5ce1b8d92af5d2
|