Explore Linux como una plataforma de computación científica

Aplaste números con Sage y Python

Linux® es una excelente plataforma para computación científica y es fuertemente utilizada por la comunidad académica para diversas tareas. Mientras muchos proyectos de fuente abierta resuelven aplicaciones específicas, el proyecto matemático Sage entrega una capacidad más genérica para resolver problemas. Python es el principal lenguaje para muchas de las aplicaciones científicas de más alto perfil, que es el tema de este artículo.

Paul Ferrill, CTO, ATAC

Paul Ferrill ha trabajado como escritor en el rubro de la informática por más de 20 años.Obtuvo su primer trabajo en la escritura de reseñas enPC Magazine sobre productos como LANtastic y las primeras versiones de Novell Netware. Paul posee una Licenciatura y una Maestría en Ingeniería Eléctrica y ha escrito software para tantas plataformas y arquitecturas informáticas que es difícil recordar.



12-11-2012

Linux en la comunidad científica

No es de sorprender que Linux tenga una presencia sustancial en la comunidad científica. Abundan soluciones desde clústeres de computación de alto desempeño, hasta software de visualización. Existe incluso una distribución Linux completa basada en Red Hat Enterprise Linux, dirigida a la computación científica, llamada adecuadamente Scientific Linux.

Sage y Enthought Python Distribution

Este artículo analiza dos formas diferentes de usar una estación de trabajo Linux para la computación científica. La primera es el sistema matemático de fuente abierta Sage y la segunda es la Enthought Python Distribution (EPD). Ambas utilizan numerosas herramientas centrales Python de fuente abierta bajo la superficie, para realizar el trabajo pesado. Si desea probarlas, instale las piezas individuales usando el gestor de software Ubuntu.

Sage es la más integral de las dos. Es más un shell sobre cierto número de diferentes motores subyacentes. Desde la línea de comandos Sage es posible incluso interactuar con productos comerciales como MATLAB o Mathematica. En el protocol Sage usted esencialmente interactúa con IPython, con acceso a todos sus recursos. Usted también debe pensar en términos de objetos y métodos cuando comience a explorar las capacidades de Sage. Sage incluye numerosos sistemas computarizados de álgebra y le permite al usuario interactuar con ellos desde la línea de comandos.

Es importante notar que Sage se basa en Python pero que pre-analiza cada enunciado antes de pasarlo al intérprete Sage. Esto puede causar algo de confusión cuando se observan comandos Sage interactivos simples. La justificación para este comportamiento es un deseo de hacer que la escritura de los comandos en Sage sea tan intuitiva como sea posible, desde un sentido matemático. Un buen ejemplo es el símbolo para exponenciales. En Python puro usted debe escribir 2**4 para elevar dos a la cuarta potencia. En Sage usted utiliza el símbolo de flecha hacia arriba (^), como en 2^4. Sage también maneja algunas operaciones, como la división de enteros, de forma diferente a Python básico.

NumPy y SciPy

Las dos piezas mejor conocidas del rompecabezas subyacente tanto para Sage como para EDP son NumPy y SciPy. Ambos proyectos han estado rondando desde mediados hacia finales de los años 90 e iniciaron originalmente con Travis Oliphant, quien trabaja ahora en Enthought. NumPy proporciona los métodos numéricos esenciales para manipular arreglos y matrices. SciPy depende de NumPy para su estructura básica de datos de array y contiene un amplio rango de módulos para todo, desde álgebra lineal hasta procesamiento de señales. Enthought es un patrocinador de ambos y continúa contribuyendo fuertemente para nuevas publicaciones.


Instalando Sage

Hay varias opciones disponibles para instalar Sage. Para observar Sage sin instalarlo físicamente es posible usar una versión de CD en vivo. También es posible ejecutar el CD en vivo en una máquina virtual como Oracle VM VirtualBox o VMware Player. Este artículo muestra la instalación de Sage tanto en una máquina física como en una virtual que ejecuten el release más reciente de Ubuntu (12.04).

Máquina física

Instalar Sage desde la fuente es el método más confiable para establecer y ejecutar Ubuntu 12.04, dado que el sistema operativo se publicó recientemente. Descargue la tarball fuente y desempaquétela en un directorio apropiado. También es posible instalar algunos prerrequisitos antes de la compilación, lo cual puede hacer con los siguientes comandos:

sudo apt-get install build-essential gfortran
sudo apt-get install texlive xpdf evince

sudo apt-get install tk8.5-dev

Después de tener instalados los prerrequisitos, usted debe estar listo para desarrollar Sage, el cual es posible iniciar con el siguiente comando:

make

En este punto, puede ir y ver una película o tomar una siesta. El proceso completo de dessarrollo puede tardar varias horas en una máquina de escritorio típica. Usted debe ver una pantalla como la de la Figura 1 si todo compila correctamente.

Figura 1. Pantalla de compilación de Sage
Screen capture of the completed Sage build process

Máquina virtual

