numpy

Instala pypy 5.0 y numpypy en un virtualenv y juega con Jupyter

Hoy voy a mostrar como usar la última versión de pypy y numpypy en vuestro linux. Para instalar pypy usaremos la versión portable creada por squeaky-pl. Numpypy lo instalaremos en un entorno virtual juntamente con Jupyter para poder hacer las pruebas en un entorno más amigable que la consola de… Leer más »Instala pypy 5.0 y numpypy en un virtualenv y juega con Jupyter

C elemental, querido numba

Volvemos al torneo del rendimiento!!! Recapitulando. Un artículo sobre Cython donde conseguíamos mejoras de velocidad de código Python con numpy arrays de 40x usando Cython desembocó en mejoras de 70x usando numba. En esta tercera toma vamos a ver si con Cython conseguimos las velocidades de numba tomando algunas ideas… Leer más »C elemental, querido numba

Comprobando presencia de subconjuntos dentro de conjunto de forma eficiente

Hoy estaba trabajando con fechas y tenía que encontrar subconjuntos de fechas que estaban presentes o no en otros conjuntos. Numpy nos ofrece varias funciones de ayuda para comprobar este tipo de cosas. Ahora mismo se me vienen a la cabeza numpy.in1d y numpy.setdiff1d. El tema es que necesitaba hacer… Leer más »Comprobando presencia de subconjuntos dentro de conjunto de forma eficiente

¿Cómo trabajar con arrays de binarios en Python?

Esta semana vamos con una pregunta de Gonzalo, que nos dice por email:

Saludos. Últimamente he estado trabajado en python y me gusta mucho. En estos momentos estoy haciendo un algoritmo genético con codificación en numeros binarios utilizando bitset de C++. ¿Tendran información acerca de como trabajar con cadenas de binarios en python? Gracias y Felicidades por el blog.

He investigado un poco acerca de bitset en la referencia de C++, y leo que se trata básicamente de un array de valores booleanos, optimizados para su almacenamiento en memoria.
Leer más »¿Cómo trabajar con arrays de binarios en Python?

Leer datos de Arduino desde Python

Introducción

En este artículo vamos a ver cómo leer datos procedentes de una plataforma Arduino con Python. Para quienes no lo conozcáis, Arduino es una plataforma de hardware libre concebida para crear prototipos de manera rápida y fácil usando componentes electrónicos. Gracias a Arduino vamos a alejarnos un poco de lo que solemos ver en este blog, que es solo software, y vamos a poder interactuar con el mundo real de una manera más directa.
Arduino Uno
Este artículo nace gracias a mi reciente incorporación a Aerobot, el club de robótica de mi escuela, donde iré explorando las posibilidades de Arduino y Python 🙂
En esta entrada se han usado python 3.3.3, numpy 1.8.0, pyserial 2.7 y matplotlib 1.3.1.

Prefacio: ¿cómo funciona?

En este artículo no vamos a ver en detalle qué es Arduino o el lenguaje con el que se programa. Para ello os remito a gente que sabe mucho más que nosotros: al final del artículo incluyo unos enlaces que os pueden interesar si queréis profundizar en este tema. Sin embargo, sí que vamos a explicar brevemente cómo es el proceso de escribir un programa para Arduino, por razones que en seguida veremos.
Tal y como se detalla en la documentación, el proceso de compilación en Arduino funciona a grandes rasgos de la siguiente manera:

  1. Se escribe un programa (sketch) en el IDE de Arduino en C o C++.
  2. El IDE comprueba que la sintaxis es correcta y añade #include "Arduino.h" y una función main() propia de la placa.
  3. El programa se compila con avr-gcc y se manda el binario a la placa.
  4. Una vez Arduino tiene el programa y mientras esté alimentado, el programa se ejecutará, normalmente de manera indefinida.

Esta explicación viene para aclarar que, al menos en este artículo, no vamos a programar nuestra placa en Python. Por el proceso que hemos visto, las únicas maneras de hacer esto serían:

  • Traducir un subconjunto de Python a C/C++, compilarlo y subirlo a la placa. Después de una búsqueda rápida en Google no tengo noticias de que nadie haya intentado esto.
  • Escribir un sketch que defina un protocolo de comunicación entre Arduino y Python. Este es el enfoque tomado por estos proyectos:
    • https://github.com/vascop/Python-Arduino-Proto-API-v2
    • https://github.com/thearn/Python-Arduino-Command-API
    • https://github.com/lekum/pyduino

Con el segundo método no tenemos disponibles todas las funciones de Arduino, de modo que solo sirve para prototipar programas. Hoy me voy a olvidar de esto y voy a usar Arduino para programar la placa y Python para obtener los datos.
Leer más »Leer datos de Arduino desde Python