Wednesday, February 20, 2019

Python como alternativa a Matlab

Introducción

Los estudiantes de ciencias e ingeniería, deberán utilizar algún lenguaje de programación que les permita realizar cálculos numéricos para resolver diferentes problemas técnicos a lo largo de su carrera y, muy probablemente, cuando se desempeñen en su vida profesional.

Gracias a los convenios y bajos precios que las universidades realizan con Microsoft, los estudiantes pueden acceder a licencias con toolboxes incluidos; sin embargo, ahora que muchos tienen sus computadoras personales, se encuentran en la tentación de piratear programas como Matlab en lugar de comprar licencias individuales, dados sus altos costos de pago en licencia personal.

Al buscar diferentes alternativas a Matlab, de preferencia en uso libre, se tienen varias alternativas pero Python tiene la particularidad de instalarse en múltiples sistemas operativos, encontrarse ampliamente difundido respecto de otros lenguajes de programación por su amigabilidad, y muchas ventajas.

En el campo de la ciencias, Python ha desarrollado librerías especializadas para el análisis numérico, manipulación simbólica de variables y bases de datos, altamente competitivas y optimizadas para su rápida ejecución, comparables a los precompilados de forma nativa en C++.

En tal sentido, se propone que los estudiantes, ingenieros y científicos, puedan utilizar Python para el cálculo de resultados en sus investigaciones, como una alternativa libre al pago de programas con licencia.

¿Por qué utilizar un programa en forma pirata, si existe una alternativa amigable, ampliamente difundida y que cumple con todas las expectativas del primero?

Comparación general

Las diferencias son notables entre ambas opciones. Algunas de ellas se presentan en la tabla 1.

Tabla 1: Comparación de elementos generales entre Matlab y Python

 

Comparaciones adicionales se pueden encontrar en este sitio y razones para utilizar Python en lugar de Matlab para aplicaciones científicas, se pueden encontrar aquí.

La depuración de programas resulta ser una tarea muy tediosa, pero gracias a esta funcionalidad de algunos IDE, es posible corregir errores rápidamente para lograr un programa totalmente funcional. PyCharm es una aplicación que permite, de una manera amigable, depurar el código fácilmente. Una muestra del entorno gráfico se presenta en la figura 1.

Fig. 1 Entorno visual de PyCharm, utilizando Python3 como intérprete.


Librerías especializadas

Para el 2017, Python ha desarrollado 17 librerías dedicadas al análisis científico, siendo las más utilizadas Numpy, Scipy y Pandas.

Numpy.

Es el paquete fundamental para el análisis numérico. Está fundamentado en la manipulación de matrices, lo cual es muy importante, porque el código está optimizado para utilizar el mayor potencial de los registros que posee el microprocesador y su memoria caché para generar resultados rápidamente.

Entre sus funciones, puede generar datos con formatos definidos por el usuario y no limitarse a enteros o flotantes con signo o sin signo. La documentación que posee es amplia y puede accederse en línea con un rápido motor de búsqueda o puede descargarse tanto en formato PDF como HTML, con la posibilidad en esta última de buscar información de la misma forma que en línea.

Puede verse el conjunto de funciones que incluye Numpy en este enlace y la comparación de algunos ejemplos con Matlab en la tabla 2.

Tabla 2: Comparación de funciones en librería Numpy para la manipulación de matrices entre Matlab y Python

Tanto matlab como python poseen una cantidad suficiente de comandos para manipular matrices y son bastante parecidas. Dado que matlab suele ser más conocido, el siguiente enlace brinda más información sobre el uso de numpy.

Scipy.

Las funciones que posee Scipy son complementarias a las que ofrece Numpy, ya que incluye funciones trigonométricas, trascendentales y para procesamiento de señales entre muchas otras, como se muestra en el siguiente enlace.

Tabla 3: Comparación de funciones diversas en librería Scipy entre Matlab y Python.

 Pandas.

Es una librería bajo licencia BSD20 de código abierto, que posee estructuras de alto desempeño, fáciles de utilizar con herramientas de análisis utilizadas en el entorno de programación de Python. Pandas es un proyecto auspiciado por NumFocus, lo cual asegura el éxito en su desarrollo como un proyecto de código abierto a nivel mundial y hace posible que pueda recibir donaciones.

Aunque Python ha mostrado ser una excelente herramienta para conversión y manipulación de datos, no lo ha sido para el análisis y el modelaje. En tal sentido, Pandas llena este vacío, posibilitando completamente el trabajo de análisis de datos Se incluye un video introductorio de Pandas en este enlace.

Tabla 4: Acceso a base de datos en formato CSV.

 Un ejemplo completo de aplicación de Pandas puede encontrarse en este enlace. Python posee una cantidad suficiente de librerías para que científicos, ingenieros y estudiantes, puedan adquirir, procesar y almacenar los datos de su campo de investigación.

Conclusiones

  • Python es un lenguaje de programación ampliamente difundido, que no solamente puede utilizarse para investigaciones científicas gracias a su gran variedad de librerías, sino que puede aplicarse en todo aquello que requiera programación.
  • Aunque Python, por ser un lenguaje interpretado y no compilado, de forma inmediata no tiene la misma velocidad de ejecución que C++; sin embargo, aplicación de paquetes como Cython y Pypy logran velocidades comparables, lo cual permite que el usuario continúe usando el código Python para sus aplicaciones.
  • Los diferentes entornos de programación IDE que utilizan Python como intérprete, son bastante amigables y permiten una gran variedad de funciones, lo cual motiva el uso de este lenguaje.
  • Python, al ser un lenguaje de programación libre, se encuentra al alcance de estudiantes y profesionales de bajos recursos, evitando utilizar otros como Matlab en forma pirata.

Preguntas motivadoras

  •  ¿Es probable que los estudiantes, una vez graduados como ingenieros, paguen una licencia de Matlab para cálculos en aplicaciones profesionales?
  • ¿Es difícil aprender a programar en Python una vez se sabe la programación básica en Matlab?
  • ¿Por qué razón Python ha ganado mucha popularidad en los últimos años?

Lecturas recomendadas

  • https://wiki.python.org/moin/NumericAndScientific
  • https://www.datasciencegraduateprograms.com/python/
  • https://www.stat.washington.edu/~hoytak/blog/whypython.html
  • https://www.invensis.net/blog/it/applications-of-python-in-real-world/
  • https://www.researchgate.net/publication/
    237837754_Python_in_Computational_Science_Applications_and_Possibilities
  • https://softwareengineering.stackexchange.com/questions/138643/why-is-python-used-for-high-performance-scientific-computing-but-ruby-isnt
  • https://www.mastersindatascience.org/data-scientist-skills/python/
  • https://www.enthought.com/product/canopy/
  • https://medium.freecodecamp.org/what-can-you-do-with-python-the-3-main-applications-518db9a68a78
  • https://physics.nyu.edu/pine/IntroPythonSciEngPINEsample.pdf






1 comment:

  1. Muy útil la información, la comparativa es bastante reducida y al tener el documento pdf empotrado dificulta la lectura, ya que no puede desagregarse lo que implica utilizar ampliaciones y usar los cursores.

    ReplyDelete