Clase 0: Introducción al lenguaje Python orientado a Ingenierías y Física

Autor: Juan Fiol

Licencia:

Esta obra está bajo una Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional. Licencia Creative Commons

Python y su uso en ingenierías y ciencias

El objetivo de este curso es realizar una introducción al lenguaje de programación Python para su uso en el trabajo científico y técnico/tecnológico. Si bien este curso “en el final finaliza y empieza por adelante” vamos a tratar algunos de los temas más básicos sólo brevemente. Es recomendable que se haya realizado anteriormente un curso de Introducción a la programación, y tener un mínimo de conocimientos y experiencia en programación.

¿Qué es y por qué queremos aprender/utilizar Python?

El lenguaje de progamación Python fue creado al principio de los 90’ por Guido van Rossum, con la intención de ser un lenguaje de alto nivel, con una sintaxis clara, limpia y que intenta ser muy legible. Es un lenguaje de propósito general por lo que puede utilizarse en un amplio rango de aplicaciones.

Desde sus comienzos ha evolucionado y se ha creado una gran comunidad de desarrolladores y usuarios, con especializaciones en muchas áreas. En la actualidad existen grandes comunidades en aplicaciones tan disímiles como desarrollo web, interfaces gráficas (GUI), distintas ramas de la ciencia tales cómo física, astronomía, biología, ciencias de la computación. También se encuentran muchas aplicaciones en ciencia de datos, estadística, economía y análisis de finanzas en la bolsa, en interacción con bases de datos, y en el procesamiento de gran número de datos como se encuentran en astronomía, biología, meteorología, etc.

En particular, Python encuentra un nicho de aplicación muy importante en varios aspectos muy distintos del trabajo de ingeniería, científico, o técnico. Por ejemplo, es una lenguaje muy poderoso para analizar y graficar datos experimentales, incluso cuando se requiere procesar un número muy alto de datos. Presenta muchas facilidades para cálculo numérico, se puede conjugar de forma relativamente sencilla con otros lenguajes más tradicionales (Fortran, C, C++), e incluso se puede usar como “marco de trabajo”, para crear una interfaz consistente y simple de usar en un conjunto de programas ya existentes.

Python es un lenguaje interpretado, como Matlab o IDL, por lo que no necesita ser compilado. Esta característica trae aparejadas ventajas y desventajas. La mayor desventaja es que para algunas aplicaciones –como por ejemplo cálculo numérico intensivo– puede ser considerablemente más lento que los lenguajes tradicionales. Esta puede ser una desventaja tan importante que simplemente nos inhabilite para utilizar este lenguaje y tendremos que recurrir (volver) a lenguajes compilados. Sin embargo, existen alternativas que, en muchos casos permiten superar esta deficiencia.

Por otro lado existen varias ventajas relacionadas con el desarrollo y ejecución de los programas. En primer lugar, el flujo de trabajo: Escribir-ejecutar-modificar-ejecutar-modificar-ejecutar-modificar-ejecutar- … es más ágil. Alternativamente, se puede utilizar en forma interactiva, lo que permite modificar y ejecutar líneas específicas de un programa hasta obtener la versión correcta.

Es un lenguaje pensado para mantener una gran modularidad, que permite reusar el código con gran simpleza. Otra ventaja de Python es que trae incluida una biblioteca con utilidades y extensiones para una gran variedad de aplicaciones que son parte integral del lenguaje. Además, debido a su creciente popularidad, existe una multiplicidad de bibliotecas adicionales especializadas en áreas específicas. Por esta razones el tiempo de desarrollo: desde la idea original hasta una versión que funciona correctamente puede ser mucho menor que en otros lenguajes.

A modo de ejemplo veamos un gráfico, que hizo Juan Nunez-Iglesias basado en código de T. P. Robitaille y actualizado por C. Beaumont, correspondiente a la evolución hasta 2016 del uso de Python comparado con otros lenguajes/entornos en el ámbito de la Astronomía.

El uso de Python en comparación con otros lenguajes científicos de alto nivel creció rápidamente durante los últimos años.

_images/counting_programs.png

Un último punto que no puede dejar de mencionarse es que Python es libre (y gratis). Esto significa que cada versión nueva puede simplemente descargarse e instalarse sin limitaciones, sin licencias. Además, al estar disponible el código fuente uno podría modificar el lenguaje –una situación que no es muy probable que ocurra– o podría mirar cómo está implementada alguna función –un escenario bastante más probable– para copiar (o tomar inspiración en) alguna funcionalidad que necesitamos en nuestro código.

Visita y excursión a aplicaciones de Python

Graficación científica en 2D

La biblioteca matplotlib es una de las mejores opciones para hacer gráficos en 2D, con algunas posibilidades para graficación 3D.

_images/curvas_log.png _images/axes_demo.png _images/streamplot_demo_features_00.png _images/polar_legend.png _images/example_stats.png

El mejor lugar para un acercamiento es posiblemente la Galería de matplotlib

El último ejemplo está creado utilizando seaborn, un paquete para visualización estadística (tomado de Scipy Lecture Notes)

Graficación en 3D

Matplotlib tiene capacidades para realizar algunos gráficos en 3D, si no son demasiado complejos. Para realizar gráficos de mayor complejidad, una de las más convenientes y populares bibliotecas/entornos es Mayavi:

_images/galeria_mayavi.png

Programación de dispositivos e instrumentos

Python ha ido agregando capacidades para la programación de instrumentos (osciloscopios, tarjetas, …), dispositivos móbiles, y otros tipos de hardware. Si bien el desarrollo no es tan maduro como el de otras bibliotecas.

_images/pyvisa.png _images/python-arduino.png

Otras aplicaciones

  • Desarrollo web (Django, Cheetah3, Nikola, …)

  • Python embebido en otros programas:

    • Diseño CAD (Freecad, …)

    • Diseño gráfico (Blender, Gimp, …l)


Aplicaciones científicas

Vamos a aprender a programar en Python, y a utilizar un conjunto de bibliotecas creadas para uso científico y técnico:

En este curso vamos a trabajar principalmente con Ipython y Jupyter, y los paquetes científicos Numpy, Scipy y Matplotlib.

Herramientas

Herramientas

Bibliografía

Se ha logrado constituir una gran comunidad en torno a Python, y en particular en torno a las aplicaciones científicas, por lo que existe mucha información disponible. En la preparación de estas clases se leyó, inspiró, copió, adaptó material de las siguientes fuentes:

Accesible en línea

Libros

Otras referencias de interés