relmap v0.1.0: navegación relativista y mapa del espacio-tiempo con Python
Calcula deflexión de luz, retraso de Shapiro y dilatación temporal en el Sistema Solar (y escenas propias) y genera un mapa 3D interactivo animado.
Qué es
relmap es una biblioteca y CLI en Python para navegación relativista: toma masas y posiciones (estimadas, con incertidumbre), resuelve la métrica del espacio-tiempo y traza geodésicas nulas (rayos de luz) y temporales (relojes). Incluye el Sistema Solar completo (Sol, 8 planetas, Plutón, Luna, cinturón de asteroides) con elementos keplerianos aproximados de JPL válidos 1800–2050.
Tres modos de uso:
-
relmap-solar— mapa interactivo del Sistema Solar (HTML + JS, modo oscuro/claro, animación orbital, vistas predefinidas) -
relmap— tus propias escenas YAML/JSON -
relmap-pdf— guías pedagógicas (estudiante/profesor) con números calculados al vuelo por el propio código
Qué entrega (v0.1.0)
| Capacidad | Estado | Verificación |
|---|---|---|
| Schwarzschild exacto (fase 1) | ✅ | 1,75″ deflexión luz rozando el Sol; 42,98″/siglo precesión Mercurio |
| Campo débil multi-cuerpo (fase 2) | ✅ | Retraso Shapiro vs fórmula analítica; dilatación Tierra 6,95·10⁻¹⁰ |
| Catálogo Sistema Solar (fases 3-4) | ✅ | 11 cuerpos + cinturón + Luna; posiciones dentro de apsides |
| Mapa 3D interactivo + animación | ✅ | Plotly + JS embebido; --offline (~7 MB) o CDN |
| Monte Carlo incertidumbre | ✅ | Propaga σ masa/posición a σ deflexión/retraso |
| Guías PDF (estudiante/profesor) | ✅ | relmap-pdf --nivel ambos; ReportLab + Matplotlib |
| Tests | ✅ | 92 passed, 1 skipped (browser test sin Chromium) |
| CI | ✅ | GitHub Actions matrix 3.11/3.12; ruff + compileall + pytest |
| Licencia | ✅ | AGPL-3.0-or-later; LICENSE 661 líneas + SPDX en todos los .py |
Ejemplo rápido:
python3 -m venv .venv && source .venv/bin/activate pip install -e ".[dev]" pytest # ≈ 1 min relmap-solar --date 2026-11-05 --offline --out sistema_solar.html # Abre sistema_solar.html en el navegador Qué NO hace aún
- Posiciones exactas desde JPL Horizons (script pendiente para descargar y sustituir aproximadas)
- Planetas enanos distintos de Plutón (Ceres, Eris…) ni lunas de los gigantes
- Órbitas multi-cuerpo con correcciones post-newtonianas
- Relatividad numérica (agujeros negros fusionándose)
- Guías en inglés
Cómo probarlo
git clone https://github.com/amurlaniakea/relmap cd relmap python3 -m venv .venv && source .venv/bin/activate pip install -e ".[dev]" pytest -v relmap-solar --date 2026-11-05 --offline --out sistema_solar.html # WSL: explorer.exe sistema_solar.html relmap-pdf --nivel ambos Para escenas propias: relmap examples/sistema_solar.yaml --mc 200 --out mapa.html
Como biblioteca:
from datetime import datetime, timezone from relmap import solar_system_bodies, default_rays, trace_ray bodies = solar_system_bodies(datetime(2026, 11, 5, tzinfo=timezone.utc)) ray = default_rays(bodies)[0] # rasante al Sol res = trace_ray(bodies, ray.origin, ray.direction, ray.length) print(res.deflection_arcsec, res.delay_s) # ≈ 0.8756″ y ≈ 150 µs Referencias
- Repo: https://github.com/amurlaniakea/relmap
- Documentación: README.md + guías PDF en
docs/ - Datos orbitales/físicos: NASA/JPL (Standish, Planetary Physical Parameters)
- Motor numérico: SciPy (DOP853, tol 10⁻¹²); gráficos: Plotly; PDF: ReportLab + Matplotlib
Autor: Pedro Sordo Martínez — amurlaniakea@gmail.com
Licencia: AGPL-3.0-or-later