iPython: Manipulate-like command

En Wolfram Mathematica, puedo modificar interactivamente el valor de un parámetro usando el comando Manipulate[] .

Por ejemplo , Manipulate[n, {n, 1, 20}] muestra un control deslizante a través del cual es posible variar el valor de n .

¿Hay alguna forma simple (es decir, algo como una magia o un decorador, como en SAGE ) para lograr el mismo resultado en el portátil IPython?

Actualizar
Esto se agregó en IPython 2.0 (publicado el 1 de abril de 2014), se llama Widgets interactivos y funciona en cuadernos web.

Respuesta original
Este es un trabajo en curso para 2.0 (versión de diciembre, algo). Eche un vistazo a la reunión de IPython-dev en YouTube para ver el progreso. La última reunión del 21 de octubre a las 28min-ish tiene una demostración del widget de John y luego interact con Brian.

No estoy seguro de si esto satisfaría todas sus necesidades, ya que todavía es experimental, pero parece hacer lo que pidió: mire los widgets interactivos estáticos de Jake VanderPlas.

Lo que hice para correr fue lo siguiente:

Obtenga la fuente e instálela:

 git clone https://github.com/jakevdp/ipywidgets pip install ./ipywidgets 

inicie un portátil ipython y experimente con el notebook example.ipynb en el directorio ipywidgets

Hay otro tipo de visualización interactiva, donde están disponibles la panorámica, el zoom y los metadatos (posiblemente más). Es del mismo autor y se informa en su blog D3 Plugins: Truly Interactive Matplotlib en su navegador .

También hay documentos agradables: MPLD3: Llevar Matplotlib al navegador

Para experimentarlo hice más o menos lo mismo:

 git clone https://github.com/jakevdp/mpld3 pip install ./mpld3/ 

Ahora se puede ejecutar el script create_example.py , o incluso mejor, iniciar un ipython notebook y jugar con el mpld3/notebooks/mpld3_demo.ipynb , así como con los atractivos ejemplos de mpld3_plugins publicados en el blog.

Puede que valga la pena señalar que estoy usando la distribución Anaconda de python, que incluye Jinja2; que yo sepa, Jinja2 es un requisito para mpld3.

Estoy de acuerdo en que un decorador de @interact a la sage sería bueno.