Librería para la lectura de soluciones PLEXOS sin necesidad de la API plexos. El código reimplementa la lectura del archivo ZIP (xml y binario) y crea tablas en memoria en formato Apache Arrow.
La libreria permite:
- Lectura de archivos .zip de PLEXOS. (probado con salidas PID / PCP / Mensual)
- Escritura de archivos en formato .parquet
- Permite queries sobre las tablas Arrow.
Dado que la lectura del .zip quedan en formato Apache Arrow, al igual que las salidas de las queries, estas son de facil traspaso a famosas librerias de dataframe como pandas o polars, o directamente a una BD como duckdb.
- Felipe Batidas - Trabajo Inicial / (not?) Documentación - FasoCoding
También puedes mirar la lista de todos los contribuyentes quíenes han participado en este proyecto.
- Python - Lenguaje y version usada
- Pydantic - Librería de validación de datos
- xmltodict - Libreria para trabajar con XML
- PyArrow - Implementación Python del spec Arrow para data
Usamos Github para el versionado.
pip install .Instalación editable (modo desarrollo):
pip install -e .from pyplexos.solution import PlexosSolution
solution = PlexosSolution.from_zip("/ruta/a/mi_solucion.zip")solution.to_parquet("/ruta/a/carpeta_salida")from pyplexos.compute import Querier
q = Querier(solution)Obtener objetos por clase:
objects = q.get_objects("Generator")Obtener membresías entre clases:
memberships = q.get_memberships("System", "Generator")Query de resultados:
result = q.query_data(
parent_class_name="System",
child_class_name="Generator",
property_name="Generation",
phase_type="LP", # LP | PASA | MT | ST
period_type="intervals" # intervals | days | weeks | months | years | hours | quarters
)df_pandas = result.to_pandas()import polars as pl
df_polars = pl.from_arrow(result)