Jorge Martinez

Aerospace Engineer and Senior Software Developer


Sistema solar - Actividad Guiada I

Jorge Martínez Garrido

June 3, 2023

astronomy astrophysics vospec


El presente informe contiene las soluciones a los ejercicios propuestos en la Actividad Guiada I de la asignatura “Sistema Solar”.

Los ejercicios propuestos plantean el reto de encontrar el tipo de asteroide, conociendo su espectro. Dicho espectro se obtiene a partir de un archivo Flexible Image Transport System (FITS). Conocidas las 24 clases de referencia establecidas por DeMeo [1], es posible identificar a qué clase pertenece un asteroide. El problema propone resolver un total de 11 asteroides.

Para el procesado y análisis de los datos, el autor ha decidido utilizar Python en lugar del software propuesto VOSpec. Las razones son:

Comparando las clases para cada asteroide

Para poder clasificar los asteroides es necesario graficar su espectro contra el de las clases de referencia propuestas por DeMeo.

Para ello, se han generado una figura por cada asteroide. Cada figura contiene un total de 24 sub-figuras dispuestas en forma de matriz de 3 filas y 8 columnas. Cada una de estas sub-figuras presenta el espectro de una clase de DeMeo junto con el espectro del asteroide. Ello permite identificar de forma rapida si el asteroide pertenece a una clase o no.

import pathlib

data_filepath = pathlib.Path() / "data"
asteroids_filepath = data_filepath / "spectrum_asteroids"
demeo_filepath = data_filepath / "spectrum_reference"

outdir = pathlib.Path() / "output"
outdir.mkdir(parents=True, exist_ok=True)
asteroid_fits_files = [file for file in asteroids_filepath.glob("**/*.fits")]
reference_fits_files = [file for file in demeo_filepath.glob("**/*.fits")]

Utilizamos la función read1dFitsSpec de la librería PyAstronomy para leer los datos de los archivos FITS:

from PyAstronomy.pyasl import read1dFitsSpec as read_data_from_fits_file

Relacionamos cada asteroide con su identificador y sus datos espectrales:

spectra_asteroids = {}

for fits_file in asteroid_fits_files:
    uid = int(fits_file.name.split(".")[0].split("_")[-1])
    wavelength, flux = read_data_from_fits_file(fits_file)
    spectra_asteroids[fits_file] = [uid, wavelength, flux]

Hacemos lo mismo para los espectros de referencia de DeMeo:

spectra_demeo = {}

for fits_file in reference_fits_files:
    uid = fits_file.name.split(".")[0].split("-")[0]
    wavelength, flux = read_data_from_fits_file(fits_file)
    spectra_demeo[fits_file] = [uid, wavelength, flux]

Graficamos todas las posibles combinaciones y guardamos los archivos con el nombre asteroid_<N>.png, siendo N el identificador de cada asteroide.

import matplotlib.pyplot as plt

plt.ioff()

