Spaces:
Configuration error
Configuration error
| import sys | |
| import os | |
| import pandas as pd | |
| import numpy as np | |
| from datetime import datetime, timedelta | |
| import logging | |
| # Configurar path para importar módulos del proyecto | |
| sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
| from src.quantum_api_integrator import QuantumApiIntegrator | |
| from src.config import logger | |
| # Configurar logging | |
| logging.basicConfig(level=logging.INFO) | |
| def main(): | |
| """ | |
| Ejemplo de uso del integrador de APIs cuánticas para generar alertas de colisión | |
| utilizando datos reales de satélites. | |
| """ | |
| logger.info("Iniciando ejemplo de integración de APIs cuánticas") | |
| # Inicializar el integrador | |
| integrador = QuantumApiIntegrator() | |
| # Definir ventana de tiempo para datos históricos (últimas 24 horas) | |
| end_time = datetime.now() | |
| start_time = end_time - timedelta(hours=24) | |
| # Ejemplo 1: Obtener datos de un satélite específico | |
| satellite_id = "25544" # ISS (Estación Espacial Internacional) | |
| logger.info(f"Obteniendo datos para el satélite {satellite_id}") | |
| satellite_data = integrador.get_satellite_data( | |
| satellite_id=satellite_id, | |
| start_time=start_time, | |
| end_time=end_time | |
| ) | |
| # Convertir a formato de trayectoria | |
| trajectory = integrador.convert_api_data_to_trajectory(satellite_data) | |
| if not trajectory.empty: | |
| logger.info(f"Trayectoria obtenida con {len(trajectory)} puntos") | |
| print("Primeros puntos de la trayectoria:") | |
| print(trajectory.head()) | |
| else: | |
| logger.warning("No se pudo obtener trayectoria válida") | |
| # Ejemplo 2: Predecir trayectoria futura | |
| logger.info(f"Prediciendo trayectoria futura para el satélite {satellite_id}") | |
| predicted_trajectory = integrador.predict_trajectory( | |
| satellite_id=satellite_id, | |
| start_time=start_time, | |
| end_time=end_time, | |
| prediction_hours=48 # Predecir 48 horas en el futuro | |
| ) | |
| if not predicted_trajectory.empty: | |
| logger.info(f"Trayectoria predicha con {len(predicted_trajectory)} puntos") | |
| print("Primeros puntos de la trayectoria predicha:") | |
| print(predicted_trajectory.head()) | |
| else: | |
| logger.warning("No se pudo predecir trayectoria") | |
| # Ejemplo 3: Generar alerta de colisión | |
| logger.info(f"Generando alerta de colisión para el satélite {satellite_id}") | |
| alert = integrador.generate_collision_alert( | |
| satellite_id=satellite_id, | |
| prediction_hours=72 # Analizar riesgo para las próximas 72 horas | |
| ) | |
| if "error" not in alert: | |
| logger.info(f"Alerta generada con ID: {alert.get('alert_id')}") | |
| print("\nDetalles de la alerta:") | |
| print(f"Nivel de alerta: {alert.get('alert_level')}") | |
| print(f"Probabilidad de colisión: {alert.get('collision_probability'):.4f}") | |
| print(f"Tiempo hasta máximo acercamiento: {alert.get('time_to_closest_approach')}") | |
| print(f"Acciones recomendadas: {alert.get('recommended_actions')}") | |
| else: | |
| logger.error(f"Error al generar alerta: {alert.get('error')}") | |
| # Ejemplo 4: Analizar múltiples satélites | |
| satellite_ids = ["25544", "43013", "48274"] # ISS, TESS, Starlink-1654 | |
| logger.info(f"Analizando colisiones entre múltiples satélites: {satellite_ids}") | |
| alerts = integrador.analyze_multiple_satellites( | |
| satellite_ids=satellite_ids, | |
| prediction_hours=48 | |
| ) | |
| if alerts and "error" not in alerts[0]: | |
| logger.info(f"Se generaron {len(alerts)} alertas") | |
| for i, alert in enumerate(alerts): | |
| print(f"\nAlerta {i+1}:") | |
| print(f"Satélites: {alert.get('satellite_id')} - {alert.get('other_object_id')}") | |
| print(f"Nivel: {alert.get('alert_level')}") | |
| print(f"Probabilidad: {alert.get('collision_probability'):.4f}") | |
| else: | |
| logger.warning("No se generaron alertas para los satélites analizados") | |
| if __name__ == "__main__": | |
| main() |