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
- Hubo una versión anterior al repositorio final, la puedes ver y estudiar en: https://github.com/amurlaniakea/relmapdemo
-
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
Top comments (0)