Instalar una máquina virtual es una buena opción si usted es menos aventurero(a) y simplemente desea comenzar a utilizar Sage. Hay un paquete Open Virtualization Archive (OVA) disponible para descarga en el sitio Sage, junto con paquetes binarios para Fedora 16 y Ubuntu 10.04.3. OVA es un paquete de archivo individual (esencialmente un archivo tar) que contiene todos los archivos necesarios para iniciar la máquina virtual en el Open Virtualization Format (OVF).


Usando Sage

Cuando tenga Sage instalado, estará listo(a) para comenzar su recorrido de descubrimiento y exploración matemática. Sage tiene tanto una interfaz de línea de comandos como una basada en web.

Interfaz de línea de comandos

Para iniciar la versión de línea de comandos desde el directorio donde usted compiló Sage, simplemente escriba el siguiente comando:

./sage

La Figura 2 Muestra un ejemplo del intérprete Sage y algunas interpretaciones matemáticas mencionadas antes.

Figura 2. Interfaz de línea de comandos Sage e interpretaciones matemáticas
Screen capture of the Sage command-line interface with mathematical interpretations

La diferencia en la división de enteros tiene que ver con la forma en que Python maneja el tipo de operación (entero, flotante, etc). En Python, la expresión 2/3 asigna un resultado entero que redondea hacia cero. Sage trata el operador de división como un constructor para números racionales, lo que significa que es posible efectuar operaciones sobre fracciones casi de la misma forma que usted lo hace en el papel. Por ejemplo, si usted escribe 2/3 + 2/3 en el protocol de Sage, obtendrá el resultado 4/3. Si escribe lo mismo en Python, el resultado es 0. Es posible forzar implícitamente el tipo de literales usando float() o int() como en la Figura 2.

Interfaz basada en Web

Para usar Sage Notebook, es posible escribir notebook() después de iniciar Sage o utilizar este comando:

./sage --notebook

Este inicia el servidor Sage y el navegador web predeterminado se abre en la página principal de Sage Notebook. Usted encontrará muchos recursos en el Notebook para facilitar la manipulación de su trabajo, como guardar y cargar hojas de trabajo en un archivo, además de las funciones normales de copiar, eliminar y cambiar nombre. Sage facilita el trabajo en colaboración con las funciones Share y Publish de la Figura 3.

Figura 3. Recursos de Sage Notebook
Screen capture of the Sage Notebook showing a simple test, equations computed and graphed

Paquetes de álgebra de computadora

La distribución base de Sage incluye un número de paquetes de álgebra de computadora como GAP, Maxima, PARI, y Singular. Cada uno tiene su propio seguimiento en la comunidad matemática y proporciona funcionalidades ligeramente diferentes. El secreto aquí es que Sage incluye cada uno de estos paquetes en la distribución base, lo cual significa que usted no tiene que descargarlos ni instalarlos separadamente.

Figura 4 muestra un ejemplo del uso de Maxima para efectuar varias operaciones de matrices. Esto se efectuó usando Sage Notebook y muestra la entrada del usuario en negro, junto con el resultado en azul. Las primeras dos líneas crean una matriz con entradas iguales a i/j, donde i y j varían entre 1 y 4. Note que estos son números racionales (fracciones).

Figura 4. Operaciones de matrices con Maxima
Screen capture with examples of how Maxima interprets matrix operations, with equations followed by the results

Publicando documentos científicos

La publicación de documentos científicos es un requisito para muchas personas de la comunidad educativa. Sage requiere que cada objeto tenga una representación LaTeX. Esto está directamente vinculado a la necesidad de producir gráficas y texto con calidad de publicación usando el lenguaje TeX. Tenga presente que es necesaria una instalación completa de TeX para aprovechar todos los recursos que Sage tiene para ofrecer.


Instalando EPD

La computación científica con Python es lo que Enthought es globalmente como compañía. Los ofrecimientos de productos comerciales y el soporte de Enthought es lo que paga las cuentas, pero aún así contribuye a la comunidad de la fuente abierta significativamente. Sus contribuciones provienen directamente del trabajo en los códigos base NumPy y SciPy, así como de presentaciones anuales en la conferencia PyCon y de ofrecer la conferencia SciPy.

Es posible usar el gestor de software Ubuntu para instalar las diferentes piezas necesarias para comenzar a ejecutar IPython, NumPy y SciPy, o simplemente puede descargar e instalar la versión gratuita de EPD, conocida como EPD Free. Enthought ofrece versiones tanto de 32- como de 64-bit de EPD Free, que han sido comprobadas en Red Hat, Ubuntu y openSUSE. Advierten que algunos sistemas Linux de 64-bit no incluyen bibliotecas de 32-bit, por ello la necesidad de una versión de 64-bit del paquete.

Para instalar EPD Free, descargue primero el script de instalación y luego ejecútelo con el siguiente comando:

bash epd_free-7-2-2-rh5-x86.sh

Para facilitar el inicio de EDP en el futuro, es necesario añadir algunas líneas a su archivo de inicialización de shell (bien sea .cshrc o bien .bash_profile). Ubuntu usa el shell bash como predeterminado, así que muestro el código basado en él. Para este artículo utilicé las siguientes líneas:

