lunes, 11 de enero de 2016

Programación en las geociencias, porqué deberías aprender Python, y cursos gratuitos

La programación es una herramienta muy útil en muchas disciplinas, y esto no excluye a las ciencias de la Tierra. La programación en las geociencias encuentra su mayor uso en el análisis de datos, graficación, manipulación de matrices, procesado de datos, entre otros. Aunque muchos piensan que la programación es una herramienta más útil para los geofísicos, también les puede ser de mucha utilidad a las demás ramas si supiera usarse de la manera adecuada.

Los lenguajes de programación más utilizados yconocidos son Java y C++, pero su sintaxis es más complicada que la de otros lenguajes y los estudiantes sin previa experiencia en programación podrían batallar para aprender y por lo tanto perder el interés en seguir programando. Fortran es otro lenguaje más robusto, casi de especialización, usado mayormente para computación numérica y científica.


El código para el programa más básico, "Hello, world!, en  C++, Java y Python


Por eso mismo en la mayoría de las universidades en las carreras de ciencias de la Tierra se utilizan dos lenguajes de programación mayormente a la hora de realizar las tareas geocientíficas, Matlab y Python. Aunque Matlab es un lenguaje más sencillo y es más conocido entre los no programadores, con una interfaz que ha mejorado mucho al paso de los años hasta llenarse de botones para ya no tener que escribir código y aunque es una gran herramienta de análisis numérico y gráficos tiene una gran desventaja contra Python, el precio. Python es gratuito y aunque muchas universidades ofrecen licencias para los estudiantes de Matlab , éstas sólo tienen una vigencia mientras se esté en la matrícula de la escuela. También hay otras maneras de conseguir Matlab "gratuitamente" pero si existe una mejor herramienta para hacer lo mismo y gratis completamente, ¿por qué no usarla? Con herramientas como scipy, numpy y matplotlib, python es capaz de hacer todo lo que se ocupa al momento de trabajar, además de tener librerías específicas para ciencias de la Tierra, como segpy que es una librería para leer y trabajar con archivos sísmicos SEG-Y .




También se puede argumentar que Matlab no es exactamente un lenguaje de programación pero eso depende del cristal con que se mire. Hay versiones similares gratuitas a Matlab, como Octave, pero que carecen de ciertas características para hacerlas la mejor opción. Al final de cuentas, cada quien decide en dónde se siente más cómodo para su conocimiento del tema.

Yo en lo personal utilicé Matlab en la Universidad y me gustaba mucho, ahora me encuentro aprendiendo Python y lo encuentro bastante agradable también.

¿Qué es Python?


Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible.




Es sencillo de aprender, es multiplataforma (puedes usarlo en cualquier sistema operativo), las librerias son portables, etc 

¿Quién o en que se usa Python?

https://wiki.python.org/moin/OrganizationsUsingPython

Python ha sido usado para desarrollar softwares como dropbox, spotify, ArcGis, Battlefield 2 (videojuego, para add-ons, etc), reddit, youtube, etc.





En este mes inician 3 cursos gratuitos (con opción de certificado por 50 USD) sobre programación en Python en la página edx.org. Uno por la Universidad de Texas Arlington, otro por el Instituto Tecnológico de Massachusets (MIT), y el último por Microsoft

Otras herramientas útiles para aprender Python son Code Academy, Code.org y learn python para sus celulares. Y algunas otras páginas:
http://www.math.pitt.edu/~siam/workshops/python10/python.pdf
https://github.com/koldunovn/python_for_geosciences/blob/master/00%20-%20Why%20Python.ipynb
http://earthpy.org/tag/python-for-geosciences.html
http://www.atmos.umd.edu/~bjohnson/pyearth/
http://www.newthinktank.com/2014/11/python-programming/




**** EDICIÓN***


Se me pasó comentar los paquetes de distribución de python que pueden usar. En el curso del MIT si es igual que el del año pasado usaran Enthought Canopy (versión atrasada 2.7). Personalmente prefiero usar Anaconda, el cual ya trae integrado spyder (Scientific PYthon Development EnviRonment)jupyter notebook y iphyton notebook en su versión más actual 3.5

************ Vale la pena darles una visita y aprender algo nuevo que podría serles muy útil en su día a día en la escuela.

¡Hasta la próxima!

miércoles, 6 de enero de 2016

Sismología de exploración: Introducción al procesamiento de datos sísmicos

Tal y como lo hemos hecho hasta ahora, en este nuevo post, el primero del 2016, continuamos con una de las tres principales partes de la exploración sismológica, el procesado de datos sísmicos, el cual en si mismo es un tema bastante extenso, por lo que en esta entrada solo daremos una breve introducción. Antes de pasar a lo que compete a este post, si no han leído las entradas anteriores pueden hacerlo dándole clic a los siguientes links:






Definición.

