Your browser doesn't support features required by impress.js, so are presented with simplified version of this presentation.

For the best experience please use latest Chrome or Safari browser. Firefox 10 and Internet Explorer 10 should also handle it.

Introducción a Python Científico.

https://github.com/damianavila/Python_Cientifico

1.1 - ¿Quién les habla?

  • Damián Avila.
  • Bioquímico. Docente. Doctorando.
  • Esencialmente, Curioso...
  • Modela... para entender el mundo.

1.2 - ¿Qué hace un científico?

  • Obtiene datos de un experimento o una simulación.
  • Procesa y visualiza los datos obtenidos.
  • Propone un modelo que explica los datos obtenidos.
  • Genera predicciones a partir del modelo propuesto.
  • Constrasta las predicciones con los datos experimentales.
  • Comunica los resultados obtenidos (presentaciones, papers, libros, etc).

1.3 - ¿Qué necesita un científico?

  • Un lenguaje fácil de aprender.
  • Un lenguaje que tenga versatilidad.
  • Un lenguaje con una sintaxis simple y de alto nivel.
  • Una colección de herramientas básicas para el tratamiento y visualización de datos.
  • Un tiempo de desarrollo reducido y un tiempo de ejecución rápido.

1.4 - ¿Cuáles son las alternativas?

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

Ventajas:

  • Rápidos.
  • Compiladores super optimizados.
  • Bibliotecas científicas optimizadas.

1.4 - ¿Cuáles son las alternativas?

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

Desventajas:

  • No hay interactividad durante el desarrollo y, necesariamente, hay que compilar.
  • Sintaxis compleja.
  • Manejo manual de la memoria.

1.4 - ¿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.4 - ¿Cuáles son las alternativas?

Lenguajes para "scripting": Matlab.

Desventajas:

  • El lenguaje de base puede ser restrictivo para usuarios avanzados.
  • "Hay que poner la papota"

1.4 - ¿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.4 - ¿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.5 - Che... y 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.5 - Che... y 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... (varias soluciones disponible y en desarrollo)

1.6 - Python científico.

  • Python, un leguaje genérico y moderno.
  • IPython, un interprete interactivo avanzado, un web-notebook, una infraestructura para computación en paralelo.
  • Numpy, objetos tipo arreglos y rutinas para manipularlos.
  • Scipy, biblioteca para procesamiento de datos de alto nivel: optimización, regresión, interpolación, etc.
  • Matplotlib, visualización 2D: plots listos para la publicación.

2.1 - IPython.

Es una poderosa herramienta para la computación científica interactiva y exploratoria.

  • Interpretes interactivos poderosos (terminal y basada en Qt).
  • Un web-notebook con las mismas funcionalidades básicas que los interpretes interactivos pero con soporte para video, texto, código, expresiones matematicas y plot embebidos.
  • Soporte para la visualización interactiva de datos y uso de bibliotecas GUI.
  • Herramientas de alta performance para la cumputación en paralelo.

2.2 - Clientes de IPython

  • Consola.
  • Consola Qt.
  • Web-notebook: Es donde escribí esta presentación (rendered by vIPer).

2.3 - Computación en paralelo.

En los últimos 3 años, IPython a desarrollado toda una arquitectura diseñanda específicamente para soportar computación en paralelo.

Un tema muy interesante pero fuera del "scope" de esta charla... si están interesados pueden visitar http://ipython.org

Juguemos un poco...

http://damianavila.github.com/Python_Cientifico/Python_Cientifico_ipython_complete.html

3.1 - Numpy.

  • Python tiene listas, enteros, punto flotante, etc. Para cálculo numérico necesitamos más... allí aparece Numpy.
  • Numpy es un paquete que provee a Python con arreglos multidimensionales de alta eficiencia y diseñados para cálculo científico.
  • Un array puede contener:
    • tiempos discretos de un experimento o simulación.
    • señales grabadas por un instrumento de medida.
    • pixeles de una imagen, etc.

http://damianavila.github.com/Python_Cientifico/Python_Cientifico_numpy_complete.html

4.1 - Scipy.

  • Scipy contiene varias herramientas para realizar tareas comunes en el ambiente científico.
  • Provee de diferentes submodulos específicos para distintas aplicaciones:
    • cluster >>> Vector quantization / Kmeans
    • fftpack >>> Fourier transform
    • integrate >>> Integration routines
    • interpolate >>> Interpolation

4.1 - Scipy.

  • Provee de diferentes submodulos específicos para distintas aplicaciones:
    • io >>> Data input and output
    • linalg >>> Linear algebra routines
    • maxentropy >>> Routines for fitting maximum entropy models
    • ndimage >>> n-dimensional image package
    • odr >>> Orthogonal distance regression
    • optimize >>> Optimization

4.1 - Scipy.

  • Provee de diferentes submodulos específicos para distintas aplicaciones:
    • signal >>> Signal processing
    • sparse >>> Sparse matrices
    • spatial >>> Spatial data structures and algorithms
    • special >>> Any special mathematical functions
    • stats >>> Statistics
  • Scipy está basado y hace un uso extensivo de los arreglos provistos por Numpy.

http://damianavila.github.com/Python_Cientifico/Python_Cientifico_scipy_complete.html

5.1 - Matplotlib.

  • Matplotlib es el paquete más usado en la comunidad de Python para graficar en 2D. Provee una visualización rápida de los datos a analizar y las figuras obtenidas (en varios formatos diponibles) son publicables.
  • pylab provee de una interface procedural a la librería matplotlib (orientada a objetos), con una sintaxis muy cercana a la disponible en Matlab.
  • IPython provee un modo (--pylab) que permite disponer de las figuras durante la sesión interactiva.

http://damianavila.github.com/Python_Cientifico/Python_Cientifico_matplotlib_complete.html

5.3 - Otros tipos de plots: Galería.

http://matplotlib.sourceforge.net/gallery

6 - Herramientas avanzadas.

http://pandas.pydata.org

http://statsmodels.sourceforge.net

http://scikit-learn.org/stable

7- Performance

8- Obtención de las herramientas.

  • GNU-LINUX

$ sudo apt-get install python-scipy python-matplotlib

$ sudo pip install pandas scikit-learn statsmodels

$ sudo pip install ipython[zmq,qtconsole,notebook,test]

$ sudo apt-get install python-qt4 python-pygments

8- Obtención de las herramientas.

9- Ejemplos y materiales.

http://jakevdp.github.com/blog/2012/08/18/matplotlib-animation-tutorial

http://scipy-lectures.github.com

http://pyvideo.org/category/18/pydata-2012

Videos de conferencias Scipy en Youtube.

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

10- Conclusiones.

  • Python se ha convertido en el lenguaje de elección dentro del ámbito científico (salvando ciertos nichos y en las ciencias de la computación) 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...).

10- Conclusiones.

  • 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, etc) y en el aumento del número de publicaciones 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.

11 - Contacto.

Damián Avila

y por otros lados también...