Artículos

Matrópolis

Aquí siempre andamos trasteando con código. Para relajar un poco el lado técnico del blog hoy os traemos una frikada que sabemos os gustará. Ya lo puso Juanlu hace unos días por nuestro twitter pero si no lo has visto aún, aquí lo tienes: “Matropolis: Científicos del mundo uníos (también… Leer más »Matrópolis

The amazing Spyder, man!!!

Spyder es la abreviación de Scientific PYthon Development EnviRonment. Según la documentación oficial, Spyder es un potente entorno de desarrollo interactivo para Python con edición avanzada, ‘testeo’ interactivo y capacidades de introspección y depuración (debugging) y, esto es lo que nos interesa, un entorno de computación numérica gracias al soporte de IPython y de populares librerías como numpy, scipy y matplotlib (todas conocidas ya por aquí).
Se puede instalar tanto en Linux como en Windows (y en Mac para los amantes de Alcatraz). En el siguiente enlace podéis ver documentación para la instalación y los requerimientos previos para poder instalarlo.
En un vistazo general podemos ver que es muy adaptable a nuestras necesidades (o manías) permitiendo:

  • definir accesos rápidos,
  • Gestionar el PYTHONPATH de manera visual

  • Acceso a la documentación de las librerías más importantes (Numpy, Scipy, Matplotlib,…) desde la ayuda del propio IDE
  • Acceso directo a herramientas (y documentación) Qt.
  • Configuración del coloreado de la sintáxis
  • Podemos colocar los paneles como mejor nos convenga. En general, yo lo configuro con un explorador de archivos a la izquierda, el editor a la derecha y abajo cosas útiles como consolas, el historial, y el explorador de variables:
  • Pero con el mismo ratón se puede recolocar todo de forma sencilla y se puede elegir que aparece en la pantalla desde el menú ‘view | Windows and toolbars’:

Puedes ver más pantallazos en el siguiente enlace.
El editor en sí permite resaltar código Python, C/C++ y Fortran, completado de código, permite analizar el código con pylint, depurar con pdb (o winpdb), avisos y errores en tiempo real con pyflakes,… Lo mínimo que lleva hoy en día cualquier editor potente.
Leer más »The amazing Spyder, man!!!

Probando numba: compilador para Python basado en LLVM

Introducción

Hace unos días Travis E. Oliphant, creador de NumPy e importante contribuidor de SciPy entre otras muchas cosas, anunciaba en su Twitter y en su blog la liberación de numba 0.1, un proyecto que pretende ser el mejor compilador orientado a arrays del mundo, como puedes ver en la presentación que dio en la conferencia SciPy 2012 celebrada en Austin, Texas (vídeo y diapositivas).
https://twitter.com/teoliphant/status/235789560678858752
Aunque el proyecto está en una fase bastante precaria todavía y hay unos cuantos fallos pendientes de solucionar todavía, hemos hecho algunas pruebas y los resultados son impresionantes. Vamos a hablar un poco de numba y a explicar cómo puedes probarlo tú mismo.
Leer más »Probando numba: compilador para Python basado en LLVM

Introducción a IPython: mucho más que un intérprete de Python

Introducción

Hoy ha llegado el momento de hablar de IPython, aprovechando que acaba de salir la versión 0.13 después de 6 meses de duro trabajo. IPython es un intérprete de Python con unas cuantas características avanzadas que hemos usado desde que empezamos a escribir en el blog y que, sinceramente, si no conoces todavía no sé a qué estás esperando 😛
Decir que IPython es solo un intérprete de Python es, no obstante, quedarse muy corto. Actualmente multitud de paquetes utilizan IPython como biblioteca o como intérprete interactivo, siendo el ejemplo más notable el proyecto Sage. IPython es multiplataforma, es software libre, tiene una enorme comunidad detrás, un desarrollo constante y bien organizado y es extremadamente potente. ¿Qué más se le puede pedir? 🙂

Captura de la interfaz web (notebook) de IPython, extraída de su web http://ipython.org/ipython-doc/rel-0.13/whatsnew/version0.13.html © Copyright 2008, The IPython Development Team

Breve historia

IPython comenzó en 2001 de la mano de Fernando Pérez, investigador colombiano, cuando completaba su tesis sobre Física de partículas en la Universidad de Colorado. Pérez utilizaba mucho los notebooks de Mathematica, y el intérprete de Python le parecía «un juguete» en comparación[1]. A partir de su propio trabajo y de otros dos proyectos, LazyPython e IPP, surgió lo que años después conocemos por IPython[2].
Lo importante para nosotros de este programa es que nació en un ámbito científico y de la mano de investigadores, pues, como el propio Fernando Pérez hizo notar, el flujo de trabajo en este tipo de ámbitos demanda un entorno interactivo. Ahí tenemos a MATLAB, Maple y Mathematica.
Leer más »Introducción a IPython: mucho más que un intérprete de Python

Presentando Astropy: herramientas básicas para Astronomía y Astrofísica en Python

Ayer se liberó Astropy 0.1, la primera versión de este paquete Python que aspira a unificar las herramientas y utilidades básicas necesarias en astronomía y astrofísica. Puedes leer el anuncio en la lista de correo de Astropy. El lenguaje Python está teniendo bastante impulso en ámbitos científicos durante los últimos… Leer más »Presentando Astropy: herramientas básicas para Astronomía y Astrofísica en Python

Sage: software matemático libre como alternativa

Seguro que muchos de vosotros ya conocéis Sage: un proyecto cuyo nada ambicioso objetivo es

Crear una alternativa de código abierto, libre y viable a Magma, Maple, Mathematica y MATLAB.

Desde luego hay que admitir que como declaración de intenciones no está mal. Hechas las presentaciones, ¿qué más podemos decir sobre Sage?

Sage comenzó en 2004 como un proyecto personal de William Stein, profesor de matemáticas en la Universidad de Washington, quien, como explica en su blog, estaba frustrado por no poder solucionar las limitaciones de Magma al no ser un programa libre. Stein se dio cuenta de que, aunque crear un sistema como Magma o Maple llevaría años con un equipo de desarrolladores voluntarios partiendo de cero, ya había numerosos paquetes de código abierto escritos en diferentes lenguajes enfocados a diversas áreas matemáticas. Así que decidió unir todos estos paquetes utilizando Python (en este momento son cerca de 100) para crear un enorme software matemático para crear Sage. En esto se diferencia de otros proyectos como SymPy, del que ya hemos hablado en este blog.
Leer más »Sage: software matemático libre como alternativa

Python es lento

La programación científica consiste, en su mayor parte, en cálculos numéricos intensos. CPU en estado puro. Un lenguaje interpretado es, por construcción, más lento que su homólogo compilado, por lo que puede parecer un contrasentido usar Python para aplicaciones «pesadas».  Estamos perdiendo el tiempo, ¿o no?
Muchos programas científicos se ejecutan sólo una vez, son un cálculo concreto que no hará falta repetir. La mayor parte del tiempo del cálculo no es la ejecución del programa, sino escribirlo, trabajo de un humano. Aquí es donde entran las bondades de Python: es sencillo, rápido de escribir, y potente como el que más. Y, por lo sencillo que eso, aunque sea de naturaleza lenta (o precisamente por eso), se han creado muchas herramientas para mejorar su eficiencia de formas elegantes y pythónicas.
Muchas críticas sobre la lentitud de Python adolecen de alguno de estos problemas:

  • Benchmarks irreales o incorrectos: ¿quién necesita un programa para imprimir el primer millón de números naturales?
  • Desconocimiento del lenguaje. A veces hay formas mejores de hacer las cosas, más sencillas y óptimas.
  • Se limitan a la biblioteca estándar, que se queda coja para el cálculo numérico (como veremos más adelante).
  • No tienen en cuenta el tiempo necesario para escribirlo y depurarlo. Cuanto más largo sea el programa, más difícil será encontrar los problemas o añadirle nuevas funcionalidades (tiempo del programador).
  • Por lo tanto, usar un lenguaje de más alto nivel permite, a igualdad de inteligencia, tiempo y habilidad, crear un programa potencialmente más complejo y eficiente.
  • No son guays (pero nosotros sí).Leer más »Python es lento