El procesamiento de datos sísmicos se puede definir como la alteración de datos sísmicos para suprimir ruido, mejorar la señal y migrar los eventos sísmicos a su posición apropiada en el espacio. 

Ejemplo de procesado sísmico. 
*Esta figura da una visión general de cómo se ven los datos antes y después de la secuencia de procesado. Asimismo la figura c muestra un mapa de atributo sísmico representando la velocidad de la onda a una profundidad particular del estudio sísmico. Diferentes tipos de rocas tienen diferentes velocidades, por lo que la velocidad es un buen indicador al buscar por un tipo específico de rocas. En este caso, las bajas velocidades (en azul) son características de las arenas, en este ejemplo de una antiguo cauce de río, las cuales son porosas y típicamente buenas almacenadoras de hidrocarburos.


Introducción a los fundamentos del procesado de señales.

En el procesado de señales, especialmente en el análisis de datos sísmicos, la transformada de Fourier es fundamental y se aplica a casi todas las etapas de procesamiento. Una traza sísmica representa un campo de onda sísmico grabado en una posición receptora. La forma digital de una traza sísmica es una serie de tiempo la cual puede ser completamente descrita como una suma discreta de un número de sinusoides - cada uno con una amplitud pico, frecuencia, y fase. El análisis de una traza sísmica en sus componentes sinusoidales se logra a través de la transformada directa de Fourier. Inversamente, la síntesis de una traza sísmica desde sus componentes sinusoidales individuales se logra a través de la transformada inversa de Fourier



Los algoritmos de procesado de datos sísmicos pueden ser comúnmente descritos o implementados más fácilmente en el dominio de la frecuencia que en el dominio del tiempo. Muchas de las técnicas de procesado involucran un operando (traza sísmica) y un operador (filtro). Una de las aplicaciones simples del análisis de Fourier es el diseño de filtros de frecuencia de fase cero, comúnmente en la forma de filtros pasabanda.

Algo de humor...

La transformada de Fourier en 2D es una manera de descomponer un campo de onda sísmico, tal como un gather de tiro común, en sus componentes de onda plana, cada uno con una cierta frecuencia propagándose a un cierto ángulo de la vertical. Por lo tanto, la transformada de Fourier en 2D puede describir procesos como la migración y el filtrado de frecuencia-número de onda (f-k).

... algo más

Los datos sísmicos comúnmente necesitan una aplicación de una función de ganancia (escalamiento de amplitudes variante en el tiempo), por varias razones. La función de escalamiento comúnmente se deriva de los datos. En las etapas tempranas del procesado la ganancia se aplica para corregir por divergencia esférica (decaimiento de las amplitudes debido al esparcimiento geométrico de las ondas sísmicas). A los datos sísmicos se les aplica ganancia generalmente para propósitos de visualización, por ejemplo, al aplicar el control automático de ganancia (AGC por sus siglas en inglés), el cual aumenta las zonas de reflexiones débiles en los datos sísmicos. Sin embargo, una ganancia de tipo AGC puede destruir el carácter de la señal y debe, por lo tanto, ser considerada con precaución.
Control de ganancia. En los ejemplos de la imagen se puede distinguir fácilmente la diferencia entre una sección sin y con ganancia.


Existen tres tipos de etapas primarias en el procesamiento de datos sísmicos; cada una esta direccionada a mejorar la resolución sísmica (habilidad para separar dos eventos que están muy cerca el uno del otro) ya sea espacial o temporalmente:

1.- La deconvolución se realiza junto al eje de tiempo para incrementar la resolución temporal al comprimir la ondícula sísmica básica a  aproximadamente un pico y suprimir trenes de ondas reverberantes.

Ejemplificación del resultado de aplicar la deconvolución a una respuesta sísmica


2.- El apilamiento, que comprime la dimensión del offset, por lo tanto reduciendo el volumen de datos sísmicos al plano de la sección sísmica de cero offset e incrementando la relación señal-ruido.


Apilamiento sísmico es básicamente la suma de las trazas.


3.- La migración es comúnmente implementada en la sección apilada (la cual se asume que es equivalente a una sección de offset cero) para incrementar la resolución lateral al colapsar las difracciones y mover los eventos buzantes a sus supuestas verdaderas posiciones en el subsuelo.

Se muestra a) estructura en profundidad, b) sección en tiempo y c) la diferencia del resultado con la sección migrada


Procesos secundarios son implementados en ciertas etapas para condicionar los datos y mejorar el desempeño de la deconvolución, apilamiento, y migración, pero eso lo veremos en entradas futuras y con un poco más de tiempo.

Hasta pronto!

Referencias: Yilmaz 2001

¿Tienes algún tema que te gustaría que tratáramos? Danos like y háznoslo saber en nuestra página de Facebook, o agréganos como amigos en Facebook o Twitter.