En las últimas décadas la computación se ha convertido en un pilar de la ingeniería y el desarrollo científico-tecnológico. En la mayoría de las áreas, el trabajo computacional es un complemento fundamental de la experimentación tradicional y de la teoría, ya que cada vez más se involucran simulaciones numéricas y modelado computacional. Frecuentemente, la tarea de los profesionales hace uso de aplicaciones específicas que requieren un gran trabajo de procesamiento de los datos de entrada y un post-procesamiento de los resultados utilizando otras herramientas.
Este curso brindará una introducción al lenguaje de programación Python y a las herramientas fundamentales del "ecosistema científico" (IPython, Numpy, Matplotlib, Scipy) y también herramientas especificas necesarias para el estudio de la atmósfera y el océano. Estas conforman un entorno de programación interactivo de vanguardia, fuertemente adoptado por la comunidad científica internacional, simple, libre, gratuito y multiplataforma.
El curso esta diseñado para dictarse de forma intensiva en el plazo de una semana. El contenido se divide en clases teóricas por la mañana (de 9 a 13) y hands-on por la tarde (14 a 18) en donde los alumnos pondrán en práctica los temas desarrollados.
Debido a que una parte fundamental del curso son los hands-on, habrá un cupo limitado de 14 personas. El curso está destinado a estudiantes de doctorado, posdoctorandos y jóvenes investigadores. Se dará prioridad a los que sean docentes del DCAO (FCEN-UBA).
Aclaración: No es un curso de estadística. No es un curso de climatología. Se asume que los participantes poseen conocimientos de climatología y de métodos estadísticos
Características de Python. Introducción a IPython Notebook. Tipos de datos: enteros, flotantes, complejos, strings. Estructuras de datos incorporadas: listas, tuplas, diccionarios, conjuntos. Conceptos de mutabilidad, inmutabilidad, secuencia, iterador. Control de flujo: if, for, while. Estructuras por comprensión.
Funciones: definición, argumentos posicionales y nominales. Funciones incorporadas: zip, range, enumerate, etc. Manejo de I/O: lectura y escritura de archivos. Conceptos básicos de programacion orientada a objetos. Sistemas de control de versiones (GIT).
Numpy: introducción al objeto Array. Slicing extendido, métodos y funciones importantes. Máscaras y fancy indexing. Aplicación de Numpy en álgebra lineal. Resolución de sistemas de ecuaciones lineales. Manipulación de arreglos multidimencionales (3 y 4 dimensiones) Matplotlib: generación de gráficos cartesianos continuos, puntos, histogramas. Matplotlib avanzado: API orientada a objetos. Manipulación del formato y apariencia. Gráficos 3D, otros tipos de gráficos 2D. Exportación con calidad de publicación.
Manejando archivos NetCDF. Leer y crear NetCDF. Acceder variable NetCDF. Graficando las proyecciones. Regresiones lineales y no lineales. Análisis espectrales
En la última clase trabajaremos aplicando todo lo aprendido durante el curso sobre datos particulares de cada alumno. Al finalizar la jornada, cada uno realizara una pequeña presentación mostrando lo que pudo hacer, librerías utilizadas, problemas que tuvieron, etc.