Artículos

Aquí Juan Bautista Cabral, de PyAr, ha creado una lista de reproducción en YouTube de los vídeos del track científico de la PyConAr 2012. No os los perdáis 🙂

Meme Python de Año Nuevo 2013

En la primera entrada del año de Pybonacci vamos a «importar» el Meme Python de Año Nuevo. Fue creado en 2009 por Tarek Ziadé, desarrollador Python fundador de la Association Francophone Python y autor de varios libros sobre el lenguaje. Se trata de que copiéis las preguntas y escribáis en vuestros blogs vuestras respuestas. ¡Vamos allá! 🙂

1. ¿Cuál es la aplicación, framework o biblioteca Python más interesante que has descubierto en el 2012?

Sin duda, el más interesante y el que más ha determinado la forma en la que programo con Python ha sido el notebook de IPython, del que ya hablamos en el blog. Además tiene un potencial enorme, hay gente haciendo cosas increíbles con él y está yendo más allá del ecosistema científico. El 2013 va a ser un buen año para IPython 🙂
Leer más »Meme Python de Año Nuevo 2013

Un 2012 de Python científico

Primero de todo, lo más importante, ¡¡¡ha nacido Pybonacci!!!! Un blog dedicado a hablar del uso de Python en el ámbito científico y en español. Si no lo conocéis aún, podéis visitarlo en http://pybonacci.org 🙂

  • Blog (+Twitter, +Fb, +G+) nacido en marzo de 2012
  • Más de 60 artículos publicados
  • Más de 30.000 visitas recibidas
  • Tres autores (esperamos que aumenten en el 2013)
  • Más de 2000 tuits

Venga, hablando en serio, os resumo lo que ha sido este año. Primero veamos las novedades de la base de lo que es Python en el entorno científico, la trinidad: NumPy, matplotlib y SciPy:
NUMPY

MATPLOTLIB

SCIPY

  • Ha salido la versión 0.11 que también es compatible con Python 3.2. Se ha incluido un submódulo dentro de scipy.sparse, se han introducido mejoras en scipy.optimize, scipy.linalg, scipy.interpolate, …

Los tres proyectos se han movido a GitHub, junto con otros, y el desarrollo ha crecido exponencialmente. ¡¡Esto son buenas noticias!!
Leer más »Un 2012 de Python científico

¿Por qué usar netCDF?

Primero de todo empezaremos por el principio
¿Qué es netCDF?
Es un conjunto de librerías (o bibliotecas) y un formato de datos que son:

  • auto-descriptivo ya que incluye información acerca de los datos contenidos en el fichero netCDF
  • independiente de la plataforma
  • podemos acceder a un subconjunto de datos del fichero de forma eficiente
  • permite agregar datos a un fichero ya existente sin necesidad de copiar los datos ya existentes en el fichero
  • puede ser fácilmente compartido ya que una persona puede escribir mientras varias personas pueden leer el mismo fichero.
  • puede ser archivado ya que las versiones previas siempre estarán soportadas por las nuevas versiones

Su actual versión es la 4 y permite leer los ficheros creados con versiones anteriores de netCDF, como se ha comentado anteriormente.
Además es compatible con un subconjunto de HDF5 (del que hablaremos otro día, Francesc, ¿te animas como firma invitada?) pudiendo leer gran cantidad de ficheros en formato HDF5 pero no todos. HDF5 es capaz de abrir cualquier fichero creado con netCDF-4 (que es el modelo mejorado de datos que veremos a continuación). Es decir, un fichero netCDF-4 es un fichero HDF5 pero no a la inversa.
Es además un estándar para varias instituciones como la Open Geospatial Consortium.
¿Cuál es el formato de un fichero netCDF?
El formato no es único, existe un modelo clásico, más sencillo, y el modelo mejorado (llamado netCDF4), más complejo y completo.
Leer más »¿Por qué usar netCDF?

El notebook de IPython

Introducción

Ya hablamos en su momento de IPython, un intérprete de Python con multitud de características avanzadas que lo hacían indispensable para ejecutar sesiones interactivas. Hoy vamos a continuar con lo que habíamos dejado a medias, y vamos a dedicar un artículo al notebook de IPython, una herramienta que está verdaderamente revolucionando la manera en que se utiliza Python en ámbitos científicos y conferencias sobre el lenguaje, como se ha demostrado en la reciente PyData NYC 2012 que se ha celebrado en Nueva York (recuerda que en Pybonacci hemos seleccionado un resumen de charlas de la PyData NYC 2012).
https://twitter.com/richardtguy84/status/262289566009016320
https://twitter.com/ellisonbg/status/261568248993181696
https://twitter.com/dfm/status/262245974334918656
https://twitter.com/TWiecki/status/262267127510216704
Aquí incluimos un vídeo que hemos grabado para mostrar las características fundamentales de IPython, porque ya se sabe que un vídeo vale más que mil imágenes 😉 No olvides suscribirte a nuestro canal en YouTube para futuras creaciones.
http://www.youtube.com/watch?v=C0D9KQdigGk

