{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Python Cient\u00edfico" ] }, { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Damian Avila" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "## REPO: \n", "[https://github.com/damianavila/Python-Cientifico-HCC](https://github.com/damianavila/Python-Cientifico-HCC)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "## INTRO: \n", "[http://damianavila.github.io/Python-Cientifico-HCC/1_Python_Cientifico_Intro.slides.html?theme=sky?transition=zoom#](http://damianavila.github.io/Python-Cientifico-HCC/1_Python_Cientifico_Intro.slides.html?theme=sky?transition=zoom#/)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## [Mi Blog](http://www.damian.oquanta.info)\n", "\n", "## [Mi Twitter](http://twitter.com/damian_avila)\n", "\n", "## [Mi Github](https://github.com/damianavila)\n", "\n", "## [Mi Email](info@oquanta.info)" ] }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "\u00bfQui\u00e9n les habla?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## *de iure*:\n", "\n", "* Lic. en Bioqu\u00edmica. \n", "* Docente Universitario. \n", "* Doctorando en Ciencias Biol\u00f3gicas (escribiendo una tesis inmunol\u00f3gica)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## *de facto*:\n", "\n", "* Desarrollador Python (ponele...).\n", "* Cient\u00edfico de Datos (ponele...).\n", "* Analista Quantitative en Finanzas (ponele...)\n", "* Curioso..." ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "THE OPEN SOURCE REPORT CARD" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "'" ] }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "1. Python cient\u00edfico." ] }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "1.1. Flujo de trabajo de cient\u00edfico." ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.1.1. \u00bfQu\u00e9 hace un cient\u00edfico?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", " \n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* **Observa**." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Genera una **hip\u00f3tesis** sobre el/los fen\u00f3meno/s observado/s." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Dise\u00f1a y realiza un **experimento** (o una **simulaci\u00f3n**) para testear la hip\u00f3tesis." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Obtiene **datos** del experimento (o la simulaci\u00f3n)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* **Procesa** y **visualiza** los datos obtenidos." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Propone un **modelo** para explicar los datos procesados." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Genera **predicciones** a partir del modelo propuesto." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* **Contrasta** (valida) las predicciones con los datos experimentales (o simulados)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* **Comunica** la hip\u00f3tesis, los resultados obtenidos y el modelo propuesto" ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.1.2. \u00bfQu\u00e9 necesita un cient\u00edfico?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Adem\u00e1s de fondos, infraestructura, personal, etc, etc, etc...\n", "\n", "Si a computaci\u00f3n cient\u00edfica nos referimos:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Un lenguaje **f\u00e1cil** de aprender." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Un lenguaje **vers\u00e1til** en su utilizaci\u00f3n." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Un lenguaje con una sintaxis **simple** y de **alto nivel**." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Una colecci\u00f3n de **herramienta b\u00e1sicas** para el tratamiento y visualizaci\u00f3n de datos." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Un \"entorno\" **unificado** e **interactivo**." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " \n", "* Un tiempo de desarrollo **reducido** y un tiempo de ejecuci\u00f3n **r\u00e1pido** (JA JA JA, contate otro...)." ] }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "1.2. Python vs. Otros: ventajas y desventajas." ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.2.1. \u00bfCu\u00e1les son las alternativas?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Lenguajes \"compilados\": C, C++, Fortran.**\n", "\n", "**Ventajas**:\n", "\n", "* R\u00e1pidos.\n", "* Compiladores **super** optimizados.\n", "* Bibliotecas cient\u00edficas **super** optimizadas (desde anta\u00f1o)." ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.2.1. \u00bfCu\u00e1les son las alternativas?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Lenguajes \"compilados\": C, C++, Fortran.**\n", "\n", "**Desventajas**:\n", "\n", "* No hay interactividad durante el desarrollo (necesariamente, hay un paso de compilaci\u00f3n).\n", "* Sintaxis compleja.\n", "* Manejo manual de la memoria." ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.2.2. \u00bfCu\u00e1les son las alternativas?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Lenguajes para \"scripting\": Matlab.**\n", "\n", "**Ventajas**:\n", "\n", "* M\u00faltiples bibliotecas con numerosos algoritmos para la resoluci\u00f3n de diferentes problemas.\n", "* Una r\u00e1pida ejecuci\u00f3n debido a que las bibliotecas est\u00e1n, normalmente, escritas en un lenjuaje compilado.\n", "* Un entorno de desarrollo *agradable* y funcional.\n", "* Soporte comercial disponible." ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.2.2. \u00bfCu\u00e1les son las alternativas?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Lenguajes para \"scripting\": Matlab.**\n", "\n", "**Desventajas**:\n", "\n", "* El lenguaje de base puede ser *restrictivo* para usuarios avanzados.\n", "* \"Show me the money...\"" ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.2.3. \u00bfCu\u00e1les son las alternativas?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**M\u00e1s lenguajes para \"scripting\": Scilab, Octave, R, Julia, etc.**\n", "\n", "**Ventajas**:\n", "\n", "* C\u00f3digo abierto y gratuitos.\n", "* Algunas caracter\u00edsticas pueden ser muy enfocadas y avanzadas (pj: estad\u00edstica y R)." ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.2.3. \u00bfCu\u00e1les son las alternativas?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**M\u00e1s lenguajes para \"scripting\": Scilab, Octave, R, Julia, etc.**\n", "\n", "**Desventajas**:\n", "\n", "* Menos algoritmos disponibles en comparaci\u00f3n a Matlab.\n", "* El lenguaje de base puede ser *restrictivo* para usuarios avanzados.\n", "* Algunas caracter\u00edsticas pueden ser muy enfocadas y avanzadas (pj: gr\u00e1ficos y Gnuplot)." ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.2.4. Python." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ventajas**:\n", "\n", "* Muchas bibliotecas cient\u00edficas.\n", "* Sintaxis simple, que permite escribir c\u00f3digo bien estructurado y f\u00e1cil de leer.\n", "* Muchas bibliotecas **complementarias** que permiten realizar otras tareas adicionales y necesarias.\n", "* C\u00f3digo abierto y gratuito.\n", "* Popularidad.\n", "* Creciente y pujante comunidad soportando el desarrollo y evoluci\u00f3n del lenguaje." ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.2.4. Python." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Desventajas**:\n", "\n", "* Un entorno de desarrollo menos *agradable* comparado con Matlab (**totalmente discutible...**). \n", "* Algunos algoritmos especializados todav\u00eda no se han desarrollado (**pero no falta mucho...**).\n", "* Lenteja... y no refiero a la legumbre (**varias soluciones disponible y en desarrollo**)." ] }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "1.3. El coraz\u00f3n de Python cient\u00edfico." ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.3.1. Requerimientos m\u00ednimos." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* **Python**\n", "\n", "[http://python.org](http://python.org)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* **IPython**, un interprete interactivo avanzado, un web-notebook, una infraestructura para *computaci\u00f3n* en paralelo.\n", "\n", "[http://ipython.org](http://ipython.org)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* **Numpy**, objetos tipo arreglos y rutinas para manipularlos.\n", "\n", "[http://www.numpy.org](http://www.numpy.org)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* **Scipy**, biblioteca para procesamiento de datos de alto nivel: optimizaci\u00f3n, regresi\u00f3n, interpolaci\u00f3n, etc.\n", "\n", "[http://www.scipy.org](http://www.scipy.org)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* **Matplotlib**, visualizaci\u00f3n 2D y 3D: figuras (plots) listos para la publicaci\u00f3n.\n", "\n", "[http://matplotlib.org](http://matplotlib.org)" ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.3.2. Herramientas de control." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "* Software de control de versiones:\n", " * git - [http://git-scm.com](http://git-scm.com)\n", " * mercurial - [http://mercurial.selenic.com](http://mercurial.selenic.com) (`hg`).\n", " * subversion - [http://subversion.apache.org](http://subversion.apache.org) (`svn`)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Repositorios online (p\u00fablicos y privados).\n", " * Github - [http://www.github.com](http://www.github.com)\n", " * Bitbucket - [http://www.bitbucket.com](http://www.bitbucket.com)\n", " * Repositorios privados (por ejemplo, en servers de Universidades)." ] }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "1.4. Obtenci\u00f3n de herramientas." ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.4.1. Cin\u00e9tica de la liberaci\u00f3n de versiones. " ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.4.2. Instalaci\u00f3n espec\u00edfica seg\u00fan el sistema operativo." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* GNU-LINUX\n", "\n", "`apt-get install python-scipy python-matplotlib`\n", "\n", "`apt-get install python-qt4 python-pygments`\n", "\n", "`pip install jinja2`\n", "\n", "`pip install ipython[all]`\n", "\n", "`pip install pandas scikit-learn statsmodels`" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* MAC\n", "\n", "`SciPy Superpack` \n", "\n", "[http://fonnesbeck.github.io/ScipySuperpack](http://fonnesbeck.github.io/ScipySuperpack)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* WINDOWS\n", "\n", "Ver problemas... digo... soluciones integrales." ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "1.4.3. Soluciones integrales." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* [Python(X,Y)](http://code.google.com/p/pythonxy) WINDOWS; GNU-LINUX\n", "* [Spyder](https://code.google.com/p/spyderlib) WINDOWS; OSX; GNU-LINUX\n", "* [EPD Free / Canopy Express](http://www.enthought.com) WINDOWS; OSX; GNU-LINUX\n", "* [Anaconda CE](http://continuum.io) WINDOWS; OSX; GNU-LINUX" ] }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "1.5. Conclusiones." ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "7.1. Presente y Futuro." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Python se ha convertido en el lenguaje de \"elecci\u00f3n\" para adentrarse al \u00e1mbito cient\u00edfico (salvando ciertos *nichos*) debido a la multiplicidad de herramientas que brinda, a la potencialidad en el perfeccionamiento de las mismas y la continua generaci\u00f3n de nuevos m\u00f3dulos cada vez m\u00e1s especializados." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Claro, existen problemas para resolver y algunas cuestiones t\u00e9cnicas que desarrollar (no todo es color de rosa...)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Sin embargo, las perspectivas son muy altas, lo cual se ve reflejado no s\u00f3lo en la proliferaci\u00f3n de cient\u00edficos que usan Python en su trabajo diario, sino tambi\u00e9n en la organizaci\u00f3n de conferencias espec\u00edficas a nivel internacional (SciPy, EuroSciPy, SciPy India, SciPyConAr, etc) y en el aumento del n\u00famero depublicaciones con c\u00f3digo escrito en Python" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* Muchas empresas e industrias se valen de estas mismas herramientas para el desarrollo o an\u00e1lisis de sus procesos productivos.\n" ] }, { "cell_type": "heading", "level": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "7.2. Algunas referencias." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* [scipyar](sci-pyar@googlegroups.com)\n", "* [Turorial de Python Cient\u00edfico](https://github.com/damianavila/SciPyConAr_Python_Cientifico)\n", "* [Python en Ingenieria](https://github.com/damianavila/SciPyConAr_Python_Cientifico)\n", "* [SciPy Lectures](http://scipy-lectures.github.com)\n", "* [Scientific Python Lectures](https://github.com/jrjohansson/scientific-python-lectures)\n", "* [PyVideo](http://pyvideo.org)\n", "* SciPy Conferences: \n", " * [SciPy](http://conference.scipy.org/scipy2013/)\n", " * [EuroSciPy](https://www.euroscipy.org/)\n", " * SciPy India\n", " * [SciPyCon Argentina](http://scipycon.com.ar/)\n", "\n", "Mucha gente: Fernando Perez, Wes Mackinney, Travis Oliphant, Peter Wang, Josua Bloom, Titus Brown, Jake VanderPlas... y muchos m\u00e1s! " ] } ], "metadata": {} } ] }