Spaces:
Configuration error
Configuration error
File size: 1,818 Bytes
3dc2617 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
import pandas as pd
import logging
import matplotlib.pyplot as plt
import networkx as nx
from stellargraph import StellarGraph
logger = logging.getLogger("Orbix")
def build_satellite_graph(satellite_data: pd.DataFrame, debris_data: pd.DataFrame) -> StellarGraph:
"""
Construye un grafo heterog茅neo a partir de datos de sat茅lites y desechos.
Se espera que `satellite_data` y `debris_data` contengan las columnas 'satellite_id' y 'debris_id', respectivamente.
"""
if satellite_data.empty or debris_data.empty:
logger.warning("Datos insuficientes para construir el grafo.")
return None
satellite_nodes = satellite_data.set_index("satellite_id")
debris_nodes = debris_data.set_index("debris_id")
# Crear DataFrame de aristas ficticio basado en interacciones
edges_df = pd.DataFrame({
"source": satellite_data['satellite_id'].tolist(),
"target": debris_data['debris_id'].tolist(),
"weight": [1] * min(len(satellite_data), len(debris_data))
})
graph = StellarGraph(
{"Satellite": satellite_nodes, "Debris": debris_nodes},
edges={"interaction": edges_df}
)
return graph
def analyze_graph(graph: StellarGraph):
"""
Analiza y visualiza el grafo satelital.
"""
if graph is None:
logger.error("No se proporcion贸 un grafo para analizar.")
return
logger.info("N煤mero de nodos: %d", graph.number_of_nodes())
logger.info("N煤mero de aristas: %d", graph.number_of_edges())
# Convertir a NetworkX para visualizaci贸n
nx_graph = graph.to_networkx()
pos = nx.spring_layout(nx_graph)
plt.figure(figsize=(8,6))
nx.draw(nx_graph, pos, with_labels=True, node_size=500, font_size=10)
plt.title("Visualizaci贸n del grafo satelital")
plt.show()
|