|| Computación || VOLVER=^
 
==============================================================================================
Software científico: gráficos. Grace
[Ene 2015]
==============================================================================================
* Introducción

No es necesario enfatizar el hecho de que los gráficos constituyen una parte fundamental de cualquier publicación científica, salvo en los casos de mayor abstracción, como ciertas ramas de la física o la matemática donde la única ilustración es la mera simbología. Fuera de esos ámbitos los gráficos cumplen varios roles; condensar información, visualizar patrones en los datos, exhibir relaciones entre magnitudes y un largo etcétera.

Una de las primeras necesidades al construir una plataforma computacional dedicada a usos científicos es resolver el asunto de la visualización y representación de datos. Muchos entornos de programación de alto nivel y CASes tienen su propia solución integrada. No obstante, cuando comencé mi camino de programación bajo Linux (allá por 2009 --usaba Linux antes, pero no programaba--) fuimos presentados Grace y yo. Desde ese entonces lo tengo como programa de graficación 2D de cabecera por su sencillez, potencia y transparencia.

Grace es en realidad más que una herramienta para graficar 2D; en efecto su nombre es un acrónimo de "GRaphing, Advanced Computation and Exploration of data" y desciende de lo que era en su momento ACE/gr (también conocido como Xmgr) el cual no era GPL como sí lo es Grace. El binario, al menos bajo Linux, se llama xmgrace lo cual delata esa descendencia. No es la idea hablar aquí de sus muchas capacidades de análisis, programación y visualización sino proveer una lista de tips que considero valiosos para el trabajo día a día y para superar algunas de las desventajas de este software frente a otras soluciones.

     Grace screen

^ Figura 1 . Entorno de trabajo de Grace donde se ve el archivo de ejemplo spectrum.agr (en /usr/share/grace/examples). Este par de gráficos dan idea de las posibilidades de Grace como entorno de visualización.
---------------------------------------------------------------------------------------------------------------------------------------------

En la página oficial podremos encontrar información de uso así como otros proyectos relacionados (forks y versiones para otras plataformas).

______________________________________________________________________________________________
* Características inquietantes. Ausencia de UNDO y copiado de texto 


La interfaz gráfica de Grace es algo extraña, con un sabor a Linux antiguo (basado en M*tif), lo cual delata su edad y origen. Notoria es la ausencia de una opción de undo, tan ubicua en cualquier programa gráfico actual pero más inquietante y molesta es la imposibilidad de copiar texto desde, por ejemplo, el label de un eje a otro.

La primera dificultad requiere una disciplina de ir guardando el trabajo cada tanto y utilizar la opción de revert (que sí está disponible) para volver a la última versión guardada. No es lo mismo que un undo nativo, pero no se sufre tanto.

La segunda dificultad es, a mi juicio, más áspera. No se puede copiar texto entre diferentes lugares de la interfaz. Esto es un poco frustrante porque la manera de ingresar caracteres especiales (una letra griega, una delta de Jacobi, etc.) es muchas veces a través de comandos especiales y es time consuming tipearlos cada vez. Lo que sí funciona es utilizar una terminal como buffer intermedio: si en una terminal escribimos texto y lo copiamos (con el mouse o la combinación de teclas que nuestro entorno disponga), es posible pegarlo en Grace con el botón central del mouse (la rueda en mi caso, por ejemplo). Asimismo dentro de un cuadro de Grace podemos copiar texto con el mouse (doble clic del botón derecho) y pegarlo en una terminal, o un archivo de texto, con botón central. Claramente no es cómodo, pero es lo mejor que hay hasta el momento.

______________________________________________________________________________________________
* Caracteres especiales y colores extra

Es usual que en la etiqueta de un eje o en la leyenda de una curva se necesiten caracteres especiales. Grace provee una font tool (accesible presionando CTRL-E) que permite seleccionar una fuente especial y dentro de ella el caracter en cuestión. Por ejemplo, llevando a cabo este proceso para escribir en una etiqueta una letra griega beta deja sobre la misma el código

\f{Symbol}b

que será interpretado como una beta en la visualización del gráfico. Esta instrucción reproduce la beta necesaria. Todo lo que se tipee a la derecha de esta 'b'aparecerá con la fuente Symbol de modo que si queremos volver a la fuente por default (Times-Roman) debemos resetear con otro comando del siguiente modo

\f{Symbol}b\f{} 

Luego de '\f{}' ya estamos en Times-Roman. Grace provee para este fin el shortcut '\f' que nos ahorra el escribir las llaves. Asimismo existen códigos de control para manipular texto, entre los cuales merecen destacarse:

\+  increase size
\-  decrease size
\b  backspace (size of previous character)
\u  begin underline
\U  stop underline
\v  shift vertically
\h  horizontal shift
\s  subscript
\S  superscript
\N  normal style
\n  newline
\o  begin overline
\O  end overline

El resto pueden consultarse en la guía de usuario. Así, por ejemplo, para generar una "x" con un punto arriba (x punto: derivada temporal de x) podemos tipear:

\f{Times-Italic}x\h{-0.2}\v{0.7}.\v{}\h{}

