Sistema completo para el análisis y visualización de ondas gravitacionales con asistente AI integrado. Utiliza datos abiertos de LIGO/Virgo/KAGRA y Google Gemini para análisis interactivo.
- 📡 Acceso a datos abiertos de LIGO/Virgo/KAGRA - Catálogos GWTC completos
- 📊 Visualizaciones avanzadas - Time series, espectrogramas, ASD, Q-transforms
- 🤖 Asistente AI con Gemini - Consultas interactivas sobre física de ondas gravitacionales
- 🚀 API REST completa - Backend FastAPI con documentación automática
- 💻 Interfaz web moderna - Frontend React/TypeScript con Tailwind CSS
- 📦 Gestión moderna de dependencias - uv para Python, pnpm para TypeScript
GWV/
├── backend/ # Python backend con FastAPI
│ ├── src/
│ │ ├── gw_visualizer_backend.py # Core del análisis
│ │ ├── gw_visualizer_api.py # REST API
│ │ ├── gw_quickstart_demo.py # Demo CLI
│ │ └── gw_advanced_examples.py # Ejemplos avanzados
│ ├── pyproject.toml # Configuración uv
│ └── README.md
│
├── frontend/ # React/TypeScript frontend
│ ├── src/
│ │ ├── GWVisualizer.tsx # Componente principal
│ │ ├── main.tsx # Entry point
│ │ └── index.css # Estilos
│ ├── package.json # Configuración pnpm
│ ├── vite.config.ts # Configuración Vite
│ └── README.md
│
├── docs/ # Documentación
│ └── gw_installation_guide.md
│
├── scripts/ # Scripts de automatización
│ ├── install.sh # Instalación completa
│ ├── start.sh # Inicio del sistema
│ └── stop.sh # Detener servicios
│
├── .env.example # Template de variables de entorno
└── README.md # Este archivo
- Python 3.10+
- Node.js 18+
- uv - Gestor de paquetes Python (instalar)
- pnpm - Gestor de paquetes Node (instalar)
- Gemini API Key - Obtener en Google AI Studio
# 1. Clonar o descargar el proyecto
cd GWV
# 2. Ejecutar instalación automática
./scripts/install.sh
# 3. Configurar API key
cp .env.example .env
# Editar .env y agregar tu GEMINI_API_KEY
# 4. Iniciar el sistema
./scripts/start.shLa aplicación estará disponible en:
- 🌐 Frontend: http://localhost:3000
- 🔌 Backend API: http://localhost:8000
- 📚 API Docs: http://localhost:8000/docs
cd backend
# Instalar dependencias
uv sync
# Configurar variables de entorno
cp .env.example .env
# Editar .env con tu GEMINI_API_KEY
# Iniciar servidor API
uv run uvicorn src.gw_visualizer_api:app --reload --host 0.0.0.0 --port 8000
# O ejecutar demos
uv run python src/gw_quickstart_demo.pycd frontend
# Instalar dependencias
pnpm install
# Iniciar servidor de desarrollo
pnpm dev
# Build de producción
pnpm build- Abre http://localhost:3000
- Selecciona un catálogo de eventos (ej: GWTC-3-confident)
- Haz clic en un evento para analizarlo
- Explora las visualizaciones (Time Series, Whitened, ASD, Spectrogram)
- Usa el asistente AI para hacer preguntas sobre el evento
# Listar catálogos
curl http://localhost:8000/api/catalogs
# Obtener eventos de un catálogo
curl http://localhost:8000/api/events/GWTC-3-confident?limit=10
# Analizar un evento específico
curl http://localhost:8000/api/analyze/GW150914?detector=L1
# Consultar al asistente AI
curl -X POST http://localhost:8000/api/ask \
-H "Content-Type: application/json" \
-d '{
"question": "¿Qué fue GW150914?",
"event_name": "GW150914",
"include_context": true
}'Documentación interactiva completa: http://localhost:8000/docs
# Demo rápido
cd backend
uv run python src/gw_quickstart_demo.py
# Ejemplos avanzados (análisis multi-detector, batch processing)
uv run python src/gw_advanced_examples.pycd backend
# Instalar con dependencias de desarrollo
uv sync --extra dev
# Formatear código
uv run black src/
# Linting
uv run ruff check src/
# Tests (cuando estén disponibles)
uv run pytestcd frontend
# Modo desarrollo con hot reload
pnpm dev
# Linting
pnpm lint
# Build
pnpm build
# Preview del build
pnpm preview- Guía de instalación detallada
- Backend README
- Frontend README
- API Documentation (cuando el servidor esté corriendo)
Crea un archivo .env en la raíz del proyecto:
# Backend
GEMINI_API_KEY=tu_api_key_aqui
API_PORT=8000
API_HOST=0.0.0.0
LOG_LEVEL=INFO
# Frontend
VITE_API_URL=http://localhost:8000from backend.src.gw_advanced_examples import MultiDetectorAnalyzer
analyzer = MultiDetectorAnalyzer('GW150914')
analyzer.fetch_all_detectors()
snr_values = analyzer.compute_snr_comparison()
analyzer.plot_comparison()from backend.src.gw_advanced_examples import BatchProcessor
processor = BatchProcessor()
events = ['GW150914', 'GW170817', 'GW190521']
results = processor.process_events(events)
processor.generate_report(format='html')Las contribuciones son bienvenidas! Por favor:
- Fork el proyecto
- Crea una branch para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la branch (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la licencia MIT. Ver LICENSE para más detalles.
- LIGO/Virgo/KAGRA Collaborations - Por los datos abiertos de ondas gravitacionales
- GWpy - Framework para análisis de datos GW
- GWOSC - Gravitational Wave Open Science Center
- Google Gemini - Capacidades de AI generativa
- FastAPI - Framework web moderno para Python
- Vite + React - Tooling frontend de nueva generación
Si encuentras algún problema o tienes preguntas:
- Revisa la documentación
- Busca en los issues existentes
- Crea un nuevo issue con detalles del problema
¡Feliz exploración de ondas gravitacionales! 🌌