Python Científico

¿Quién les habla?

de iure :

  • Lic. en Bioquímica.
  • Docente Universitario.
  • Doctorando en Ciencias Biológicas (escribiendo una tesis inmunológica).

de facto :

  • Desarrollador Python (ponele...).
  • Científico de Datos (ponele...).
  • Analista Quantitativo en Finanzas (ponele...)
  • Curioso...

1. Python científico.

1.1. Flujo de trabajo de científico.

1.1.1. ¿Qué hace un científico?

  • Observa.
  • Genera una hipótesis sobre el/los fenómeno/s observado/s.
  • Diseña y realiza un experimento (o una simulación) para testear la hipótesis.
  • Obtiene datos del experimento (o la simulación).
  • Procesa y visualiza los datos obtenidos.
  • Propone un modelo para explicar los datos procesados.
  • Genera predicciones a partir del modelo propuesto.
  • Contrasta (valida) las predicciones con los datos experimentales (o simulados).
  • Comunica la hipótesis, los resultados obtenidos y el modelo propuesto

1.1.2. ¿Qué necesita un científico?

Además de fondos, infraestructura, personal, etc, etc, etc...

Si a computación científica nos referimos:

  • Un lenguaje fácil de aprender.
  • Un lenguaje versátil en su utilización.
  • Un lenguaje con una sintaxis simple y de alto nivel.
  • Una colección de herramienta básicas para el tratamiento y visualización de datos.
  • Un "entorno" unificado e interactivo.
  • Un tiempo de desarrollo reducido y un tiempo de ejecución rápido (JA JA JA, contate otro...).

1.2. Python vs. Otros: ventajas y desventajas.

1.2.1. ¿Cuáles son las alternativas?

Lenguajes "compilados": C, C++, Fortran.

Ventajas:

  • Rápidos.
  • Compiladores super optimizados.
  • Bibliotecas científicas super optimizadas (desde antaño).

1.2.1. ¿Cuáles son las alternativas?

Lenguajes "compilados": C, C++, Fortran.

Desventajas:

  • No hay interactividad durante el desarrollo (necesariamente, hay un paso de compilación).
  • Sintaxis compleja.
  • Manejo manual de la memoria.

1.2.2. ¿Cuáles son las alternativas?

Lenguajes para "scripting": Matlab.

Ventajas:

  • Múltiples bibliotecas con numerosos algoritmos para la resolución de diferentes problemas.
  • Una rápida ejecución debido a que las bibliotecas están, normalmente, escritas en un lenjuaje compilado.
  • Un entorno de desarrollo agradable y funcional.
  • Soporte comercial disponible.

1.2.2. ¿Cuáles son las alternativas?

Lenguajes para "scripting": Matlab.

Desventajas:

  • El lenguaje de base puede ser restrictivo para usuarios avanzados.
  • "Show me the money..."

1.2.3. ¿Cuáles son las alternativas?

Más lenguajes para "scripting": Scilab, Octave, R, Julia, etc.

Ventajas:

  • Código abierto y gratuitos.
  • Algunas características pueden ser muy enfocadas y avanzadas (pj: estadística y R).

1.2.3. ¿Cuáles son las alternativas?

Más lenguajes para "scripting": Scilab, Octave, R, Julia, etc.

Desventajas:

  • Menos algoritmos disponibles en comparación a Matlab.
  • El lenguaje de base puede ser restrictivo para usuarios avanzados.
  • Algunas características pueden ser muy enfocadas y avanzadas (pj: gráficos y Gnuplot).

1.2.4. Python.

Ventajas:

  • Muchas bibliotecas científicas.
  • Sintaxis simple, que permite escribir código bien estructurado y fácil de leer.
  • Muchas bibliotecas complementarias que permiten realizar otras tareas adicionales y necesarias.
  • Código abierto y gratuito.
  • Popularidad.
  • Creciente y pujante comunidad soportando el desarrollo y evolución del lenguaje.

1.2.4. Python.

Desventajas:

  • Un entorno de desarrollo menos agradable comparado con Matlab (totalmente discutible...).
  • Algunos algoritmos especializados todavía no se han desarrollado (pero no falta mucho...).
  • Lenteja... y no refiero a la legumbre (varias soluciones disponible y en desarrollo).

1.3. El corazón de Python científico.

1.3.1. Requerimientos mínimos.

  • IPython, un interprete interactivo avanzado, un web-notebook, una infraestructura para computación en paralelo.

http://ipython.org

  • Numpy, objetos tipo arreglos y rutinas para manipularlos.

http://www.numpy.org

  • Scipy, biblioteca para procesamiento de datos de alto nivel: optimización, regresión, interpolación, etc.

http://www.scipy.org

  • Matplotlib, visualización 2D y 3D: figuras (plots) listos para la publicación.

http://matplotlib.org

1.3.2. Herramientas de control.

1.4. Obtención de herramientas.

1.4.1. Cinética de la liberación de versiones.

1.4.2. Instalación específica según el sistema operativo.

  • GNU-LINUX

apt-get install python-scipy python-matplotlib

apt-get install python-qt4 python-pygments

pip install jinja2

pip install ipython[all]

pip install pandas scikit-learn statsmodels

  • WINDOWS

Ver problemas... digo... soluciones integrales.

1.4.3. Soluciones integrales.

1.5. Demo

1.6. Conclusiones.

1.6.1. Presente y Futuro.

  • Python se ha convertido en el lenguaje de "elección" para adentrarse al ámbito científico (salvando ciertos nichos) debido a la multiplicidad de herramientas que brinda, a la potencialidad en el perfeccionamiento de las mismas y la continua generación de nuevos módulos cada vez más especializados.
  • Claro, existen problemas para resolver y algunas cuestiones técnicas que desarrollar (no todo es color de rosa...).
  • Sin embargo, las perspectivas son muy altas, lo cual se ve reflejado no sólo en la proliferación de científicos que usan Python en su trabajo diario, sino también en la organización de conferencias específicas a nivel internacional (SciPy, EuroSciPy, SciPy India, SciPyConAr, etc) y en el aumento del número depublicaciones con código escrito en Python
  • Muchas empresas e industrias se valen de estas mismas herramientas para el desarrollo o análisis de sus procesos productivos.

1.6.2. Algunas referencias.

Mucha gente: Fernando Perez, Wes Mackinney, Travis Oliphant, Peter Wang, Josua Bloom, Titus Brown, Jake VanderPlas... y muchos más!

1.6.3. Otros proyectos para echarle un ojo...