donde luego de establecer la fuente escribimos la x y a continuación unos modificadores de posición vertical y horizontal para el caracter que sigue (un punto). Finalmente restauramos las posiciones a sus defaults con los modificadores sin argumento. Otro ejemplo es

S\S(1)\N\smn\N(c,\xx)

el cual generará algo como lo que se muestra bajo esta línea. Nótese que, según detallamos luego, \x es una abreviatura para la tipografía Symbol y bajo la misma "x" es la "xi" griega.
 

El formato de archivo de Grace (extensión .agr) es sencillamente maravilloso. Es texto plano, de modo que se puede abrir en cualquier editor y aparecerán, luego de una sección de encabezados y configuración varia, los sets de datos que estuvieran guardados en el gráfico. Esta transparencia hace que podamos extraer los datos aunque no tuvieramos Grace para abrir el archivo. Además, la configuración de un archivo establece códigos para las tipografías y para los colores, con entradas como las que vemos a continuación

@map font 0 to "Times-Roman", "Times-Roman"
@map font 2 to "Times-Bold", "Times-Bold"
@map font 1 to "Times-Italic", "Times-Italic"
@map font 3 to "Times-BoldItalic", "Times-BoldItalic"
@map font 8 to "Courier", "Courier"
@map font 12 to "Symbol", "Symbol"
@map color 0 to (255, 255, 255), "white"
@map color 1 to (0, 0, 0), "black"
@map color 2 to (255, 0, 0), "red"
@map color 3 to (0, 255, 0), "green"
@map color 4 to (0, 0, 255), "blue"
@map color 16 to (78, 139, 0), "Extra1"

Estas líneas significan que podemos seleccionar la tipografía Symbol simplemente con "\f{12}" en lugar de "\f{Symbol}". Asimismo podemos añadir nuevas tipografías, asegurándonos que se hallan instaladas en el sistema (en mi caso, esto es en /usr/share/fonts/default/Type1 que es a donde apunta el link simbólico /usr/share/grace/fonts/type1). Incluso podemos utilizar shortcuts para las tipografías del 0 al 9 y Symbol con los siguientes códigos

\0  Times-Roman
\1  Times-Italic
\2  Time-Bold
\3  Time-BoldItalic
\4  Helvetica
\5  Helvetica-Oblique
\6  Helvetica-Bold
\7  Helvetica-BoldOblique
\x  Symbol (in particular Greek letters)
\f  Default font

Así en lugar de "\f{12}" para Symbol basta con "\x". Otra posibilidad es la de añadir colores (siempre me pareció que era un número exiguo los 16 que vienen por defecto). En la última línea del ejemplo mostrado se ha definido un verde por sus valores rgb en la forma (R,G,B) y se lo llamó "Extra 1". Por supuesto este color sólo estará disponible para los gráficos realizados a partir de este archivo. Si queremos establecer este color, o alguna otra configuración especial, de modo general podemos modificar el template (la configuración por defecto para un archivo nuevo de Grace) que se halla en el archivo

~/Default.agr

o bien en

~/.grace/templates/Default.agr

También en este archivo se pueden establecer otros parámetros como tamaños y tipografías para los elementos comunes de un gráfico.

______________________________________________________________________________________________
* Impresión


Para salvar un gráfico en algún formato apropiado para publicación se utiliza el comando Print que permite elegir entre diversos formatos (PostScript, EPS, SVG, PNG, JPEG, Metafile) cada uno de los cuales tiene diversas opciones. Podemos configurar un formato por defecto en el archivo

~/.grace/gracerc.user


donde para, por ejemplo, imprimir en un dispositivo agregaremos la línea

HARDCOPY DEVICE "<dispositivo>"


donde <dispositivo> puede ser alguno de: X11, PostScript, EPS, MIF, SVG, PNM, JPEG, PNG, Metafile. La lista de dispositivos disponibles se obtiene ejecutando en terminal

$ xmgrace -version

Otros comandos pueden verse en la sección device parameters de la guía del usuario.
______________________________________________________________________________________________
* Otros tips


Dentro de "Data / Transformations / Evaluate expression..." se accede a un cuadro de diálogo que permite realizar operaciones sobre cada uno de los sets que están en el gráfico actual. Habiendo seleccionado un set, digamos S0, podemos duplicar el valor de la ordenada en dicho set con la operación

y = 2*y

Si, en cambio, deseamos cargar en el set S1 la ordenada del set S0 duplicada deberíamos seleccionar S1 y aplicar

y = 2*S0.y

Es decir, seleccionamos datos de otros sets con S<nro> donde <nro> es el indicador numérico del conjunto en cuestión.

______________________________________________________________________________________________
* Referencias


Grace es un entorno maravilloso y de una estabilidad notable.Cuenta con funcionalidades de ajustes lineales y no lineales, derivación e integración, transformadas de Fourier y muchas otras cosas. Para investigar estas posibilidades a fondo es recomendable leer la guía del usuario. Otras páginas interesantes y de las cuales me nutrí para realizar esta, son

                    Tips for Xmgrace
                    Louic's weblog. Some xmgrace tips

Finalmente el manual de usuario puede consultarse desde el sitio oficial en

                    Grace User's Guide
==============================================================================================