for asteroid_key, asteroid_value in spectra_asteroids.items():
    fig, axs = plt.subplots(3, 8, figsize=(16, 9))
    fig.suptitle(f"Asteroide {asteroid_value[0]}", fontsize=16)

    for i, (demeo_key, demeo_value) in enumerate(spectra_demeo.items()):
        ax = axs[i // 8, i % 8]
        ax.plot(asteroid_value[1], asteroid_value[2], 'r', label='Asteroid')
        ax.plot(demeo_value[1], demeo_value[2], 'b', label='DeMeo')
        ax.set_title(f"Class {demeo_value[0]}")
        ax.grid(True)
        ax.set_xlabel("Longitud de onda [µm]")
        ax.set_ylabel("Flujo [Jy]")
            
    handles, labels = axs[0, 0].get_legend_handles_labels()
    fig.legend(handles, labels, loc='lower right')

    plt.tight_layout()
    plt.savefig(f"output/asteroide_{asteroid_value[0]}.png", bbox_inches="tight")
    plt.close(fig)

Clasificando los asteroides

Una vez generadas todas las combinaciones para cada asteroide y clase de DeMeo, se procede a identificar la taxonomia del asteroide. Además, también es posible calcular otros parámetros como:

Para obtener una gráfica mejorada de cada asteroide, declaramos la siguiente función:

def plot_asteroid_and_class(asteroid_name, class_name, bands=None):
    asteroid_wavelength, asteroid_flux = read_data_from_fits_file(
        asteroids_filepath / f"asteroide_{asteroid_name}.fits"
    )
    class_wavelength, class_flux = read_data_from_fits_file(
        demeo_filepath / f"{class_name}-type.fits"
    )
    
    fig, ax = plt.subplots()
    ax.plot(asteroid_wavelength, asteroid_flux, "r", label=f"Asteroide {asteroid_name}")
    ax.plot(class_wavelength, class_flux, "b", label=f"Clase {class_name}")
    if bands:
        for band in bands:
            ax.axvline(x=band, color='k', linestyle='--', linewidth=2)
    
    
    ax.set_title(f"Asteroide {asteroid_name} - Clase {class_name}")
    ax.set_xlabel("Longitud de onda [µm]")
    ax.set_ylabel("Flujo [Jy]")
    
    
    ax.grid(True)
    ax.legend(loc="lower right")
    
    
    # Add legend for visible light spectrum
    visible_light_spectrum = {
        'Violet': (0.380, 0.450),
        'Blue': (0.450, 0.495),
        'Green': (0.495, 0.570),
        'Yellow': (0.570, 0.590),
        'Orange': (0.590, 0.620),
        'Red': (0.620, 0.750)
    }
    
    ax2 = ax.twiny()  # Create a secondary x-axis
    
    # Hide the secondary x-axis ticks and labels
    ax2.xaxis.set_ticks_position('none')
    ax2.xaxis.set_ticklabels([])
    
    # Set the range of the secondary x-axis
    ax2.set_xlim(ax.get_xlim())
    
    # Plot color patches for each visible light spectrum range
    for color, wavelength_range in visible_light_spectrum.items():
        ax2.axvspan(*wavelength_range, color=color, alpha=0.3)
    
    plt.show()

Declaramos un diccionario que relacione el identificador de cada asteroide con la taxonomía de DeMeo a la que corresponde:

asteroid_solutions = {}

Finalmente, preparamos un directorio para guardar los resultados:

Asteroide 1

De la tabla de resultados se desprende que el ateroide 1 pertenece a la taxonomía X de DeMeo.

Asteroide 1
plot_asteroid_and_class(1, "X")
asteroid_solutions[1] = "X"

Sobre la clase X

La clase X de DeMeo se refiere a una categoría de asteroides cuyo espectro muestra una falta de características espectrales distintivas. Esto significa que su espectro no presenta patrones claros o líneas de absorción prominentes que permitan identificar su composición con precisión.

Los asteroides de la clase X suelen tener una reflectancia relativamente uniforme a través de un amplio rango de longitudes de onda. Esto sugiere que su superficie está compuesta principalmente de minerales silicatos, como los basaltos, que son comunes en los asteroides de tipo rocoso.

Los asteroides de la clase X se pueden encontrar en diferentes regiones del sistema solar, ya que su clasificación está basada en sus propiedades espectrales y no en su ubicación específica. Estos asteroides pueden estar presentes tanto en el cinturón principal de asteroides como en otras regiones, como el cinturón de asteroides cercano a Júpiter (llamado cinturón de asteroides de Jovianos) o incluso en la vecindad de la Tierra.

Lineas de absorcion

Al tratarse de la clase X, se identifica que no existen lineas de absorcion.

Asteroide 2

De la tabla de resultados se desprende que el ateroide 2 pertenece a la taxonomía Cg de DeMeo.

Asteroide 2
plot_asteroid_and_class(2, "Cg", bands=[0.95])
asteroid_solutions[2] = "Cg"

Asteroide 3

De la tabla de resultados se desprende que el ateroide 3 pertenece a la taxonomía X de DeMeo.

Asteroide 3
plot_asteroid_and_class(3, "X")
asteroid_solutions[3] = "X"

Dado que esta categoria ya ha sido definida para el asteroide 1, no se daran mas detalle sobre esta taxonomia.

Asteroide 4

De la tabla de resultados se desprende que el ateroide 4 pertenece a la taxonomía Sr de DeMeo. Si bien el asteroide presenta una similitud con las clases S y Sq, es la clase Sr la que mejor se adapta en cuanto a los espectros de absorcion.

Asteroide 4
plot_asteroid_and_class(4, "Sr", bands=[0.91, 1.95])
asteroid_solutions[4] = "Sr"

Sobre la clase Sr

La clase “Sr” se refiere a asteroides cuyos espectros muestran características espectrales similares a los condritos ordinarios, que son un tipo común de meteoritos encontrados en la Tierra. Estos asteroides suelen tener una reflectancia relativamente alta en la región visible del espectro electromagnético, disminuyendo hacia el infrarrojo cercano.

Las características espectrales de los asteroides de la clase “Sr” sugieren que su superficie está compuesta principalmente de minerales silicatos, como el olivino y el piroxeno. Estos minerales son típicos de los condritos ordinarios, que son meteoritos rocosos compuestos principalmente de silicatos.

Líneas de absorción

Se encuentran líneas de absorción para las frecuencias con longitud de onde de 0.91 micrometros y 1.95 micrometros. La primera banda de absorcion podria indicar que el asteroide contiene oxígeno molecular (O2).

Asteroide 5

De la tabla de resultados se desprende que el ateroide 5 pertenece a la taxonomía T de DeMeo. Es posible que pudiera pertenecer a las clases tipo S o L, ya que se observan unas tenues bandas de absorcion para el infrarojo. Para confirmar la taxonomía del asteroide, seria necesario obtener mas datos sobre el mismo.

Asteroide 5
plot_asteroid_and_class(5, "T")
asteroid_solutions[5] = "T"

Sobre la clase T

La clase “T” se refiere a asteroides cuyos espectros muestran características espectrales similares a los condritos carbonáceos. Los condritos carbonáceos son un tipo de meteoritos que se caracterizan por tener una alta proporción de carbono y compuestos orgánicos en su composición.

Los asteroides de la clase “T” exhiben una reflectancia relativamente baja en el espectro visible y una alta reflectancia en el infrarrojo cercano. Estos asteroides muestran una fuerte absorción de la luz en el espectro visible debido a los materiales ricos en carbono presentes en su superficie.

Las características espectrales de los asteroides de la clase “T” sugieren que su superficie contiene compuestos orgánicos, minerales hidratados y otros materiales volátiles. Estos asteroides son de gran interés para los científicos, ya que pueden contener información valiosa sobre los compuestos precursores de la vida y la evolución química en el sistema solar.

Líneas de absorción

La clase T no presenta bandas de absorción.

Asteroide 6

De la tabla de resultados se desprende que el ateroide 6 pertenece a la taxonomía A de DeMeo. Las líneas de absorción casan con las de esta clase espectral de asteroide.

Asteroide 6
plot_asteroid_and_class(6, "A", bands=[1.05])
asteroid_solutions[6] = "A"

Sobre la clase A

Los asteroides de tipo A son asteroides relativamente poco comunes que se encuentran en el cinturón interno. Estos asteroides presentan una fuerte y amplia característica de olivino en el rango de 1 micrómetros y su espectro es de color rojizo intenso en longitudes de onda inferiores a 0.7 micrómetros. Se cree que provienen del manto completamente diferenciado de un asteroide y parecen tener una densidad elevada.

Líneas de absorción

Se encuentran líneas de absorción para la frencuencia con una longitud de onda de 1.05 micrómetros.

Asteroide 7

De la tabla de resultados se desprende que el ateroide 7 pertenece a la taxonomía D de DeMeo. La pendiente de la curva es similar a la de esta taxonomia.

Asteroide 7
plot_asteroid_and_class(7, "D")
asteroid_solutions[7] = "D"

Sobre la clase D

Los asteroides de tipo D tienen un albedo muy bajo y un espectro rojizo sin características distintivas. Se ha sugerido que tienen una composición de silicatos ricos en compuestos orgánicos, carbono y silicatos anhidros, posiblemente con hielo de agua en su interior. Se encuentran en el cinturón de asteroides externo y más allá.

Líneas de absorción

Esta taxonomia no presenta líneas de absorcion.

Asteroide 8

De la tabla de resultados se desprende que el ateroide 8 pertenece a la taxonomia Sq de DeMeo.

Asteroide 8
plot_asteroid_and_class(8, "Sq", bands=[1.05])
asteroid_solutions[8] = "Sq"

Dado que la clase Sq es muy parecida a la calse Sr (asteroide 4), no se dan más detalles sobre esta taxonomía.

Asteroide 9

De la tabla de resultados se desprende que el ateroide 9 pertenece a la taxonomía B de DeMeo. La razon recae en su pendiente negativa.

Asteroide 9
plot_asteroid_and_class(9, "B")
asteroid_solutions[9] = "B"

Sobre la clase B

Los asteroides de tipo B son un tipo relativamente poco común de asteroides carbonáceos que pertenecen al grupo más amplio de los asteroides tipo C. La designación “B” indica que estos objetos tienen un espectro de color azul. Estos asteroides se encuentran principalmente en el cinturón de asteroides externo y son dominantes en la familia Pallas, que incluye al tercer asteroide más grande, 2 Pallas. Se cree que son remanentes primitivos ricos en volátiles de los primeros tiempos del Sistema Solar.

Líneas de absorción

La clase B presenta una absorción a lo largo de todo el infrarrojo.

Asteroide 10

De la tabla de resultados se desprende que el ateroide 10 pertenece a la taxonomia Q de DeMeo.

Asteroide 10
plot_asteroid_and_class(10, "Q", bands=[0.98, 1.95])
asteroid_solutions[10] = "Q"

Sobre la clase Q

Se cree que los asteroides de clase Q están compuestos principalmente de minerales carbonáceos, como materia orgánica y compuestos hidratados. La presencia de absorciones en la región del infrarrojo cercano y en la región de 3 micrómetros sugiere la presencia de minerales hidratados, como filosilicatos y serpentina.

Los asteroides de clase Q son relativamente raros y se encuentran principalmente en el cinturón de asteroides externo, aunque también se han observado algunos ejemplos en la región de los asteroides cercanos a la Tierra.

Líneas de absorción

El asteroide presenta una banda de absorcion marcada para la frecuencia con una longitud de onda de 0.98 micrometros. Tambien presenta una segunda banda de absorcion mas tenue para la frecuencia con una longitud de onda de 1.95 micrómetros.

Asteroide 11

De la tabla de resultados se desprende que el ateroide 11 pertenece a la taxonomia V de DeMeo.

Asteroide 11
plot_asteroid_and_class(11, "V", bands=[0.92, 1.95])
asteroid_solutions[11] = "V"

Sobre la clase V

Los asteroides de clase V se caracterizan por tener un espectro de reflectancia que muestra una fuerte pendiente positiva en la región del visible y una absorción débil en la región del infrarrojo cercano.

Esta clase se asocia con asteroides que tienen una superficie rocosa y escasa o nula presencia de materiales volátiles. Típicamente, los asteroides de clase V son rocosos y están compuestos principalmente de minerales silicatos, como piroxenos y olivinos.

Los asteroides de clase V son relativamente comunes y se encuentran en varias regiones del sistema solar, incluyendo el cinturón de asteroides principal y los asteroides cercanos a la Tierra.

Líneas de absorción

El asteroide presenta una banda de absorcion marcada para la frecuencia con una longitud de onda de 0.95 micrómetros. También presenta una segunda banda de absorción mas tenue para la frecuencia con una longitud de onda de 1.95 micrómetros.

Conclusión

Tras recopilar y procesar los espectros de diferentes asteroides ha sido posible identificar su taxonomía de DeMeo. La utilización de Python para manipular, analizar y procesar los datos ha sido clave para resolver con exito el ejercicio.

Los datos muestran que existe una gran diversidad en la composición de los asteroides que se encuentran en el sistema solar.

from tabulate import tabulate


table_results = [
    ["Asteroide"] + list(asteroid_solutions.keys()),
    ["Taxonomia"] + list(asteroid_solutions.values())
]

# Print the table
print(tabulate(table_results, tablefmt="fancy_grid"))
╒═══════════╤═══╤════╤═══╤════╤═══╤═══╤═══╤════╤═══╤════╤════╕
│ Asteroide │ 1 │ 2  │ 3 │ 4  │ 5 │ 6 │ 7 │ 8  │ 9 │ 10 │ 11 │
├───────────┼───┼────┼───┼────┼───┼───┼───┼────┼───┼────┼────┤
│ Taxonomia │ X │ Cg │ X │ Sr │ T │ A │ D │ Sq │ B │ Q  │ V  │
╘═══════════╧═══╧════╧═══╧════╧═══╧═══╧═══╧════╧═══╧════╧════╛

Es posible que en los proximos años, las nuevas técnicas de medición permitan obtener mejores datos base sobre los que poder trabajar o incluso crear nuevas taxonomías.

Referencias

[1] DeMeo, F. E., Binzel, R. P., Slivan, S. M., & Bus, S. J. (2009). An extension of the Bus asteroid taxonomy into the near-infrared. Icarus, 202(1), 160-180.