El notebook de IPython

El notebook de IPython es una interfaz web para IPython, inspirada en los notebooks de Mathematica y Sage. Como puedes leer en esta retrospectiva histórica escrita por Fernando Pérez, la idea de crear una interfaz de este tipo ya existía desde los inicios del proyecto IPython, allá por 2001, y después de muchos años, varios intentos fallidos y habiendo aprendido de la experiencia del propio notebook de Sage, que surgió antes pero estaba mucho menos pulido, fue finalmente presentado en la conferencia EuroSciPy 2011.
Leer más »El notebook de IPython

Lanzando proyectiles (con ayuda de vpython)

La mayoría de vosotros habréis resuelto el típico problema del lanzamiento de un proyectil que describe una trayectoria parabólica. Las ecuaciones que describen el movimiento son:

  • Vector posición

$latex x = v_{0x} t + x_0$
$latex y = -frac{1}{2} g t^{2} + v_{0y} t + y_0$

  • Vector velocidad

$latex v_x = v_{0x}$ con $latex v_{0x} = v_0 cos alpha$
$latex v_y = -g t + v_{0y}$ con $latex v_{0y} = v_0 sin alpha$
Hoy vamos a intentar resolverlo de forma gráfica con la ayuda de python y vpython. La biblioteca vpython une python con una librería gráfica 3D de forma que, como vamos a ver, hacer animaciones 3D sencillas se convierte en un juego.
[sourcecode language=”python”]
import visual as vs
import numpy as np
## valores iniciales (modifícalos bajo tu responsabilidad)
v0 = 20 ## v en m/s
alfa = 60 ## ángulo en grados
vel_fotogramas = 10  ## la velocidad del video
## Constantes
g = 9.81 ## Aceleración de la gravedad
## ecuaciones
v0x = v0 * np.cos(np.deg2rad(alfa))
v0z = v0 * np.sin(np.deg2rad(alfa))
t_total = 2 * v0z / g
x_final = v0x * t_total
## Empezamos con visual python (vpython)
## Creamos el ‘suelo’
suelo = vs.box(pos = (x_final/2., -1, 0),
size = (x_final, 1, 10), color = vs.color.green)
## Creamos el ‘cañón’
canyon = vs.cylinder(pos = (0, 0, 0),
axis = (2 * np.cos(np.deg2rad(alfa)), 2 * np.sin(np.deg2rad(alfa)), 0))
## Creamos el proyectil y una línea que dejará la estela del proyectil
bola = vs.sphere(pos = (0, 0, 0))
bola.trail = vs.curve(color=bola.color)
## Creamos la flecha que indica la dirección del movimiento (vector velocidad)
flecha = vs.arrow(pos = (0, 0, 0),
axis = (v0x, v0z, 0), color = vs.color.yellow)
## texto (ponemos etiquetas para informar de la posición del proyectil)
labelx = vs.label(pos = bola.pos, text= ‘posicion x = 0 m’, xoffset=1,
yoffset=80, space=bola.radius, font=’sans’, box = False,
height = 10)
labely = vs.label(pos = bola.pos, text= ‘posicion y = 0 m’, xoffset=1,
yoffset=40, space=bola.radius, font=’sans’, box = False,
height = 10)
## Animamos todo el cotarro!!!
t = 0
while t <= t_total:
bola.pos = (v0x * t, v0z * t – 0.5 * g * t**2, 0)
flecha.pos = (v0x * t, v0z * t – 0.5 * g * t**2, 0)
flecha.axis = (v0x, v0z – g * t, 0)
bola.trail.append(pos=bola.pos)
labelx.pos = bola.pos
labelx.text = ‘posicion x = %s m’ % str(v0x * t)
labely.pos = bola.pos
labely.text = ‘posicion y = %s m’ % str(v0z * t – 0.5 * g * t**2)
t = t + t_total / 100.
vs.rate(vel_fotogramas)
[/sourcecode]
Voy a explicar brevemente lo que hace el código:
Leer más »Lanzando proyectiles (con ayuda de vpython)