export PATH=/home/paul/Downloads/epd_free-7.2-2-rh5-x86_64/bin:$PATH

Usando EPD

IPython es otro común denominador entre EPD y Sage dado que es la herramienta primaria de interfaz de usuario. EPD instala una interfaz de línea de comandos y un Notebook basado en Web, muy similar a Sage.

Interfaz de línea de comandos

La consola basada en Qt ofrece alguna funcionalidad mejorada, incluyendo resaltado completo de sintaxis usando la biblioteca Pygments. También proporciona la capacidad para efectuar trazos incorporados. Para obtener esta capacidad, es posible iniciar IPython con el siguiente comando:

ipython --pylab

La Figura 5 muestra la consola Qt con un trazo integrado.

Figura 5. Creando un nuevo proyecto PyDev
Screen capture of the PyDev interface for creating a new project with a graph drawn at the bottom

Interfaz basada en Web

El último release de IPython (0.12) incluye una capacidad de Notebook basado en Web que es similar a Sage. Para obtener la funcionalidad de cuaderno es necesario instalar varias dependencias, incluyendo ZeroMQ y el servidor Web Tornado. Para iniciar el cuaderno desde la línea de comandos, escriba los siguiente en una ventana de terminal:

ipython notebook

Esto inicia el motor Web Tornado e inicia el navegador web predeterminado abierto en la página del panel de instrumentos. Si usted selecciona luego el cuaderno predeterminado, deberá ver una ventana similar a la de la Figura 6.

Figura 6. iPython Notebook
Screen capture of the project from Figure 5 implemented in the iPython Notebook

Lo único que es diferente acerca del cuaderno Web es que es necesario usar Control-Enter cuando desee ejecutar código. Esto hace posible ingresar múltiples líneas de código, como en la Figura 6y hacer que todo lo que hay en el recuadro de entrada se ejecute secuencialmente. Por lo tanto, es posible descomponer fácilmente funciones en bloques manejables.

Es posible anotar sus cuadernos usando la sintaxis Markdown. Si no está familiarizado(a) con Markdown, es esencialmente una forma de crear Hypertext Markup Language (HTML) formateado usando texto plano. Por ejemplo, un signo numeral individual (#) seguido por un espacio en blanco se usa para indicar H1 en HTML, mientras que dos signos numeral sirven para indicar H2, etc. Esto le permite añadir anotaciones o documentación para complementar su código y sus gráficas.

Pandas

La Python Data Analysis Library, o Pandas, es otra herramienta que se enlaza con SciPy y NumPy, creada específicamente para responder a la tarea de análisis de datos. Pandas incorpora un gran número de bibliotecas junto con algunos modelos de datos estándar, para ofrecer las herramientas necesarias para manipular eficientemente conjuntos de datos extensos. Los archivos de valores separados por comas (CSV) representan una de las formas más comunes de distribuir datos entre las partes interesadas. Pandas ofrece una función de biblioteca optimizada para leer y escribir múltiples formatos de archivos, incluyendo CSV y el eficiente formato HDF5.

El módulo read_csv sabe cómo analizar archivos CSV con información de encabezado en la primera fila. Este también sabe cómo manejar archivos con fechas u horas usando un analizador integrado. Pandas incluye un módulo datetools con una lista extensa de rutinas de manipulación para efectuar diversos tipos de cálculos con fechas. El Listado 1 muestra un fragmento de código de la documentación Pandas, el cual muestra cómo encontrar una fecha que está a cuatro meses y cinco días de otra:

Listado 1. Muestra de proyección de fecha Pandas
d = datetime(2012, 4, 20)
d + pandas.DateOffset(months=4, days=5)
datetime.datetime(2012, 8, 25, 0, 0)

Pandas realmente brilla cuando se trata de dividir y cortar grandes conjuntos de datos. Después de tener sus datos importados hacia una estructura nativa de datos, usted tiene un amplio rango de herramientas a su disposición para efectuar literalmente cualquier tipo de manipulación. Es posible dividir datos usando la sintaxis estándar para dividir de Python, efectuar operaciones sobre la totalidad o parte de los datos, o realizar trazos usando matplotlib. Si es necesario realizar cualquier tarea de manipulación de datos, definitivamente querrá ponerse al corriente y avanzar rápido con Pandas.


Empaquetando

Sin duda Linux está altamente calificado para soportar prácticamente cualquier tarea científica computacional que usted le arroje. Tiene un fuerte soporte en la comunidad académica y rápidamente está ganando nuevos usuarios en la industria que buscan formas para reducir sus presupuestos de software. Estas herramientas proporcionan un sustituto más que adecuado para sus contrapartes comerciales y, lo mejor de todo, son completamente gratuitas. Para clientes que estén buscando software con soporte completo, Enthought y su ofrecimiento comercial EPD están presentes. Ellos proporcionan soporte completo al cliente y capacitación para los clientes que pagan.

Recursos

Aprender

Obtener los productos y tecnologías

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Linux
ArticleID=845258
ArticleTitle=Explore Linux como una plataforma de computación científica
publish-date=11122012