Skip to content
Snippets Groups Projects
Jocabed Martínez's avatar
a3bb0f8e

Inferencias de materia oscura a partir de curvas de rotación

Tabla de contenidos

Descripción

Como la materia oscura no puede ser vista, una manera de medir su distribución en las galaxias es a través de los movimientos internos del gas y estrellas. El objetivo de este proyecto es desarrollar un software modular para estudiar curvas de rotación de galaxias enanas al ajustarlas con modelos teóricos para su distribución de materia oscura usando Monte Carlo. Esto incluye estimación de los parámetros del mejor modelo y sus incertidumbres a través de la minimización de 𝟀2 y el análisis de contornos de verosimilitud, así también una comparación de diferentes modelos basados en la bondad del ajuste. Los estudiantes recibirán apoyo en buenas prácticas de programación y programación orientada a objetos.

Recursos teóricos

¿Qué se hace en este proyecto?

En los códigos de este proyecto se toma como argumento principal la dirección o path (i.e. ../galaxies_data/rcugc11012.txt) de los datos que forman la curva de rotación para cierta galaxia. Los códigos funcionan directamente con los datos obtenidos de la base de datos Fabry Perot y por el observatorio GHASP. La estructura de archivo .txt es de 8 columnas, el header con el nombre de cada columna y los datos.

 

Columna Descripción
r(kpc) Distancia en kilo parsec desde el centro de la galaxia - Necesaria
err_r(kpc) Error en la medida de la distancia en kpc - Necesaria
r(arsec) Distancia en arco segundos desde el centro de la galaxia - No necesaria
err_r(arsec) Error en la medida de la distancia en arcsec - No necesaria
v(km/s) Velocidad observada para cierta distancia en kilometros sobre segundo - Necesaria
err_v(km/s) Error en la medida de la velocidad en km/s - Necesaria
Numberofbins - No necesaria
Side Índica si el punto medido es approaching (a) o receding (r) - Necesaria

 

De estos datos se obtienen curvas de rotación como la siguiente,

donde los puntos azules corresponden a la parte de la galaxia que se está acercando (approaching) y los puntos rojos corresponden a la parte de la galaxia que se está alejando (receding).

¿Qué se hace con los datos?

Estos datos se ajustan mediante el método de scipy.optimize.leastsq a la ecuación de la velocidad para los perfiles de Navarro-Frenk-White (NFW) y Pseudo-isothermal sphere (ISO). Cada perfil tiene dos parámetros a ser determinados, para el caso del perfil NFW se determina el valor para M200 y la concentración; para el ISO se determina el valor de la densidad central y el radio del core.

Adicionalmente cada parámetro es obtenido considerando unicamente los datos Side = "r", Side = "a" y considerando todos los datos.

Junto con los parámetros se determina el error formal dado por la misma función de scipy.optimize.leastsq.

Se observa en la imagen anterior los datos para la galaxia UGC11012 y el ajuste de los modelos NFW e ISO (en este caso considerando todos los datos y no separados por r y a).

Análisis

El par de parámetros para cada perfil de velocidades permite calcular una nueva curva que ajusta los datos experimentales, de esta manera se determina el valor para el 𝟀2, el cual es minímo. El proyecto construye una matriz de valores alrededor de los parámetros del ajuste, para determinar el 𝟀2 para cada par de parámetros dentro de la matriz.

Por ejemplo, si para los datos de galaxia en "../galaxies_data/rcugc11012.txt", considerando unicamente el Side = "r" y para el modelo NFW, se encontró que los mejores parámetros, los que dan el mejor ajuste, son aproximadamente M200 = 2e+11 Msun y c = 29. Se tomaron 300 valores para c entre (5.0, 70.51) y para M200, 300 entre (5.0e+10, 6.84e+11) Msun. Con este rango de valores se forma un matriz de 300x300, de tal manera que se considerarn todas las posibles combinaciones entre M200 y c y se determina el 𝟀2 para cada par de parámetros.

Con los valores de 𝟀2, se grafica lo siguiente, teniendo como valor de partida el 𝟀2 obtenido con los parámetros dados por scipy.optimize.leastsq,

Cada región de 𝟀2 da razón de la probabilidad de obtener ese par de parámetros. Para la región roja, entre 𝟀2 y 𝟀2 + 0.006, tendriamos una región de confianza del 99.70%, la región verde entre 𝟀2 + 0.006 y 𝟀2 + 0.093 corresponde al 95.45% y la región rosada corresponde al 68.2% del nivel de confianza.

Alcance del proyecto

Este proceso se realizó para 18 galaxias que se encontraron en la base de datos Fabry Perot

No Path
1 ../galaxies_data/rcugc11012.txt
2 ../galaxies_data/rcugc12754.txt
3 ../galaxies_data/rcugc10521.txt
4 ../galaxies_data/rcugc5251.txt
5 ../galaxies_data/rcugc11300.txt
6 ../galaxies_data/rcugc8403.txt
7 ../galaxies_data/rcugc9866.txt
8 ../galaxies_data/rcugc11466.txt
9 ../galaxies_data/rcugc2800.txt
10 ../galaxies_data/rcugc9465.txt
11 ../galaxies_data/rcugc3273.txt
12 ../galaxies_data/rcugc3876.txt
13 ../galaxies_data/rcugc7985.txt
14 ../galaxies_data/rcugc9753.txt
15 ../galaxies_data/rcugc7876.txt
16 ../galaxies_data/rcugc1256.txt
17 ../galaxies_data/rcugc5228.txt
18 ../galaxies_data/rcugc4165.txt

 

¿Cómo ejecutar este proyecto?

Se necesitan cuatro carpetas principales,

  • Functions: alberga los script .py de los modulos creados y usados (functions.py), las importaciones que se necesitan (imports.py) y una declaración de constantes (constants.py).
  • galaxies_data: alberga las 18 galaxias trabajadas en este proyecto, 18 archivos en formato .txt.
  • code: alberga los scripts que ejecutan el proyecto
    • todo.py: Como el nombre índica contiene las líneas de código necesarias para ejecutar el proyecto. Acá se importan los script .py dentro de la carpeta de Functions. Recibe como argumento externo el path de una galaxia (i.e python3 todo.py "../galaxies_data/rcugc4165.txt").
    • job-test.sh: Permite ejecutar todo.py de manera iterativa para las galaxias que se desee. Para ejecutarlo, sh job-test.sh o sbatch job-test.sh.

Al tener estas carpetas con los respectivos scripts.py, se puede correr para una galaxia el script todo.py, todo_a.py o todo_r.py para Side = 'ra', 'r' o 'a' respectivamente y se obtienen los resultados de los parámetros del mejor ajuste y el valor del 𝟀2 reducido para cada modelo, así como también una gráficas del mejor ajuste de los modelos y las regiones de los parąmetros correspondientes a las regiones de confianza. Se pueden correr todas las galaxias con el uso del job-test.sh.