Clase 8: Gran Repaso de Minería de Datos Astronómicos#
(Preparación para Machine Learning)
A lo largo de estas semanas hemos construido un “Data Stack” completo para la investigación astronómica. Hemos pasado de no tener datos a poder descargar, cruzar y visualizar catálogos masivos alojados en servidores de todo el mundo, garantizando la reproducibilidad mediante el control de versiones.
Este documento consolida todos los conceptos clave, herramientas y bases de datos que formarán los cimientos para la siguiente etapa: el Aprendizaje Automático.
1. Resumen de Contenidos y Tablas de Comandos Clave#
A. Automatización y Versionado (Bash y Git)#
El trabajo científico debe ser automatizado y reproducible. La terminal de Linux/Unix y Git son el estándar de la industria.
Categoría |
Comando/Herramienta |
Descripción y Uso Práctico |
|---|---|---|
Descarga |
|
Descarga silenciosa de datos desde un Endpoint a un archivo local. |
Texto |
|
Reemplaza espacios por signos |
Variables |
|
Almacenamiento de consultas SQL complejas en variables para código limpio. |
Versionado |
|
Inicializa un repositorio y añade los scripts al área de preparación (staging). |
Historial |
|
Guarda una versión inmutable del código con un mensaje descriptivo. |
Colaboración |
|
Creación de ramas para trabajo en paralelo y unificación de código (Pull Requests). |
B. Análisis y Visualización (Python)#
Python es el motor matemático donde los datos crudos se transforman en astrofísica.
Librería |
Función Clave |
Descripción y Uso Práctico |
|---|---|---|
Pandas |
|
Carga el archivo crudo en un DataFrame (estructura tabular matricial). |
Pandas |
|
Limpieza de datos: elimina filas con valores nulos ( |
Matplotlib |
|
Gráfico de dispersión, la herramienta número uno para diagramas HR, CMDs o mapas estelares. |
Matplotlib |
|
Convención astronómica obligatoria: invierte ejes para magnitudes (menor valor = más brillante). |
Seaborn |
|
Creación de histogramas estadísticos superpuestos (usando |
C. Minería en Bases de Datos (SQL y ADQL)#
Mover el cómputo al servidor en lugar de descargar terabytes de datos a nuestro disco duro.
Concepto |
Sintaxis SQL/ADQL |
Significado Analítico |
|---|---|---|
Selección |
|
Extrae columnas específicas limitando la cantidad de filas de salida. |
Condición |
|
Filtra los datos algebraicamente (ej. planetas de tamaño terrestre). |
Cruce |
|
Intersección relacional. Cruza fotometría y espectroscopía de un mismo objeto. |
Geometría |
|
(Solo ADQL) Define un cono de búsqueda espacial en grados en la esfera celeste. |
Inclusión |
|
(Solo ADQL) Función lógica que evalúa si un objeto celeste está dentro de una región. |
Agregación |
|
Estadísticas en el servidor (ej. “calcula el promedio de masa agrupado por galaxia”). |
2. Las 10 Bases de Datos Fundamentales del Observatorio Virtual#
Para alimentar futuros modelos de Machine Learning, necesitamos saber de dónde sacar los datos de entrenamiento. Aquí están los 10 repositorios más importantes del mundo, sus Endpoints para la terminal y sus tablas clave.
(Nota: Las URLs de los Endpoints están en texto plano para su uso directo en scripts)
Nombre y Enfoque |
URL Interfaz Web (GUI) |
Endpoint de Máquina (TAP/SQL) |
Tablas / Colecciones Principales |
|---|---|---|---|
1. VizieR (Multicatálogo) |
|
|
|
2. SDSS (Espectroscopía) |
|
|
|
3. NASA Exoplanet Archive |
|
|
|
4. ESA Gaia Archive |
|
|
|
5. SIMBAD (Identificación) |
|
|
|
6. MAST (Hubble/JWST/TESS) |
|
|
|
7. HEASARC (Rayos X / Gamma) |
|
|
Colecciones de misiones como Chandra, Fermi o XMM-Newton. |
8. NED (Extragaláctico) |
|
|
|
9. ESO Archive (VLT/ALMA) |
|
|
|
10. ALMA Science Archive |
|
|
|
3. Ejemplo Detallado: Pipeline de Extracción Extragaláctica#
El siguiente es un ejemplo completo y reproducible de cómo se integran todas las herramientas para resolver un problema físico: Obtener la relación Color-Magnitud de las galaxias usando un JOIN en SDSS.
A. El Script de Extracción (Bash + SQL): 1_descarga.sh
#!/bin/bash
echo "Iniciando pipeline astronómico..."
# 1. Definimos la consulta SQL
# Unimos espectroscopía (para saber qué es y a qué distancia está) con fotometría (para el brillo y color)
QUERY="SELECT TOP 5000 s.z, p.u, p.r FROM SpecObj s INNER JOIN PhotoObj p ON s.bestObjID=p.objID WHERE s.class='GALAXY' AND s.z BETWEEN 0.05 AND 0.15"
# 2. Definimos el Endpoint explícito
ENDPOINT="[http://skyserver.sdss.org/dr18/SkyServerWS/SearchTools/SqlSearch?format=csv&cmd=](http://skyserver.sdss.org/dr18/SkyServerWS/SearchTools/SqlSearch?format=csv&cmd=)"
# 3. Formateamos y descargamos
URL="${ENDPOINT}${QUERY}"
# Reemplazamos los espacios por %20 para la URL de Sloan
URL_CLEAN=$(echo $URL | sed 's/ /%20/g')
wget -q -O galaxias_sdss.csv "$URL_CLEAN"
echo "Datos descargados exitosamente."
B. El Script de Análisis (Python):
import pandas as pd
import matplotlib.pyplot as plt
# 1. Ingesta y Limpieza
df = pd.read_csv('galaxias_sdss.csv', skiprows=1, names=['redshift', 'u', 'r'])
df_limpio = df.dropna()
# 2. Ingeniería de Datos (Feature Engineering básica)
# Calculamos el índice de color (Ultravioleta - Rojo)
df_limpio['color_u_r'] = df_limpio['u'] - df_limpio['r']
# 3. Visualización
plt.figure(figsize=(8,6))
# Hexbin es ideal para visualizar altas densidades de puntos
plt.hexbin(df_limpio['r'], df_limpio['color_u_r'], gridsize=40, cmap='plasma')
plt.colorbar(label='Densidad de Galaxias')
plt.gca().invert_xaxis() # Magnitudes absolutas crecen hacia la izquierda
plt.title('Diagrama Color-Magnitud Galáctico')
plt.xlabel('Magnitud r (Brillo)')
plt.ylabel('Índice de Color (u - r)')
plt.savefig('cmd_galaxias.png')
print("Análisis completado. Gráfica guardada.")
4. Retos de Programación (Laboratorio Final)#
A continuación, se presentan 4 problemas astrofísicos reales. Los estudiantes deberán decidir qué base de datos usar de la tabla anterior, escribir la consulta (SQL o ADQL), construir el pipeline en Bash/Python, y argumentar los resultados físicos.
Retos Individuales:
“La Estructura a Gran Escala del Universo”: Utilizando el catálogo espectroscópico de SDSS, extraigan una muestra masiva (mínimo 200,000 registros) de galaxias ubicadas en un corte transversal del cielo (por ejemplo, fijen la Declinación dec en un rango muy estrecho de +/−2 grados, y extraigan toda la información, incluyendo el corrimiento al rojo z). Usando coordenadas polares en Python, grafiquen la Ascensión Recta como el ángulo y el corrimiento al rojo como el radio. Objetivo Científico: Identificar visualmente la “Red Cósmica” (Cosmic Web), confirmando que las galaxias no se distribuyen uniformemente, sino en filamentos densos y grandes vacíos.
“El Límite Técnico de la Misión Kepler”: Utilizando el Endpoint de la NASA Exoplanet Archive, aíslen exclusivamente los planetas que fueron descubiertos por el observatorio espacial Kepler (revisen la columna disc_facility o filtren el nombre). Extraigan su masa planetaria y su periodo orbital. Objetivo Científico: Grafiquen Masa vs Periodo Orbital en escala logarítmica. Identifiquen la “zona vacía” en su gráfica. Deduzcan y expliquen en su informe por qué el método de tránsito empleado por Kepler tiene un sesgo instrumental gigantesco que le impide descubrir planetas de masa terrestre con órbitas largas (como la de Júpiter o Saturno).
Retos en Parejas (Vía Pull Requests de GitHub)
“Hermanos Solares en el Vecindario”: Nuestro Sol tiene parámetros muy específicos: Temperatura efectiva
Teff≈5778K, y una metalicidad cercana a la media galáctica. Queremos buscar estrellas casi idénticas al Sol en nuestro vecindario local. Objetivo Científico: Realicen un cruce espacial masivo (usando ADQL en VizieR) entre la astrometría de Gaia DR3 y la espectroscopía/fotometría de SDSS. Deben aislar un volumen esférico alrededor de la Tierra (paralaje mayor a un cierto límite). Filtren las estrellas cuya temperatura sea estadísticamente similar a la solar. Grafiquen la distribución espacial (coordenadas) de estos “hermanos solares” e indiquen cuántos lograron confirmar mediante el cruce de ambos catálogos.“Cazadores de Fuentes de Alta Energía”: La astronomía óptica (SDSS/Gaia) nos muestra estrellas y galaxias normales, pero el universo violento brilla en Rayos X. Objetivo Científico: Consulten el Endpoint TAP del archivo de HEASARC (NASA). Extraigan las coordenadas de las fuentes catalogadas por el observatorio de rayos X Chandra (tabla chandra). En un script separado, extraigan coordenadas de galaxias ordinarias en SDSS. Usando Python, sobrepongan ambas poblaciones en un mapa del cielo. Analicen la correlación espacial: ¿Las fuentes de rayos X parecen distribuirse al azar, o siguen la misma estructura que las agrupaciones de galaxias?