![magnetic-field.png](/assets/img/portfolio/magnetic-field.png)
MagnetoPy es una CLI (Command Line Interface) open source escrita en Python, diseñada para procesar datos magnéticos. Con un conjunto robusto de comandos, MagnetoPy tiene como objetivo simplificar el análisis y la manipulación de datos magnéticos para los geofísicos en el campo. Este es mi proyecto de tesis de la licenciatura en Ciencias de la Tierra, el cual sigue en desarrollo y en constante actualización.
En este post escribí un poco de la teoría y los fundamentos bajo los cuales está escrito este software. Si quieres ir directo a la sección de cómo utilizar MagnetoPy puedes seleccionar el enlace Utilizando MagnetoPy en el índice de contenidos.
Última actualización: 25 de junio de 2024.
Resumen
El Campo Magnético Terrestre (CMT) se conforma de diferentes magnitudes vectoriales representadas desde un punto en la superficie terrestre; las componentes horizontal \((H)\) y vertical \((Z)\), donde \((H)\) se caracteriza por contar con un norte \((X)\) y este \((Y)\) geográficos. La relación angular entre \((H)\) y \((X)\) se define como la declinación \((D)\), mientras que la relación angular entre \((H)\) y el campo total \((N)\), corresponde a la inclinación \((I)\) 1. En un levantamiento magnetométrico, un dato magnético medido en una estación \((P)\) a un tiempo \((t)\) es una superposición de efectos, incluyendo el campo principal interno, la inducción de fuentes externas y la inducción debida a cuerpos anómalos magnetizados. El campo geomagnético no es constante en el tiempo, sino que tiene una variación lenta, estas variaciones se conocen como variaciones seculares, las cuales se producen por el movimiento convectivo del núcleo externo. Asimismo, existen variaciones externas que son producidas en rangos menores de tiempo (desde algunas horas hasta meses), principalmente generadas por cambios en las corrientes eléctricas en la atmósfera superior. Debido a que el campo principal interno representa un 95% del dato magnético, es necesario aplicar correcciones que puedan aislar la componente de interés 2.
![north_south_magnetic_field.png](/assets/img/portfolio/north_south_magnetic_field.png)
![earth_magnetic_field_components.png](/assets/img/portfolio/earth_magnetic_field_components.png)
Este trabajo busca generar un software open source que incluya diferentes reducciones y filtros necesarios para realizar un correcto procesamiento e interpretación de datos obtenidos de levantamientos magnetométricos.
Introducción
Las mediciones de anomalías magnéticas de campo total son ampliamente utilizadas en la exploración geofísica debido a su bajo costo y a su facilidad de adquisición. Durante un levantamiento magnetométrico, la adquisición de datos se ve afectada por variaciones temporales causadas por corrientes eléctricas ionosféricas, un efecto que se encuentra presente todo el tiempo y el cual puede ser compensado mediante mediciones de una estación base, a su vez, las variaciones seculares representan una fuente importante de ruido para los datos recopilados, es por ello que la International Association of Geomagnetism and Aeronomy (IAGA) desarrolló el International Geomagnetic Reference Field (IGRF), una serie de armónicos esféricos para representar el campo global en cuatro dimensiones: latitud, longitud, distancia geocéntrica (altitud), y tiempo 2.
Debido a que la medición del campo magnético consiste en una superposición de múltiples fuentes, el proceso para eliminar o atenuar estos efectos se vuelve de gran importancia para la interpretación de las anomalías. Existen técnicas que permiten aislar la componente de interés mediante filtros o transformaciones, un ejemplo de las mismas es la reducción al polo, la cual permite trasladar el punto de observación al polo geomagnético para visualizar la anomalía como si se estuviera justo encima. Esta técnica permite eliminar las variaciones horizontales producidas por el campo geomagnético y proporciona un mejor punto de interpretación para la fuente observada 2.
![magnetic_anomalies.png](/assets/img/portfolio/magnetic_anomalies.png)
Actualmente se cuenta con una amplia variedad de software que realiza estas correcciones de manera automática, sin embargo, pocos de estos programas permiten el acceso al código fuente, el cual facilita entender las transformaciones que realiza a los datos, y a su vez, proporciona flexibilidad al usuario para manipular los parámetros de las mismas.
¿Qué es el IGRF?
El IGRF (International Geomagnetic Reference Field) por sus siglas en inglés es un conjunto de coeficientes esféricos armónicos que pueden ser introducidos en un modelo matemático para describir la porción a gran escala y variable en el tiempo del campo magnético interno de la Tierra entre épocas desde 1900 d.C. hasta la actualidad. El IGRF es calculado y producido por un grupo de trabajo internacional de científicos denominado IAGA (International Association of Geomagnetism and Aeronomy). La actual decimotercera generación del IGRF ha sido derivada de observaciones recopiladas por satélites, observatorios en tierra y estudios magnéticos en todo el mundo.3
Las series de modelos matemáticos utilizadas para calcular el Campo Magnético Terrestre pueden representarse en la siguiente expresión:
\[V(r,\theta ,\phi ,t)=a\sum_{N}^{n=1}\sum_{n}^{m=0}(\frac{a}{r})^{n+1}[g_{n}^{m}cos(m\phi )+h_{n}^{m}(t)sin(m\phi )]P_{n}^{m}(cos\theta )\]![total-field.png](/assets/img/portfolio/total-field.png)
![mag-poles.png](/assets/img/portfolio/mag-poles.png)
Fuente: International Geomagnetic Reference Field: the thirteenth generation.
Utilizando MagnetoPy
MagnetoPy funciona como CLI y por lo tanto se puede ejecutar desde la terminal, sin embargo, yo recomiendo utilizar el IDE (Integrated Development Environment) PyCharm debido a que permite administrar los ambientes virtuales de nuestra máquina en el caso de tener múltiples proyectos de Python para evitar conflictos de versiones, además de que facilita la configuración de los diferentes parámetros de MagnetoPy, los cuales pueden ser muy extensos para algunos comandos.
Preparación del ambiente de trabajo
Para utilizar MagnetoPy es necesario tener instalado lo siguiente:
- Python 3.11.0 o superior.
- Git para clonar el repositorio.
- PyCharm (recomendado).
Instalación
Para instalar MagnetoPy es necesario clonar el repositorio desde la terminal con el siguiente comando:
git clone https://github.com/JCBucio/MagnetoPy.git
Posteriormente, abriremos el proyecto en PyCharm de la siguiente manera:
- Abrimos PyCharm.
- Seleccionamos la opción Open.
- Buscamos la carpeta MagnetoPy y la seleccionamos.
- Copiamos la carpeta
runConfigurations
en la carpeta.idea
del proyecto.
Nota: Si la carpeta
.idea
no aparece en los archivos del proyecto, puedes intentar cerrar PyCharm y volver a abrirlo. Si aún no aparece, puedes copiar la carpetarunConfigurations
en la carpeta.idea
de manera manual en el explorador de archivos.
Antes de ejecutar cualquier comando de MagnetoPy es necesario crear un ambiente virtual para el proyecto, para realizar esto en PyCharm sigue los siguientes pasos:
- Abre el proyecto en PyCharm.
- Dirígete a
File > Settings
. - En la ventana de configuración selecciona
Project: MagnetoPy
>Python Interpreter
. - Haz clic en el engrane y selecciona
Add
. - Selecciona
Virtualenv Environment
. - En la opción de
Location
selecciona la carpeta en donde quieres crear el ambiente virtual del proyecto (yo recomiendo crearlo en la carpeta del proyecto). - Haz clic en
OK
.
Nota: PyCharm nos solicitará crear el ambiente virtual en una carpeta vacía, puedes crear una con el nombre que tú desees (yo recomiendo nombrarla
env
) en la carpeta del proyecto.
Para instalar las dependencias del proyecto en el ambiente virtual sigue los siguientes pasos:
- Abre el proyecto en PyCharm.
- Abre el archivo
requirements.txt
del proyecto. - Haz clic en
Install requirements
.
Ejecutando MagnetoPy
Para consultar una descripción de MagnetyoPy y de cada uno de los comandos disponibles, ejecuta el siguiente comando en la terminal:
python magnetopy.py --help
O bien:
python magnetopy.py <command> --help
Por ejemplo, para consultar la descripción del comando diurnal-variation
ejecuta el siguiente comando:
python magnetopy.py diurnal-variation --help
Comandos disponibles
MagnetoPy sigue en desarrollo y por lo tanto se irán agregando más comandos y funciones a la CLI, a continuación se muestra una lista de los comandos disponibles hasta la fecha:
diurnal-variation
: Corrección por variación diurna utilizando datos de una estación base.calculate-igrf
: Corrección por IGRF calculando el campo magnético total.
Mejoras futuras
MagnetoPy sigue en desarrollo y es posible que tenga algunos pequeños errores si no se introducen los datos de manera correcta, sigo trabajando para hacer esta CLI mucho más sencilla y rápida de utilizar.
Comentarios, sugerencias y opiniones
Si tienes algún comentario, sugerencia u opinión házmelo saber en los comentarios de abajo, no requieres de ninguna cuenta, sólo elige un nombre de usuario (puede ser tu nombre) y un correo (opcional). Todos los comentarios son enviados a un moderador, por lo tanto tardarán un poco en publicarse.
-
Potential theory in gravity and magnetic applications. Cambridge University Press. 1994. ↩
, -
Gravity and Magnetic Exploration: Principles, Practices and Applications. Cambridge University Press. 2013. ↩ ↩2 ↩3
, -
International Geomagnetic Reference Field: the thirteenth generation. Earth, Planets And Space, 73(1). 2021. ↩
,