Metadata-Version: 2.1
Name: network-visualization
Version: 1.0.0
Summary: Tools for visualizing and analyzing electrical grid network topology
Home-page: https://github.com/yourusername/network_visualization
Author: Ricardo Energy Model Team
Author-email: Ricardo Energy Model Team <your.email@example.com>
License: MIT
Project-URL: Homepage, https://github.com/yourusername/network_visualization
Project-URL: Documentation, https://github.com/yourusername/network_visualization/blob/main/README.md
Project-URL: Repository, https://github.com/yourusername/network_visualization.git
Project-URL: Issues, https://github.com/yourusername/network_visualization/issues
Keywords: network,visualization,graph,energy,electrical-grid
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pandas>=2.0.0
Requires-Dist: numpy>=1.24.0
Requires-Dist: matplotlib>=3.7.0
Requires-Dist: networkx>=3.1
Requires-Dist: plotly>=5.14.0
Requires-Dist: PyYAML>=6.0
Requires-Dist: scipy>=1.10.0
Requires-Dist: geopy>=2.3.0
Requires-Dist: kaleido>=0.2.1

# Network Visualization & Analysis Tools

Herramientas para visualizar y analizar la topología de la red eléctrica del modelo energético de Chile.

## ✨ Nuevo! Simple Python API

¡Ahora puedes visualizar tu red con solo una línea de código!

```python
from network_visualization import plot_network

# ¡Solo esto!
plot_network("ruta/a/tu/modelo")
```

📦 **Instalable como paquete pip** - Listo para compartir y publicar en PyPI!

## 📋 Descripción

Este repositorio contiene scripts de Python para:
- **Visualizar** la topología de la red de transmisión eléctrica
- **Identificar** componentes conectados y aislados
- **Analizar** conectividad de subestaciones con demanda
- **Detectar** problemas estructurales en la red
- **Sugerir** conexiones para mejorar la conectividad
- **Decodificar** archivos IIS de Gurobi para diagnóstico

## 🚀 Inicio Rápido

### Instalación como Paquete
```bash
# Instalar en modo desarrollo
pip install -e .

# O instalar desde PyPI (después de publicar)
pip install network-visualization
```

### Uso Simple (Nuevo!)
```python
from network_visualization import plot_network, analyze_network

# Visualización - una línea
plot_network("ruta/a/tu/modelo")

# Análisis - una línea
analysis = analyze_network("ruta/a/tu/modelo")
print(f"Nodos aislados: {len(analysis['isolated_nodes'])}")

# Todo junto - una línea
viz_path, analysis = quick_viz("ruta/a/tu/modelo")
```

### Uso Tradicional (Scripts CLI)
```bash
# Visualización completa de la red
python scripts/visualize_network.py --model-path "ruta/al/modelo"

# Análisis de nodos aislados
python scripts/analyze_isolated.py --model-path "ruta/al/modelo"

# Sugerencias de conexiones
python scripts/suggest_connections.py --model-path "ruta/al/modelo"
```

## 📁 Estructura del Repositorio

```
network_visualization/
├── README.md                 # Este archivo
├── requirements.txt          # Dependencias Python
├── LICENSE                   # Licencia MIT
├── .gitignore               # Archivos a ignorar
│
├── scripts/                  # Scripts principales
│   ├── visualize_network.py      # Visualización interactiva
│   ├── analyze_isolated.py       # Análisis de nodos aislados
│   ├── analyze_feasibility.py    # Análisis de viabilidad
│   ├── suggest_connections.py    # Sugerencias de conexiones
│   ├── deep_analysis.py          # Análisis estructural profundo
│   └── decode_iis.py             # Decodificador IIS de Gurobi
│
├── utils/                    # Módulos auxiliares
│   ├── __init__.py
│   ├── load_data.py         # Carga de archivos YAML
│   ├── graph_builder.py     # Construcción de grafos
│   ├── geo_utils.py         # Utilidades geográficas
│   └── report_generator.py  # Generación de reportes
│
├── outputs/                  # Resultados (ignorado en git)
│   ├── graphs/              # Visualizaciones HTML
│   ├── reports/             # Reportes TXT/CSV
│   └── logs/                # Logs de ejecución
│
├── examples/                 # Ejemplos de uso
│   ├── basic_visualization.py
│   ├── find_isolated_demand.py
│   └── generate_report.py
│
└── docs/                     # Documentación adicional
    ├── USER_GUIDE.md        # Guía de usuario
    ├── API_REFERENCE.md     # Referencia de API
    └── CHANGELOG.md         # Historial de cambios
```

## 🔧 Características Principales

### 1. Visualización de Red
- Gráficos interactivos con Plotly
- Identificación visual de componentes
- Colores por tipo de nodo (generación, demanda, transmisión)
- Zoom y navegación interactiva

### 2. Análisis de Conectividad
- Detección de componentes conectados
- Identificación de nodos aislados
- Análisis de subestaciones con/sin demanda
- Estadísticas de la red

### 3. Diagnóstico de Problemas
- Detección de enlaces sin capacidad definida
- Identificación de power_links mal configurados
- Análisis de plantas desconectadas
- Validación de estructura del modelo

### 4. Sugerencias Inteligentes
- Conexiones por proximidad geográfica
- Priorización por demanda insatisfecha
- Estimación de distancias reales
- Exportación de conexiones sugeridas

## 📊 Ejemplos de Salida

### Estadísticas de Red
```
=== Network Statistics ===
Total Locations: 2,291
  - Power Plants: 1,146
  - Substations: 1,119
  - Transmission Nodes: 26

Connected Components: 120
  - Main Component: 2,172 nodes (94.8%)
  - Isolated: 119 components

Substations with Demand:
  - Connected: 1,016 (98.3%)
  - Isolated: 2 (S/E LA PORTADA, S/E MOLINOS)
```

### Visualización Interactiva
![Network Graph Example](docs/images/network_example.png)

## 🛠️ Requisitos del Sistema

- Python 3.8+
- 4 GB RAM mínimo (8 GB recomendado)
- Navegador web moderno (para visualizaciones)

## 📦 Dependencias

- `pandas>=2.0.0` - Manipulación de datos
- `numpy>=1.24.0` - Cálculos numéricos
- `networkx>=3.1` - Análisis de grafos
- `plotly>=5.14.0` - Visualizaciones interactivas
- `PyYAML>=6.0` - Lectura de configuraciones
- `scipy>=1.10.0` - Cálculos científicos
- `geopy>=2.3.0` - Cálculos geográficos

## 🤝 Contribuciones

Las contribuciones son bienvenidas. Por favor:
1. Fork el repositorio
2. Crea una rama para tu feature (`git checkout -b feature/AmazingFeature`)
3. Commit tus cambios (`git commit -m 'Add AmazingFeature'`)
4. Push a la rama (`git push origin feature/AmazingFeature`)
5. Abre un Pull Request

## 📝 Licencia

Este proyecto está bajo la Licencia MIT. Ver `LICENSE` para más detalles.

## 👤 Autor

**Ricardo's Energy Model Project**
- Proyecto: Modelo Energético de Chile con Calliope

## 📧 Contacto

Para preguntas, sugerencias o reportar problemas, por favor abre un Issue en el repositorio.

## 🔗 Enlaces Útiles

- [Calliope Documentation](https://calliope.readthedocs.io/)
- [NetworkX Documentation](https://networkx.org/documentation/stable/)
- [Plotly Python](https://plotly.com/python/)
- [Gurobi Optimizer](https://www.gurobi.com/documentation/)

---

**Última actualización:** Octubre 2025
